Vixzz API documentation.
The Vixzz API gives product teams primitives for cross-border money movement: create a quote, confirm transfer details, fund the transfer, monitor payout, and receive signed status events.
Authentication
Use bearer tokens for server-to-server requests. Keep live keys on your backend and rotate them from the Vixzz dashboard.
curl https://api.vixzz.com/v1/quotes \
-H "Authorization: Bearer vxz_live_your_key" \
-H "Content-Type: application/json" Create a quote
A quote returns the fee, exchange rate, recipient amount, expiry, and supported payout method before a sender confirms.
POST /v1/quotes
{
"send_currency": "USD",
"receive_currency": "KES",
"send_amount": 25000,
"receiver_country": "KE",
"payout_method": "mobile_money"
} {
"id": "qte_9k3m",
"send_amount": 25000,
"fee_amount": 150,
"receive_amount": 3211800,
"rate": "129.3",
"expires_at": "2026-05-29T12:30:00Z"
} Create a transfer
Transfers are created from an active quote. Use an idempotency key so retries do not create duplicates.
POST /v1/transfers
Idempotency-Key: transfer_merchant_order_4812
{
"quote_id": "qte_9k3m",
"receiver": {
"name": "Amina Otieno",
"country": "KE",
"phone": "+254700000000"
},
"purpose": "family_support"
} Webhooks
Webhooks notify your backend when a transfer changes state. Verify the signature header before updating your internal records.
{
"type": "transfer.paid_out",
"id": "evt_f2v9",
"created_at": "2026-05-29T12:41:21Z",
"data": {
"transfer_id": "trf_72p4",
"status": "paid_out",
"payout_reference": "MPESA-394820"
}
} Errors
quote_expired The sender tried to create a transfer after the quote expiry time.
corridor_unavailable The selected country pair or payout method is temporarily unavailable.
review_required The transfer needs compliance or risk review before payout release.
Sandbox access
Request sandbox credentials to test quotes, transfers, webhook retries, and payout states without moving live funds.