Payout accounts
Saved places to send money out to: mobile money numbers and bank accounts, with the name on the account checked before you save it.
Every endpoint here needs Authorization: Bearer <token> for a signed-in AutoPayKe account. See Authentication.
List payout accounts
/api/v1/wallet/destinationsEvery saved account, the default first. Only the last four digits of a number are ever returned.
curl "https://api.autopayke.com/api/v1/wallet/destinations" \
-H "Authorization: Bearer $AUTOPAYKE_TOKEN"{
"ok": true,
"data": [
{
"id": "f1e2d3c4-b5a6-4789-8abc-def012345678",
"type": "mobile_money",
"country": "KE",
"currency": "KES",
"operator": "Safaricom",
"bankCode": null,
"bankName": null,
"accountNumberLast4": "5678",
"accountName": "AMINA WANJIKU",
"nameMatchStatus": "matched",
"isDefault": true,
"usableForWithdrawals": true,
"nickname": "My M-Pesa",
"holderName": "Amina Wanjiku",
"owner": "self",
"lastUsedAt": "2026-11-01T16:20:00.000Z",
"useCount": 12
}
]
}Check the name on an account
/api/v1/wallet/destinations/resolve-nameLooks up the registered name for a number or bank account before you save it, so people can confirm they have the right one.
typestringrequiredKind of account.
mobile_moneybankcountrystringrequiredISO 3166-1 alpha-2.
currencystringrequiredISO 4217.
accountNumberstringrequired5–34 characters: the phone number for mobile money.
operatorstringoptionalOperator code, for mobile money.
bankCodestringoptionalBank code, for bank accounts.
bankNamestringoptionalBank name, for bank accounts.
curl -X POST "https://api.autopayke.com/api/v1/wallet/destinations/resolve-name" \
-H "Authorization: Bearer $AUTOPAYKE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "mobile_money",
"country": "KE",
"currency": "KES",
"accountNumber": "0712345678",
"operator": "Safaricom"
}'{
"ok": true,
"data": {
"accountName": "AMINA WANJIKU",
"nameMatchStatus": "matched",
"legalName": "Amina Wanjiku"
}
}Save a payout account
/api/v1/wallet/destinationsSaves the account. Same body as checking the name, plus makeDefault.
Availability. Bank payouts (PesaLink) are built but not live yet: bank accounts can be saved, and usableForWithdrawals tells you whether one can be paid today.
typestringrequiredKind of account.
mobile_moneybankcountrystringrequiredISO 3166-1 alpha-2.
currencystringrequiredISO 4217.
accountNumberstringrequired5–34 characters.
operatorstringoptionalOperator code, for mobile money.
bankCodestringoptionalBank code, for bank accounts.
bankNamestringoptionalBank name, for bank accounts.
makeDefaultbooleanoptionalMake this the default payout account.
curl -X POST "https://api.autopayke.com/api/v1/wallet/destinations" \
-H "Authorization: Bearer $AUTOPAYKE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "mobile_money",
"country": "KE",
"currency": "KES",
"accountNumber": "0712345678",
"operator": "Safaricom",
"makeDefault": true
}'{
"ok": true,
"data": {
"destination": {
"id": "f1e2d3c4-b5a6-4789-8abc-def012345678",
"type": "mobile_money",
"country": "KE",
"currency": "KES",
"operator": "Safaricom",
"bankCode": null,
"bankName": null,
"accountNumberLast4": "5678",
"accountName": "AMINA WANJIKU",
"nameMatchStatus": "matched",
"isDefault": true,
"usableForWithdrawals": true,
"nickname": "My M-Pesa",
"holderName": "Amina Wanjiku",
"owner": "self",
"lastUsedAt": "2026-11-01T16:20:00.000Z",
"useCount": 12
},
"defaultRefused": false
}
}- makeDefault is only honoured when the name on the account matches the account holder; defaultRefused tells you it wasn't.
Rename a payout account
/api/v1/wallet/destinations/{id}Change the nickname, or correct the name on the account. Send at least one field.
idstringrequiredThe account id.
nicknamestring | nulloptionalUp to 40 characters; null clears it.
holderNamestringoptional2–100 characters.
curl -X PATCH "https://api.autopayke.com/api/v1/wallet/destinations/f1e2d3c4-b5a6-4789-8abc-def012345678" \
-H "Authorization: Bearer $AUTOPAYKE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"nickname": "Shop M-Pesa"
}'{
"ok": true,
"data": {
"id": "f1e2d3c4-b5a6-4789-8abc-def012345678",
"type": "mobile_money",
"country": "KE",
"currency": "KES",
"operator": "Safaricom",
"bankCode": null,
"bankName": null,
"accountNumberLast4": "5678",
"accountName": "AMINA WANJIKU",
"nameMatchStatus": "matched",
"isDefault": true,
"usableForWithdrawals": true,
"nickname": "Shop M-Pesa",
"holderName": "Amina Wanjiku",
"owner": "self",
"lastUsedAt": "2026-11-01T16:20:00.000Z",
"useCount": 12
}
}Make an account the default
/api/v1/wallet/destinations/{id}/defaultThe default account is preselected for withdrawals.
idstringrequiredThe account id.
curl -X POST "https://api.autopayke.com/api/v1/wallet/destinations/f1e2d3c4-b5a6-4789-8abc-def012345678/default" \
-H "Authorization: Bearer $AUTOPAYKE_TOKEN"{
"ok": true,
"data": {
"id": "f1e2d3c4-b5a6-4789-8abc-def012345678",
"type": "mobile_money",
"country": "KE",
"currency": "KES",
"operator": "Safaricom",
"bankCode": null,
"bankName": null,
"accountNumberLast4": "5678",
"accountName": "AMINA WANJIKU",
"nameMatchStatus": "matched",
"isDefault": true,
"usableForWithdrawals": true,
"nickname": "My M-Pesa",
"holderName": "Amina Wanjiku",
"owner": "self",
"lastUsedAt": "2026-11-01T16:20:00.000Z",
"useCount": 12
}
}Delete a payout account
/api/v1/wallet/destinations/{id}Removes a saved account. Payments already made to it are not affected.
idstringrequiredThe account id.
curl -X DELETE "https://api.autopayke.com/api/v1/wallet/destinations/f1e2d3c4-b5a6-4789-8abc-def012345678" \
-H "Authorization: Bearer $AUTOPAYKE_TOKEN"{
"ok": true,
"data": {
"deleted": true
}
}