curl --request GET \
--url https://api.kraken.com/affiliate/v1/payout-history \
--header 'API-Key: <api-key>' \
--header 'API-Nonce: <api-key>' \
--header 'API-Sign: <api-key>'import requests
url = "https://api.kraken.com/affiliate/v1/payout-history"
headers = {
"API-Key": "<api-key>",
"API-Sign": "<api-key>",
"API-Nonce": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'API-Key': '<api-key>', 'API-Sign': '<api-key>', 'API-Nonce': '<api-key>'}
};
fetch('https://api.kraken.com/affiliate/v1/payout-history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kraken.com/affiliate/v1/payout-history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Key", "<api-key>")
req.Header.Add("API-Sign", "<api-key>")
req.Header.Add("API-Nonce", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"items": [
{
"payout_id": "RPAY-EXAMPLE-CPA",
"amount": "50.00",
"asset": "USDC",
"status": "paid",
"created_at": "2026-09-30T15:04:12Z",
"source": "cpa"
},
{
"payout_id": "RPAY-EXAMPLE-PROP",
"amount": "30.50",
"asset": "USDC",
"status": "pending",
"created_at": "2026-09-29T09:10:00Z",
"source": "prop",
"prop_purchase_id": "BRP-EXAMPLE-ORDER"
},
{
"payout_id": "RPAY-EXAMPLE-REVSHARE",
"amount": "12.00",
"asset": "USDC",
"status": "paid",
"created_at": "2026-09-28T09:10:00Z",
"source": "revshare"
}
],
"next_cursor": "RPAY-EXAMPLE-REVSHARE",
"summary": {
"paid": "312.00",
"pending": "130.50",
"prop": {
"paid": "80.00",
"pending": "30.50",
"order_count": 3
},
"cpa": {
"paid": "220.00",
"pending": "100.00",
"bounty_count": 5
}
},
"limit": 3
}Get Payout History
Return one page of the authenticated affiliate’s payout history, newest first. Rows can include RevShare, Prop, CPA, and Futures Accelerator Bonus payments. Retainer, sub-affiliate carve-out, and remediation payments are not included.
The summary covers the whole history, not only the current page. Its
combined totals include those four payout sources. Paid totals include
rows with public status paid; pending totals include rows with public
status pending. Rows with another status can appear in items, but do
not contribute to the totals or Prop and CPA counts.
Amounts are exact decimal strings. Combined totals add configured payout
assets, which are expected to be USD-pegged. prop_purchase_id is present
only for Prop commissions.
Successful responses are the object itself. Errors are a non-2xx
status with a typed error body, not a wrapped { "error", "result" }.
API Key Permissions Required: select the Query affiliate participants checkbox.
curl --request GET \
--url https://api.kraken.com/affiliate/v1/payout-history \
--header 'API-Key: <api-key>' \
--header 'API-Nonce: <api-key>' \
--header 'API-Sign: <api-key>'import requests
url = "https://api.kraken.com/affiliate/v1/payout-history"
headers = {
"API-Key": "<api-key>",
"API-Sign": "<api-key>",
"API-Nonce": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'API-Key': '<api-key>', 'API-Sign': '<api-key>', 'API-Nonce': '<api-key>'}
};
fetch('https://api.kraken.com/affiliate/v1/payout-history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kraken.com/affiliate/v1/payout-history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Key", "<api-key>")
req.Header.Add("API-Sign", "<api-key>")
req.Header.Add("API-Nonce", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"items": [
{
"payout_id": "RPAY-EXAMPLE-CPA",
"amount": "50.00",
"asset": "USDC",
"status": "paid",
"created_at": "2026-09-30T15:04:12Z",
"source": "cpa"
},
{
"payout_id": "RPAY-EXAMPLE-PROP",
"amount": "30.50",
"asset": "USDC",
"status": "pending",
"created_at": "2026-09-29T09:10:00Z",
"source": "prop",
"prop_purchase_id": "BRP-EXAMPLE-ORDER"
},
{
"payout_id": "RPAY-EXAMPLE-REVSHARE",
"amount": "12.00",
"asset": "USDC",
"status": "paid",
"created_at": "2026-09-28T09:10:00Z",
"source": "revshare"
}
],
"next_cursor": "RPAY-EXAMPLE-REVSHARE",
"summary": {
"paid": "312.00",
"pending": "130.50",
"prop": {
"paid": "80.00",
"pending": "30.50",
"order_count": 3
},
"cpa": {
"paid": "220.00",
"pending": "100.00",
"bounty_count": 5
}
},
"limit": 3
}Authorizations
The "API-Key" header should contain your API key.
Authenticated requests should be signed with the "API-Sign" header, using a signature generated with your private key, nonce, encoded payload, and URI path.
The "API-Nonce" header should contain an always-increasing 64-bit integer, most commonly a Unix timestamp in milliseconds. Each request must use a nonce greater than the nonce of the previous request signed with the same API key.
Query Parameters
Opaque value from next_cursor in the previous response. Pass it
unchanged to retrieve the next page. Omit it for the newest payouts.
1Page size. Defaults to 50 when omitted.
1 <= x <= 200Response
One page of affiliate payout history with whole-history totals.
One page of affiliate payout history, newest first.
Whole-history totals for RevShare, Prop, CPA, and Futures Accelerator Bonus payouts, independent of the current page. Retainer, sub-affiliate carve-out, and remediation payouts are not included.
Show child attributes
Show child attributes
Page size used for this response, after applying the default of 50.
1 <= x <= 200Payouts for this page. May be omitted when empty.
Show child attributes
Show child attributes
Present when more results exist. Pass it unchanged as cursor.
Was this page helpful?