Skip to main content
The Yativo Fiat API enables you to send and receive money globally, manage virtual accounts, perform currency exchange, and verify customer identities. All endpoints return JSON responses.

Base URLs

Use the sandbox environment for development and testing. Sandbox transactions do not move real funds.

Authentication

Send your API key and secret on every request. Create them in the dashboard under Developers → API Keys.
Requests must come from an IP on the key’s whitelist. See Authentication and IP whitelisting.
Login tokens from POST /auth/login (legacy Account ID and App Secret) have been discontinued. Authorization: Bearer tokens don’t work for API requests. Use X-Api-Key and X-Api-Secret.

Idempotency

Send an Idempotency-Key header on every POST, PUT, PATCH and DELETE request, so a retried request isn’t processed twice.
Use a UUID or a deterministic string based on the operation (e.g. payout-{customer_id}-{timestamp}). Keys are scoped to your account. A retry with the same key and body within 60 minutes returns the original response. Reusing a key with a different body returns 409. See Idempotency.

Rate limits

Requests are rate-limited per business account: by default 20 writes (POST, PUT, PATCH, DELETE) and 50 reads (GET) a second. Some endpoints have lower limits. See Rate limits. Over the limit, you get 429 Too Many Requests with a Retry-After header. Wait that many seconds, then retry with exponential backoff.

Standard response format

All successful responses follow this structure:

Error codes

Error response format

Every failed response has status: "failed", and the reason in data. Most errors put a message in data.error. Validation errors list the failing fields in data. Every failed response also includes error_details, with the same shape for every endpoint. Read errors from error_details so you don’t have to handle each endpoint’s data shape.
A 5xx response’s message is always generic. It never contains internal details.

KYC platform

Certain KYC submission endpoints are hosted on a separate platform: