Download OpenAPI specification:
WasaaPay is a multi-currency payment aggregator for platforms and marketplaces operating in Africa. This specification covers the public merchant-facing API: collections, sub-merchant onboarding, wallets, split rules, payouts, webhooks, and FX. It implements the conventions defined in the WasaaPay Backend Engineering Document (response envelope, idempotency, error catalog) and the schemas defined in the WasaaPay Database Design Document.
Creates a new collection (payment) via mobile money, card, or bank rail. Requires an Idempotency-Key header; retrying the same key returns the original result rather than creating a duplicate transaction.
| Idempotency-Key required | string A client-generated key unique per logical operation. Retried requests with the same key return the original result. |
| amount required | integer >= 1 Minor currency units (e.g. cents). |
| currency required | string = 3 characters |
| rail required | string (Rail) Enum: "mobile_money" "card" "bank" "ussd" "qr" |
| sub_merchant_id | string or null <uuid> |
| payer_phone | string or null Required when rail = mobile_money or ussd. |
| payer_card_token | string or null Tokenized card reference from the certified card processor. Required when rail = card. |
| payer_account_ref | string or null Tokenized bank account reference from the certified provider. Required when rail = bank. |
| reference | string or null Merchant-supplied order/reference string, echoed back on the transaction. |
| hold_in_escrow | boolean Default: false When true, the merchant leg of the settlement lands in the pending (escrow) bucket for later release by the split/escrow flow. |
{- "amount": 150000,
- "currency": "KES",
- "rail": "mobile_money",
- "payer_phone": "2547XXXXXXXX",
- "reference": "order_10293"
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "sub_merchant_id": "0b57acc5-f1be-48ec-a40c-50d191b78286",
- "type": "collection",
- "rail": "mobile_money",
- "status": "pending",
- "amount": 0,
- "currency": "str",
- "parent_transaction_id": "2862f816-fb62-4845-833b-6951bbef56b3",
- "provider_reference": "string",
- "reference": "string",
- "action_url": "string",
- "ussd_code": "string",
- "metadata": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}| id required | string <uuid> |
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "sub_merchant_id": "0b57acc5-f1be-48ec-a40c-50d191b78286",
- "type": "collection",
- "rail": "mobile_money",
- "status": "pending",
- "amount": 0,
- "currency": "str",
- "parent_transaction_id": "2862f816-fb62-4845-833b-6951bbef56b3",
- "provider_reference": "string",
- "reference": "string",
- "action_url": "string",
- "ussd_code": "string",
- "metadata": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}Creates a refund transaction against a successful collection. Omit amount (or the request body) to refund the full remaining amount; supply amount in minor currency units for a partial refund. The refund is returned as a transaction with type=refund and parent_transaction_id set to the original collection's ID. Requires an Idempotency-Key header; retrying the same key returns the original result rather than creating a duplicate refund.
| id required | string <uuid> |
| Idempotency-Key required | string A client-generated key unique per logical operation. Retried requests with the same key return the original result. |
| amount | integer or null >= 1 Refund amount in minor currency units. Omit (or send null) to refund the full remaining amount of the original collection. Must not exceed the original collection amount minus prior refunds. |
| reason | string or null <= 500 characters Optional merchant-supplied reason, stored on the refund transaction. |
{- "amount": 50000,
- "reason": "Customer returned one of two items."
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "sub_merchant_id": "0b57acc5-f1be-48ec-a40c-50d191b78286",
- "type": "collection",
- "rail": "mobile_money",
- "status": "pending",
- "amount": 0,
- "currency": "str",
- "parent_transaction_id": "2862f816-fb62-4845-833b-6951bbef56b3",
- "provider_reference": "string",
- "reference": "string",
- "action_url": "string",
- "ussd_code": "string",
- "metadata": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}Hosted-checkout sessions — payer-facing, capability-token flows where the payer picks the rail.
Creates a payer-facing checkout session for a fixed amount/currency and returns a one-time client_token capability secret. Unlike createCollection (where the merchant picks the rail at creation), the PAYER later chooses a rail from allowed_rails and pays via payCheckoutSession — authorized ONLY by the client_token, never the merchant API key. Requires an Idempotency-Key header; retrying the same key returns the original session (and its token) rather than minting a duplicate.
| Idempotency-Key required | string A client-generated key unique per logical operation. Retried requests with the same key return the original result. |
| amount required | integer >= 1 Minor currency units (e.g. cents). |
| currency required | string = 3 characters |
| reference | string or null Merchant-supplied order/reference string, echoed on the resulting transaction. |
| sub_merchant_id | string or null <uuid> |
| allowed_rails | Array of strings (Rail) non-empty Items Enum: "mobile_money" "card" "bank" "ussd" "qr" Rails the payer may choose from. Defaults to all rails when omitted. |
{- "amount": 150000,
- "currency": "KES",
- "reference": "order_10293",
- "allowed_rails": [
- "mobile_money",
- "card"
]
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "sub_merchant_id": "0b57acc5-f1be-48ec-a40c-50d191b78286",
- "amount": 0,
- "currency": "str",
- "reference": "string",
- "allowed_rails": [
- "mobile_money"
], - "status": "open",
- "client_token": "string",
- "collection_intent_id": "3a6710b4-2b2a-4eec-b81b-eba004a31bbc",
- "expires_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}Returns the non-sensitive fields the hosted checkout renders. Authorized by the session's client_token (the X-Checkout-Token header or a client_token query parameter), NOT the merchant API key; the client_token is never echoed back. A session past its expires_at is reported as expired.
| id required | string <uuid> |
| client_token | string The session's client_token capability secret, as an alternative to the X-Checkout-Token header (see the checkoutTokenAuth security scheme). Supply exactly one of the two. |
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "amount": 0,
- "currency": "str",
- "reference": "string",
- "allowed_rails": [
- "mobile_money"
], - "status": "open",
- "expires_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}The payer picks a rail from the session's allowed_rails and supplies the matching payer reference; this creates the underlying collection through the same path as createCollection and marks the session completed. Authorized by the session's client_token (the X-Checkout-Token header or a client_token query parameter). Requires an Idempotency-Key header; a same-key replay returns the original result, and a completed or expired session rejects new pays. Returns the resulting transaction (action_url / ussd_code are populated when a payer challenge is required).
| id required | string <uuid> |
| client_token | string The session's client_token capability secret, as an alternative to the X-Checkout-Token header (see the checkoutTokenAuth security scheme). Supply exactly one of the two. |
| Idempotency-Key required | string A client-generated key unique per logical operation. Retried requests with the same key return the original result. |
| rail required | string (Rail) Enum: "mobile_money" "card" "bank" "ussd" "qr" |
| payer_phone | string or null Required when rail = mobile_money or ussd. |
| payer_card_token | string or null Tokenized card reference. Required when rail = card. |
| payer_account_ref | string or null Tokenized bank account reference. Required when rail = bank. |
{- "rail": "mobile_money",
- "payer_phone": "2547XXXXXXXX"
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "sub_merchant_id": "0b57acc5-f1be-48ec-a40c-50d191b78286",
- "type": "collection",
- "rail": "mobile_money",
- "status": "pending",
- "amount": 0,
- "currency": "str",
- "parent_transaction_id": "2862f816-fb62-4845-833b-6951bbef56b3",
- "provider_reference": "string",
- "reference": "string",
- "action_url": "string",
- "ussd_code": "string",
- "metadata": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}Cursor-paginated list of transactions, filterable by status, rail, and date range.
| cursor | string Opaque pagination cursor from a previous response's meta.next_cursor. |
| limit | integer [ 1 .. 100 ] Default: 50 |
| status | string (TransactionStatus) Enum: "pending" "success" "failed" "reversed" |
| rail | string (Rail) Enum: "mobile_money" "card" "bank" "ussd" "qr" |
| date_from | string <date-time> |
| date_to | string <date-time> |
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "sub_merchant_id": "0b57acc5-f1be-48ec-a40c-50d191b78286",
- "type": "collection",
- "rail": "mobile_money",
- "status": "pending",
- "amount": 0,
- "currency": "str",
- "parent_transaction_id": "2862f816-fb62-4845-833b-6951bbef56b3",
- "provider_reference": "string",
- "reference": "string",
- "action_url": "string",
- "ussd_code": "string",
- "metadata": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}| id required | string <uuid> |
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "sub_merchant_id": "0b57acc5-f1be-48ec-a40c-50d191b78286",
- "type": "collection",
- "rail": "mobile_money",
- "status": "pending",
- "amount": 0,
- "currency": "str",
- "parent_transaction_id": "2862f816-fb62-4845-833b-6951bbef56b3",
- "provider_reference": "string",
- "reference": "string",
- "action_url": "string",
- "ussd_code": "string",
- "metadata": { },
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}Programmatically onboard a seller, vendor, rider, or individual earner. Triggers a KYC case per the assigned kyc_tier.
| Idempotency-Key required | string A client-generated key unique per logical operation. Retried requests with the same key return the original result. |
| display_name required | string |
| type required | string Enum: "individual" "business" |
| country required | string = 2 characters |
| kyc_tier | string (KycTier) Enum: "tier_1" "tier_2" |
object |
{- "display_name": "Jane's Boutique",
- "type": "individual",
- "country": "KE",
- "kyc_tier": "tier_1",
- "contact": {
- "phone": "2547XXXXXXXX",
- "email": "jane@example.com"
}
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "display_name": "string",
- "type": "individual",
- "country": "st",
- "kyc_tier": "tier_1",
- "kyc_status": "pending",
- "status": "active",
- "created_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}| cursor | string Opaque pagination cursor from a previous response's meta.next_cursor. |
| limit | integer [ 1 .. 100 ] Default: 50 |
| kyc_status | string (KycStatus) Enum: "pending" "verified" "rejected" "needs_review" |
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "display_name": "string",
- "type": "individual",
- "country": "st",
- "kyc_tier": "tier_1",
- "kyc_status": "pending",
- "status": "active",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}| id required | string <uuid> |
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "display_name": "string",
- "type": "individual",
- "country": "st",
- "kyc_tier": "tier_1",
- "kyc_status": "pending",
- "status": "active",
- "created_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}Returns every dashboard user under the authenticated merchant. The listing is always scoped to the caller's merchant, so one merchant can never enumerate another merchant's users. Requires the team:read permission (admin, finance, read_only, or compliance roles).
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "email": "user@example.com",
- "role": "admin",
- "mfa_enabled": true,
- "status": "active"
}
], - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}Returns every wallet owned by the authenticated merchant (one per currency) or its sub-merchants.
| cursor | string Opaque pagination cursor from a previous response's meta.next_cursor. |
| limit | integer [ 1 .. 100 ] Default: 50 |
| owner_id | string <uuid> Filter to a specific merchant or sub-merchant owner. |
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "owner_type": "merchant",
- "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
- "currency": "str",
- "available_balance": 0,
- "pending_balance": 0,
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}| id required | string <uuid> |
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "owner_type": "merchant",
- "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
- "currency": "str",
- "available_balance": 0,
- "pending_balance": 0,
- "updated_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}Defines how a transaction's value is divided among recipients, with optional escrow per recipient.
| name required | string |
| rule_type required | string (SplitRuleType) Enum: "percentage" "flat" "tiered" |
| currency | string or null = 3 characters Required for flat (fixed-amount) rules — the ISO 4217 currency the flat recipient values are denominated in. Omit for percentage rules. |
required | Array of objects (SplitRuleRecipient) non-empty |
{- "name": "Standard marketplace split",
- "rule_type": "percentage",
- "recipients": [
- {
- "recipient_type": "platform",
- "value": 10,
- "escrow": false
}, - {
- "recipient_type": "sub_merchant",
- "value": 90,
- "escrow": true,
- "escrow_release_condition": "delivery_confirmation"
}
]
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "name": "string",
- "rule_type": "percentage",
- "active": true,
- "recipients": [
- {
- "recipient_type": "platform",
- "recipient_id": "b6731cb5-d462-49ea-afb8-7933b670b560",
- "value": 0.1,
- "escrow": false,
- "escrow_release_condition": "manual",
- "escrow_timeout_hours": 0
}
], - "updated_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}| cursor | string Opaque pagination cursor from a previous response's meta.next_cursor. |
| limit | integer [ 1 .. 100 ] Default: 50 |
| active | boolean |
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "name": "string",
- "rule_type": "percentage",
- "active": true,
- "recipients": [
- {
- "recipient_type": "platform",
- "recipient_id": "b6731cb5-d462-49ea-afb8-7933b670b560",
- "value": 0.1,
- "escrow": false,
- "escrow_release_condition": "manual",
- "escrow_timeout_hours": 0
}
], - "updated_at": "2019-08-24T14:15:22Z"
}
], - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}| id required | string <uuid> |
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "name": "string",
- "rule_type": "percentage",
- "active": true,
- "recipients": [
- {
- "recipient_type": "platform",
- "recipient_id": "b6731cb5-d462-49ea-afb8-7933b670b560",
- "value": 0.1,
- "escrow": false,
- "escrow_release_condition": "manual",
- "escrow_timeout_hours": 0
}
], - "updated_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}| Idempotency-Key required | string A client-generated key unique per logical operation. Retried requests with the same key return the original result. |
| wallet_id required | string <uuid> |
| destination_type required | string (DestinationType) Enum: "mobile_money" "bank" "card" |
| destination_ref required | string Tokenized destination account reference obtained via the payout-destination tokenization flow. |
| amount required | integer >= 1 |
| currency required | string = 3 characters |
| scheduled_at | string or null <date-time> |
{- "wallet_id": "8f3a2b10-1c9e-4c2a-9b2f-3e6d2a1e9c11",
- "destination_type": "mobile_money",
- "destination_ref": "tok_dest_9f21ac",
- "amount": 500000,
- "currency": "KES"
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "wallet_id": "d9a8fbfc-848f-43a2-9168-911ed3a04a48",
- "batch_id": "4da22c97-b7d5-4e31-8c3a-03870ebc7b20",
- "destination_type": "mobile_money",
- "destination_ref": "string",
- "amount": 0,
- "currency": "str",
- "status": "queued",
- "scheduled_at": "2019-08-24T14:15:22Z",
- "retry_count": 0,
- "failure_reason": "string",
- "created_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}| cursor | string Opaque pagination cursor from a previous response's meta.next_cursor. |
| limit | integer [ 1 .. 100 ] Default: 50 |
| status | string (PayoutStatus) Enum: "queued" "processing" "success" "failed" |
| wallet_id | string <uuid> |
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "wallet_id": "d9a8fbfc-848f-43a2-9168-911ed3a04a48",
- "batch_id": "4da22c97-b7d5-4e31-8c3a-03870ebc7b20",
- "destination_type": "mobile_money",
- "destination_ref": "string",
- "amount": 0,
- "currency": "str",
- "status": "queued",
- "scheduled_at": "2019-08-24T14:15:22Z",
- "retry_count": 0,
- "failure_reason": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}Creates a payout_batch and its individual payouts in a single call, for paying many sub-merchants at once.
| Idempotency-Key required | string A client-generated key unique per logical operation. Retried requests with the same key return the original result. |
| wallet_id required | string <uuid> Source wallet shared by every payout in the batch. |
required | Array of objects [ 1 .. 1000 ] items |
{- "wallet_id": "d9a8fbfc-848f-43a2-9168-911ed3a04a48",
- "payouts": [
- {
- "destination_type": "mobile_money",
- "destination_ref": "string",
- "amount": 1,
- "currency": "str"
}
]
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "total_amount": 0,
- "status": "processing",
- "payouts": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "wallet_id": "d9a8fbfc-848f-43a2-9168-911ed3a04a48",
- "batch_id": "4da22c97-b7d5-4e31-8c3a-03870ebc7b20",
- "destination_type": "mobile_money",
- "destination_ref": "string",
- "amount": 0,
- "currency": "str",
- "status": "queued",
- "scheduled_at": "2019-08-24T14:15:22Z",
- "retry_count": 0,
- "failure_reason": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
]
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}Returns the batch, its aggregate status, and its individual payouts.
| id required | string <uuid> |
{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "merchant_id": "500924a8-3f5e-4c00-beb8-2efcde988aea",
- "total_amount": 0,
- "status": "processing",
- "payouts": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "wallet_id": "d9a8fbfc-848f-43a2-9168-911ed3a04a48",
- "batch_id": "4da22c97-b7d5-4e31-8c3a-03870ebc7b20",
- "destination_type": "mobile_money",
- "destination_ref": "string",
- "amount": 0,
- "currency": "str",
- "status": "queued",
- "scheduled_at": "2019-08-24T14:15:22Z",
- "retry_count": 0,
- "failure_reason": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
]
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "wallet_id": "d9a8fbfc-848f-43a2-9168-911ed3a04a48",
- "batch_id": "4da22c97-b7d5-4e31-8c3a-03870ebc7b20",
- "destination_type": "mobile_money",
- "destination_ref": "string",
- "amount": 0,
- "currency": "str",
- "status": "queued",
- "scheduled_at": "2019-08-24T14:15:22Z",
- "retry_count": 0,
- "failure_reason": "string",
- "created_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}| url required | string <uri> |
| subscribed_events required | Array of strings (WebhookEventType) non-empty Items Enum: "transaction.pending" "transaction.success" "transaction.failed" "transaction.reversed" "payout.queued" "payout.processing" "payout.success" "payout.failed" "escrow.held" "escrow.released" "escrow.returned" "dispute.opened" "dispute.resolved" "kyc.verified" "kyc.rejected" |
{- "subscribed_events": [
- "transaction.success",
- "transaction.failed",
- "payout.success",
- "payout.failed"
]
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "subscribed_events": [
- "transaction.pending"
], - "active": true,
- "created_at": "2019-08-24T14:15:22Z",
- "signing_secret": "string"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "subscribed_events": [
- "transaction.pending"
], - "active": true,
- "created_at": "2019-08-24T14:15:22Z"
}
], - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}{- "data": { },
- "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}| base_currency required | string = 3 characters |
| quote_currency required | string = 3 characters |
{- "data": {
- "base_currency": "str",
- "quote_currency": "str",
- "rate": 0.1,
- "margin_bps": 0,
- "effective_at": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}| base_currency required | string = 3 characters |
| quote_currency required | string = 3 characters |
{- "base_currency": "str",
- "quote_currency": "str"
}{- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "base_currency": "str",
- "quote_currency": "str",
- "locked_rate": 0.1,
- "expires_at": "2019-08-24T14:15:22Z",
- "used": true
}, - "error": {
- "code": "AUTH_INVALID_KEY",
- "message": "string",
- "details": { }
}, - "meta": {
- "request_id": "string",
- "next_cursor": "string"
}
}