> For the complete documentation index, see [llms.txt](https://docs.shoffi.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.shoffi.app/the-shoffi-api/update-affiliate-terms.md).

# Update Affiliate Terms

## Update existing affiliate contract terms

<mark style="color:green;">`POST`</mark> `https://platform.shoffi.app/API/affiliate/updateAffiliateTerms`

#### Request Body

| Name                                     | Type    | Description                                                    |
| ---------------------------------------- | ------- | -------------------------------------------------------------- |
| apiKey<mark style="color:red;">\*</mark> | String  | Your Shoffi app API Key                                        |
| appId<mark style="color:red;">\*</mark>  | Integer | Your app ID                                                    |
| email<mark style="color:red;">\*</mark>  | String  | The affiliate email address                                    |
| groupId                                  | Integer | Affiliate group ID. If sent, Shoffi applies the group terms.   |
| affiliateTerms                           | Object  | New affiliate contract terms. Used when `groupId` is not sent. |

{% hint style="info" %}
Send either `groupId` or `affiliateTerms`.

* If `groupId` is sent, Shoffi applies the group's terms.
* If only `affiliateTerms` is sent, Shoffi applies those terms and sets the affiliate group to custom.
  {% endhint %}

{% tabs %}
{% tab title="200: OK " %}

```json
{
    "affiliateNewTerms": {
        "revenueShare": 50,
        "cpi": 10,
        "limitPeriod": 24,
        "minWithdrawal": 50,
        "recurringChargeOnly": false,
        "isNetAmount": false
    }
}
```

{% endtab %}

{% tab title="400: Bad Request " %}

```javascript
{
    "status": 400,
    "message": "Error details"
}
```

{% endtab %}
{% endtabs %}

### Example request with custom terms

```
curl -X POST \
  https://platform.shoffi.app/API/affiliate/updateAffiliateTerms \
  -H 'Content-Type: application/json' \
  -d '{
    "apiKey": "YourKey",
    "appId": 00000000,
    "email": "tobias@lutke.com",
    "affiliateTerms": {
        "revenueShare": 50,
        "cpi": 10,
        "limitPeriod": 24,
        "minWithdrawal": 50,
        "recurringChargeOnly": false,
        "isNetAmount": false
    }
}'
```

### Example request with group terms

```bash
curl -X POST \
  https://platform.shoffi.app/API/affiliate/updateAffiliateTerms \
  -H 'Content-Type: application/json' \
  -d '{
    "apiKey": "YourKey",
    "appId": 00000000,
    "email": "tobias@lutke.com",
    "groupId": 12345
}'
```

## Parameter breakdown

### groupId

* `groupId:`\
  The ID of the affiliate group to assign to the affiliate. When this value is sent, Shoffi uses the group's terms.

You can find the group ID under `Groups` → click the group name → `Group ID` field.

### affiliateTerms

* `revenueShare:`\
  The percentage you are willing to pay the affiliate for every transaction made by a store they referred. You can read more about [the affiliate commission](/general/the-affiliate-commission.md).
* `cpi:`\
  Cost per install. The amount the affiliate will be rewarded for each successful app install. You can set the amount to `0` if you do not want to pay per install.
* `limitPeriod:`\
  The period in which the affiliate will earn commissions from transactions made by the referred store, in months. If not limited, the affiliate will earn commissions as long as the referral is active.
* `minWithdrawal:`\
  The minimum amount an affiliate must earn before they can request a withdrawal. This amount is in USD.
* `recurringChargeOnly:`\
  Apply affiliate earnings from recurring charges only, excluding one-time fees charged by the app.
* `isNetAmount:`\
  Calculate revenue share from the net amount. Default is `false`.

## Response example

```json
200 OK
Content-Type: application/json
```

```json
{
    "affiliateNewTerms": {
        "revenueShare": 50,
        "cpi": 10,
        "limitPeriod": 24,
        "minWithdrawal": 50,
        "recurringChargeOnly": false,
        "isNetAmount": false
    }
}
```
