Skip to content

Developers

Quote, lock and settle in two requests

A REST API with predictable resources, idempotency on every write, and signed webhooks that confirm settlement. No SOAP, no nightly file drops, no SFTP.

Quickstart

Price it, then send it

POST /v1/quotes
curl https://api.syntrapayments.com/v1/quotes \
  -H "Authorization: Bearer $SYNTRA_KEY" \
  -d source_currency=NGN \
  -d destination_currency=USD \
  -d amount=2500000

{
  "id": "qt_7Vd2Kp",
  "rate": 1550.25,
  "fee": 0,
  "receive_amount": "1612.90",
  "expires_at": "2026-03-14T16:41:32Z"
}
POST /v1/payouts
curl https://api.syntrapayments.com/v1/payouts \
  -H "Authorization: Bearer $SYNTRA_KEY" \
  -H "Idempotency-Key: 8f2c-payroll-mar" \
  -d quote=qt_7Vd2Kp \
  -d beneficiary=bnf_9Ka2Rt \
  -d reference="March payroll"

{
  "id": "po_4471QxD",
  "status": "settled",
  "rate": 1550.25,
  "received": "1612.90",
  "settled_at": "2026-03-14T16:41:02Z"
}

Reference

Core endpoints

MethodEndpointWhat it does
POST/v1/quotesPrice a corridor and hold the rate for 30 seconds
POST/v1/payoutsExecute a payout against a quote or at the live rate
GET/v1/payouts/:idRead the current state of a single payout
POST/v1/batchesSubmit up to 10,000 payouts in one request
GET/v1/balancesList every currency balance on the account
POST/v1/beneficiariesStore a beneficiary and validate its details

Design rules

What you can rely on

Every write takes an idempotency key

Retry a request as many times as you need. The same key returns the same payout rather than sending the money twice.

Errors name the field that failed

A rejected request returns the parameter at fault and what was expected, so you can fix it without opening a ticket.

Versions are pinned per account

Your account is pinned to the API version you integrated against. Breaking changes ship behind a new version you opt into.

Open an account today

Apply in under ten minutes. Most businesses are verified within one working day and send their first payout the day after.