POST /business/collectionsCreate a collection and return deposit instructions for the customer. Amounts are in major local currency units (for example, 10000 NGN).customer.name and customer.email are optional. Both are stored on the collection record for your own reconciliation and shown in your Axra dashboard; they are not forwarded to the underlying payment provider. customer.phone is required for mobile money — it is forwarded to the provider so the deposit prompt reaches the right number.
List channels before creating a collection when your UI needs to show available rails dynamically, or to discover the per-channel minimum and maximum amounts.
Each channel in the response includes min and max in the local currency’s major units. min: 0 means no lower bound; max: 0 means no upper bound. Filter or sort on these in your UI so customers don’t see rails their amount doesn’t qualify for.
Local-rail channels have provider-side minimum (and sometimes maximum) amounts. If you call POST /business/collections with an amount that doesn’t fit any channel for the requested rail and country/currency, you get a 400 with the actual minimum surfaced:
{ "success": false, "error": { "code": "Amount 5000 UGX does not fit any momo channel for UG (minimum is 15000 UGX). Call GET /v1/business/local-rails/channels?country=UG¤cy=ugx&amount=5000 to see what's available.", "statusCode": 400 }}
These limits are set by our settlement partners per corridor and change without notice — always read them from /business/local-rails/channels rather than hard-coding values in your client.
Pass idempotencyKey on create to dedupe retries within one hour. A duplicate key returns the original collection instead of minting a second virtual account.
Webhooks are the source of truth. If you must poll, call GET /business/collections/{id} about every five seconds while status is pending or processing. Use GET /business/collections/{id}/refresh to force a provider resync before giving up.
Currency or country is not enabled for your business, or the requested currency is not yet live (for example GHS).
400
customer_phone_required
channel.rail is momo but customer.phone is missing.
400
—
Amount is below the channel minimum or above the maximum for the requested rail. The error message includes the actual min/max. Discover both upfront via /business/local-rails/channels.
400
—
The requested rail is not available for the given country/currency. The error message lists which rails ARE available.