curl --request POST \
--url https://api.example.com/payouts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contactId": "ct_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41"
}
'import requests
url = "https://api.example.com/payouts"
payload = { "contactId": "ct_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({contactId: 'ct_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41'})
};
fetch('https://api.example.com/payouts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"kind": "fiat",
"status": "awaitingSignature",
"idempotencyKey": "<string>",
"quote": {
"fromAmount": "500.00",
"fromCurrency": "<string>",
"toAmount": "500.00",
"toCurrency": "<string>",
"sourceAccount": "USDC",
"rate": "500.00",
"feeAmount": "500.00",
"feeCurrency": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"fromChainId": "<string>",
"toChainId": "<string>"
},
"authorization": "debit",
"approval": {
"id": "<string>",
"payload": "<string>",
"expiresAt": "2023-11-07T05:31:56Z"
},
"debit": {
"address": "<string>",
"amount": "500.00",
"amountAtomic": "<string>",
"token": "<string>",
"chainId": 123
},
"intent": {
"digest": "<string>",
"settles": "<string>"
},
"contact": {
"contactId": "ct_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41",
"name": "<string>",
"address": "<string>",
"chainId": "<string>",
"token": "<string>"
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}Create an outgoing transfer
Validate the contact, fix the transfer terms, reserve an idempotent outgoing transfer and return the approval payload to sign. Supplying amount fixes the debit side; amountTo fixes the contact side.
curl --request POST \
--url https://api.example.com/payouts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contactId": "ct_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41"
}
'import requests
url = "https://api.example.com/payouts"
payload = { "contactId": "ct_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({contactId: 'ct_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41'})
};
fetch('https://api.example.com/payouts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"kind": "fiat",
"status": "awaitingSignature",
"idempotencyKey": "<string>",
"quote": {
"fromAmount": "500.00",
"fromCurrency": "<string>",
"toAmount": "500.00",
"toCurrency": "<string>",
"sourceAccount": "USDC",
"rate": "500.00",
"feeAmount": "500.00",
"feeCurrency": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"fromChainId": "<string>",
"toChainId": "<string>"
},
"authorization": "debit",
"approval": {
"id": "<string>",
"payload": "<string>",
"expiresAt": "2023-11-07T05:31:56Z"
},
"debit": {
"address": "<string>",
"amount": "500.00",
"amountAtomic": "<string>",
"token": "<string>",
"chainId": 123
},
"intent": {
"digest": "<string>",
"settles": "<string>"
},
"contact": {
"contactId": "ct_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41",
"name": "<string>",
"address": "<string>",
"chainId": "<string>",
"token": "<string>"
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
The client account to act for, as a cl_… id. Omit it to act as yourself.
"cl_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41"
Your own key for this write, ^[A-Za-z0-9._:-]{1,128}$. A retry with the same key replays the first answer; the same key with a different request is refused.
"po-inv-2026-114"
Body
Saved contact to receive this transfer.
^(?:ct_)?[A-Za-z0-9._:\-]{1,216}$"ct_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41"
Exact amount to debit in the source currency.
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$"500.00"
Exact amount the contact should receive.
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$"500.00"
Base64 DER SubjectPublicKeyInfo for the registered P-256 developer key. Required unless the account holder signs their own transfers.
1 - 512Reference or memo delivered with the transfer.
140Business purpose or reason for the transfer.
64Supporting document identifiers returned by POST /dapi/v1/documents.
10^(?:doc_)?[A-Za-z0-9._:\-]{1,216}$Optional receiving-account identifier used to select a specific funding route.
^(?:bnk_)?[A-Za-z0-9._:\-]{1,216}$"bnk_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41"
Account this payout is paid from. USDC and EURC debit the client's wallet; FDIC_USD spends the custodial USD balance and is authorized by an intent signature instead of a debit.
USDC, EURC, RD, USDC_ARB, FDIC_USD, KYC_CARDS Response
Successful Response
Stable public identifier for this outgoing transfer.
Whether the contact is account-based or on-chain.
fiat, onchain Current public lifecycle status of the transfer.
awaitingSignature, submitted, settled, failed, refunded Caller-supplied key that makes an identical retry return this result.
Price, fee and conversion terms fixed for this transfer.
Show child attributes
Show child attributes
Whether the approval authorizes a balance debit or a signature over the transfer's terms, or whether the account holder signs it themselves in the HEVN sign-in window.
debit, intent, client Authorization to sign before execution.
Show child attributes
Show child attributes
Exact on-chain debit used to fund this transfer.
Show child attributes
Show child attributes
Terms authorized by the signature, when this transfer is not funded by a debit.
Show child attributes
Show child attributes
Contact snapshot fixed at creation.
Show child attributes
Show child attributes
Was this page helpful?