/api/v1/beneficiaries/addBeneficiary
Save a recipient once for a country corridor, then reuse it by id when sending payouts.
country_code + currency_code). Pass the returned
beneficiary_id to sendPayoutRequest instead of repeating the full
recipient details on every payout. See Beneficiaries for how the flow fits
together.
/api/v1/user/login.recipient_details.name. The remaining fields differ per destination and
are validated at create time, not at payout time — which is the point of saving a beneficiary. See
corridor requirements.Idempotency
Reusing anidempotency_key — or posting identical details — returns the beneficiary that
already exists rather than creating a duplicate. A retry after a network timeout is safe.
The status code is how you tell the two apart: 201 means you just created it, 200 means you
are getting the existing one back.
Example request
Errors
Authorizations
Identifies your account. Issued from Developer Tools in the dashboard.
Short-lived token from /api/v1/user/login, bound to your account and
mode. Expires in 900 seconds.
Headers
Unix epoch in seconds — not milliseconds. Must be within ±5 minutes of our clock, which is what makes a captured request unusable later. Keep your client's clock NTP-synced.
1748023400
HMAC-SHA256 over the signing string, hex encoded. The timestamp is part of what is signed, so a replayed body cannot be re-dated. See https://docs.pontisglobe.com/authentication for how it is built.
"2f8a9b4c1d7e0a3f6b8c2d5e9f1a4b7c0d3e6f9a2b5c8d1e4f7a0b3c6d9e2f5a"
Body
2"NG"
2 - 8"NGN"
1 - 32"bank_local"
Per-corridor fields, plus name. Mobile-money corridors carry
their network here as payment_network — unlike a payout, it
is not a top-level field on this endpoint, and one sent at
the top level is stripped rather than saved.
80