Fiat -> Merchant balance

Let’s do a NGN (fiat) deposit to merchant balance USD payout. First, call Get available currencies and assume you receive:

We see NGN supports deposit via bank/airtime/mobile money, and payout via bank/mobile money. Merchant balance supports both deposit and payout. So we can do Fiat → Merchant balance USD.

Next, call Get order limits with:

  • depositPaymentChannel: "bank"

  • depositCurrencyType: "fiat"

  • depositCurrencyCode: "NGN"

  • depositCountryIsoCode: "NG"

  • payoutPaymentChannel: "merchant_balance"

  • payoutCurrencyType: "merchant_balance"

  • payoutCurrencyCode: "USD"

We see that the minimum deposit is 1523 NGN and the maximum is 761469 NGN, which corresponds to 1-500 USD limit for merchant balance.

Assume the merchant wants to receive 100 USD. Check the user’s tier using the KYC requirements flow before proceeding. In the sample sandbox rules, payouts of 100 USD or more trigger the advanced tier, so be sure the user has submitted and been approved for that document set.

Then Create quote:

For a merchant to receive 100 USD, user must deposit 152206 NGN. Collect these fields:

  • phoneNumber

  • bankCode (from enum options)

  • bankAccountNumber

  • depositSandboxForcedFlow (sandbox optional field to simulate deposit success/failure/underpayment/overpayment)

  • payoutSandboxForcedFlow (sandbox optional field to simulate payout success/failure)

Sandbox tip: When you're testing in the sandbox environment you can set depositSandboxForcedFlow or payoutSandboxForcedFlow to force the platform to return success, failure, or other edge outcomes. This makes it easy to imitate failed flows without moving real funds.

Create the order via Create order:

A user makes the transfer with the exact amount and reference. Then call Confirm order if no extra fields are required:

The system validates the deposit and processes payout. Use Get order to track status until " payout_successful".

Last updated