Crypto to Merchant balance

Let’s do a NGN (fiat) deposit to merchant balance USD payout.

1

First, call Get available currencies and assume you receive:

We see POLYGON_USDT supports both deposits and payouts. Merchant balance supports both deposit and payout. So we can do Crypto → Merchant balance USD.

2

Call Get order limits with:

  • depositPaymentChannel: "crypto"

  • depositCurrencyType: "crypto"

  • depositCurrencyCode: "POLYGON_USDT"

  • payoutPaymentChannel: "merchant_balance"

  • payoutCurrencyType: "merchant_balance"

  • payoutCurrencyCode: "USD"

Example response
{
    "deposit": {
        "min": 1,
        "max": 500,
        "minUsd": 1,
        "maxUsd": 500,
        "supportsDecimals": true,
        "step": 0.000001
    },
    "payout": {
        "min": 1,
        "max": 500,
        "minUsd": 1,
        "maxUsd": 500,
        "supportsDecimals": true,
        "step": 0.01
    }
}

We see that the minimum deposit is 1 POLYGON_USDT and the maximum is 500 POLYGON_USDT, 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.

3

Example request
{
  "deposit": {
    "paymentChannel": "crypto",
    "currencyType": "crypto",
    "currencyCode": "POLYGON_USDT"
  },
  "payout": {
    "paymentChannel": "merchant_balance",
    "currencyType": "merchant_balance",
    "currencyCode": "USD",
    "amount": 100
  }
}

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

  • blockchainWalletAddress

  • 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.

4

Create the order via Create order:

5

A user makes the transfer with the exact amount and reference.

6

Call Confirm order with a transaction hash:

{
  "orderId": "692ee4bba60e213546387b1e",
  "fieldsToConfirmOrder": {
    "blockchainTransactionHash": "...hash"
  }
}
7

The system validates the deposit and processes payout.

8

Use Get order to track status until " payout_successful".

Last updated