Payouts

The Payouts APIs allow users to convert crypto assets like USDT, USDC, or BTC into local fiat currencies (e.g., NGN, KES, AUD). They include endpoints for creating quotes, processing payouts, simulating deposits (sandbox), and retrieving payout details or country requirements—supporting seamless crypto-to-cash transfers.

Payouts API Endpoints

Create Payouts Quote

This endpoint generates a quote for converting cryptocurrency into fiat currencies through Bitnob’s payoutsing system. It helps you understand the exchange rate and amount receivable before actually executing the transaction.

Create Payouts Quote

Create Payouts Quote Request
1
sourcestringRequired

The source of funds for the payouts. Use offchain for wallet or onchain to generate a blockchain address.

2
fromAssetstringRequired

The asset to convert from. Accepted values include: usdt, usdc, btc.

3
toCurrencystringRequired

The target fiat currency. Examples: NGN (Naira), KES (Kenyan Shilling), AUD (Australian Dollar).

4
chainstringOptional

The blockchain network to be used. Optional values: trc20, erc20, lightning, mainnet.

5
amountnumberRequired if settlementAmount is not provided

Amount to convert, in the smallest denomination (e.g., cents, satoshis). Takes priority over settlementAmount if both are provided.

6
settlementAmountnumberRequired if amount is not provided

Target amount to receive after conversion. Ignored if amount is also provided.

Note

One of either amount or settlement amount should be provided and in the case where both are provided the amount takes priority.

Create Payouts Quote

Create Payouts Quote Response
1
idstring

A globally unique identifier for the quote. This ID can be used to reference the quote in future payout requests or for auditing and logging purposes.

2
statusstring

The current state of the quote. Typically set to 'quote', but may include other statuses depending on the lifecycle (e.g., expired, used).

3
settlementCurrencystring

The fiat currency that the recipient will receive after the crypto-to-fiat conversion. Example: 'NGN' for Nigerian Naira.

4
exchangeRatenumber

The calculated conversion rate used to determine how much fiat will be received per unit of crypto. This rate is time-sensitive and may vary across quotes.

5
quoteIdstring

An internal reference string for the quote that can be passed into subsequent payout endpoints. Helps in tracking and verifying quote integrity during processing.

6
settlementAmountnumber

The exact amount of fiat the user will receive, calculated based on the crypto amount and exchange rate. This is the final payout value to the end user.

7
amountnumber

The original crypto amount provided in the quote request. This value is typically in the smallest unit of the asset (e.g., cents).

8
btcRatenumberoptional

Represents the Bitcoin to fiat exchange rate at the time of quote generation.

9
satAmountnumberoptional

The equivalent amount in satoshis for the requested crypto amount.

10
expiryTimeStampnumber

The UNIX timestamp (in seconds) indicating when this quote will become invalid. After this time, the quote must be re-generated to reflect updated rates.

11
expiresInTextstring

A human-readable message showing how long the quote is valid. Common formats include 'This quote expires in 15 minutes'.

12
quoteTextstring

A user-friendly summary of the quote details, such as 'NGN 327,202 will be settled for this transaction'. Often shown directly in UI confirmations.

Create Payouts Quote - Response

Initialize Payouts Quote

This endpoint allows you to initialize a payout transaction after generating a quote. You can provide either an existing beneficiary's ID or a full beneficiary object. Once initialized, it returns the payment details and transaction metadata required to complete the payouts.

Initialize Payouts Quote

Initialize Payouts Quote - Request
1
quoteIdstringRequired

ID of the previously generated quote to base this transaction on.

2
customerIdstringRequired

Unique identifier for the customer initiating the transaction.

3
countrystringRequired

Country code where the payout should be made (Currently supported: NG Nigeria,KE Kenya,AU Australia).

4
referencestringRequired

Unique reference for this transaction. Useful for tracking.

5
paymentReasonstringRequired

Reason or description of the payment.

6
beneficiaryIdstringOptional

ID of an existing beneficiary (optional if beneficiary is provided).

7
beneficiaryobjectConditional

Bank or wallet details of the recipient (required if beneficiaryId not used).It's an Object containing bank account details (use country requirements endpoint to get the correct structure per country)

8
callbackUrlstringOptional

Webhook URL for transaction status updates.

9
clientMetaDataobjectOptional

Additional metadata for internal reference or tracking.Any valid JSON object

Initialize Payouts - Request

Initialize Payouts Quote - Response
1
feesnumber

Any fees applied to the payout transaction. A value of 0 means no fees were charged for this transaction.

2
idstring

A unique identifier assigned to the payouts transaction. You can use this ID for tracking or referencing the transaction in future API calls.

3
addressstring

The cryptocurrency deposit address where the user should send funds. Only applicable for on-chain or lightning network payments.

4
chainstring

The blockchain network to be used for the transaction. Examples include trc20, erc20, lightning, or mainnet, depending on the selected fromAsset.

5
statusstring

The current state of the payouts transaction. Values can include initiated, pending, completed, or failed.

6
paymentETAstring

An estimate of how long it will take for the fiat payout to reach the beneficiary after the transaction is confirmed.

7
referencestring

The unique reference passed during initialization. This is useful for reconciliation or auditing purposes in your system.

8
fromAssetstring

The cryptocurrency asset being converted in the payouts transaction, such as usdt, usdc, or btc.

9
quoteIdstring

The identifier of the quote that was previously generated and used to initialize this transaction. Helps tie the payout to a fixed rate.

10
paymentReasonstring

A description or note about the purpose of the payment. This field is passed by the client and appears in the transaction metadata.

11
settlementCurrencystring

The fiat currency the user will receive in the payout (e.g., NGN, KES, AUD).

12
exchangeRatenumber

The rate at which the selected fromAsset is converted into the settlement fiat currency. This rate was locked during quote generation.

13
expiryTimeStampnumber

A UNIX timestamp representing when the initialization request or quote will expire. After this, a new quote will be required.

14
amountnumber

The original crypto amount to be paid by the customer. For stablecoins like USDT this is expressed in whole units (e.g., 200 USDT). For Bitcoin transactions, the satoshi equivalent is provided in satAmount.

15
btcAmountnumber

The equivalent amount of the crypto asset in BTC (Bitcoin), used for internal calculations or when the user is paying in BTC.

16
satAmountnumber

The equivalent Bitcoin amount in satoshis (1 BTC = 100,000,000 satoshis). Useful when using Lightning Network or precise crypto payments.

17
expiresInTextstring

A human-readable string showing how much time is left before the transaction or quote expires, such as '15 minutes remaining'.

18
beneficiaryDetailsobject

Contains all verified and saved information about the payout beneficiary. Fields include: id (unique record ID), status (e.g., success, pending), country (ISO code), currency (e.g., NGN), createdAt / updatedAt (timestamps), reference (internal link to quote/transaction), and destination (account details).

19
destinationobject

Contains the actual payout account details. Fields include: type (e.g., BANK, WALLET), bankCode (code of the bank), accountName (name on the account), and accountNumber (recipient’s account number).

20
settlementAmountnumber

The total amount the beneficiary will receive in their local fiat currency after all conversions and fees (if applicable).

Initialize Payouts - Response

Finalize Payouts Quote

This endpoint is used to finalize an already initialized payouts quote. Once a quote has been initialized (with the beneficiary and all required details), this final step makes it actionable.

Finalize Payouts Quote

Finalize Quote Request
1
quoteIdstringRequired

The ID of the payouts quote previously created via the /payouts/quotes endpoint. This identifies the quote to finalize.

Finalize Quote Request

Finalize Quote Response
Note

The response is identical to that of Initialize Payouts Quote - Response. Refer to the Initialize Payouts Quote - Response section for field explanations.

Finalize Quote - Response

Simulate Address Deposit

Simulate Address Deposit

Simulate Address Deposit Request
1
addressstringRequired

The blockchain address provided in the finalized quote. Funds are simulated as deposited to this address.

2
amountnumberRequired

The crypto amount (in smallest denomination or as specified) to simulate as deposited. Must match the finalized quote.

Simulate Deposit Request

Simulate Address Deposit Response
1
statusboolean

Indicates whether the simulation request was successful. A value of true confirms that the simulation went through.

2
messagestring

A human-readable message describing the result of the simulation.

3
successboolean

Indicates whether the simulated deposit was accepted successfully and the payouts process is progressing.

Simulate Deposit Response

Get All Quotes

This endpoint retrieves all payouts quotes initiated under your company's account. It supports pagination, sorting, and returns comprehensive data on each transaction, including quote info, status, amounts, associated customers, beneficiaries, and metadata.

Use it to list recent or historical payouts activities for reporting, reconciliation, or transaction tracking.

Get All Quotes

Get All Quotes Request
1
orderstringOptional

Sort order of results. Can be `ASC` (oldest to newest) or `DESC` (newest to oldest).

2
pagenumberOptional

Page number for paginated results. Defaults to 1.

3
takenumberOptional

Number of results to return per page. Default is 10.

Get All Quotes Request

Get All Quotes Response

Returns a list of payouts quotes and associated metadata including pagination details. Each quote object contains transaction details such as quote ID, customer, settlement data, status, and crypto conversion details.

1
idstring

Unique identifier for the payout transaction.

2
createdAtstring

ISO 8601 timestamp indicating when the payout was created.

3
updatedAtstring

ISO 8601 timestamp showing the last time the payout record was updated.

4
quoteIdstring

Identifier linking this payout to its original quote.

5
companyIdstring

Unique identifier of the company that initiated the payout.

6
customerIdstring

Unique identifier of the customer linked to this payout.

7
paymentReasonstring

Description provided for the payout, e.g., 'Invoice Payment' or 'Business'.

8
referencestring

A unique reference string used for reconciliation or tracking.

9
callbackUrlstring

Webhook or callback URL provided to receive async updates. Null if not used.

10
beneficiaryIdstring

Identifier linking the payout to a beneficiary record.

11
statusstring

The current status of the payout. Example values include success, expired, pending, failed.

12
clientMetaDataobject

Optional metadata provided by the client. Empty object if none is supplied.

13
satAmountstring

The equivalent value of the crypto in satoshis (1 BTC = 100,000,000 sats).

14
btcAmountstring

The equivalent value of the crypto in BTC format.

15
amountstring

The amount of crypto provided in the payout request.

16
centAmountstring

The amount represented in the smallest fiat unit (e.g., cents for USD, kobo for NGN).

17
settlementAmountnumber

The final fiat amount the beneficiary receives after conversion.

18
centFeesstring

Any fees applied to the payout, expressed in the smallest fiat unit. '0' means no fee.

19
feesstring

Any fees applied to the payout transaction in standard fiat units.

20
addressstring

The deposit address (if applicable). Null for off-chain payouts.

21
sourcestring

The funding source for the payout, e.g., 'offchain' or 'onchain'.

22
fromAssetstring

The cryptocurrency used for the payout, e.g., usdt, usdc, btc.

23
chainstring

The blockchain network used for the transaction, e.g., trc20, erc20, lightning.

24
toCurrencystring

The fiat currency in which the beneficiary will be paid, e.g., 'usd' or 'ngn'.

25
paymentETAstring

Estimated delivery time for the payout, e.g., '3-5 minutes'.

26
expirystring

The ISO 8601 timestamp when this payout quote or transaction expires.

27
exchangeRateobject

Conversion details including the applied rate, fiat currency, and BTC-specific fields if applicable.

28
beneficiaryobject

Information about the payout beneficiary including ID, country, currency, and account details.

29
destinationobject

The actual account or wallet where funds are delivered, e.g., bank account or mobile money wallet.

30
tripobject

Timeline information describing when the payout was submitted, initialized, processed, and completed.

31
companyobject

Details of the company initiating the payout, including name, country, type, and compliance data.

32
allowedFeaturesobject

A set of feature flags showing which actions the company can perform on the platform (payouts, transfers, etc.).

33
metaobject

Pagination details including page number, item count, page count, and navigation flags.

Get All OffRamps - Response

Get Quote by QuoteId

This endpoint allows you to fetch detailed information about a previously generated payouts quote using its unique quoteId. This is useful for checking the status, parameters, and settlement details of the quote.

Get Quote by QuoteId

Path Parameters
1
quoteIdstringRequired

The unique identifier of the quote you want to fetch.

Get Quote by QuoteId [cURL]

Response Fields
Note

The response for Get Quote by QuoteId is identical to that of Get All Quotes Response. Refer to the Get All Quotes Response section for detailed response structure and field explanations.

Get All OffRamps - Response

Get Quote by Id

Get a quote by it's id

Get Quote by Id [GET]

Path Parameters
1
idstringRequired

The unique internal ID of the quote transaction that was previously generated. This ID is required to retrieve full details.

Request

Get Quote by Reference

This endpoint allows you to retrieve a specific payouts quote using its unique reference. It's especially useful for systems that track transactions using external reference IDs rather than internal IDs or quoteIds.

Get Quote by Reference

Path Parameters
1
referencestring Required

Unique transaction reference that identifies the specific quote you want to retrieve.

Note

The response for Get Quote by Reference is identical to that of Get Quote by QuoteId. Refer to the Get Quote by QuoteId section for detailed response structure and field explanations.

Request

Get Country Requirements

Get the beneficiary requirements for all supported countries.

Get Country Requirements

Path Parameters
1
countrystringRequired

The country to retrieve beneficiary requirements for. Accepts full name (e.g. 'Nigeria'), ISO code (e.g. 'NG'), or dial code (e.g. '234').

Get Country Requirements [cURL]

Response Fields
1
statusboolean

A boolean value indicating if the API request was processed successfully. A value of true means the country requirements were retrieved without error.

2
messagestring

A human-readable message describing the result of the request. Useful for debugging or confirmation messages.

3
codestring

The ISO 3166-1 alpha-2 country code of the target country. For example, 'KE' for Kenya, 'NG' for Nigeria, etc.

4
namestring

The full official name of the country (e.g., 'Kenya', 'Nigeria'). This helps with display purposes in interfaces.

5
flagstring

The country's flag represented as a Unicode emoji character. It can be used in UI to visually represent the country.

6
dialCodestring

The international telephone dialing code for the country. For example, '254' for Kenya or '234' for Nigeria. Can be used to validate phone numbers.

7
destinationobject

An object representing the payout destination types supported by the country (e.g., 'BANK', 'MOBILEMONEY'). Each key maps to an array of field requirement objects necessary to initiate a payout to that destination type. These fields include metadata like field name, type, whether it's required, and sometimes specific constants or enum values (e.g., for networks like MPESA).

Get Country Requirements - Response

Get Transaction Limits

This endpoint returns the minimum and maximum allowable transaction amounts for payouts operations per supported country. It provides limits in local currency as well as their equivalent values in USD based on real-time exchange rates.

Use this endpoint to validate or display country-specific limits before initiating a payout.

Get Transaction Limits

Response Fields
1
statusboolean

Indicates whether the request to retrieve transaction limits was successful. A value of true means the data was retrieved without errors.

2
messagestring

A message describing the result of the request. Typically used to confirm success or provide an error description.

3
lowerLimitstring

The minimum allowable payouts transaction amount in the country’s local currency. Any transaction below this amount will be rejected.

4
higherLimitstring

The maximum allowable payouts transaction amount in the country’s local currency. Transactions above this limit are not permitted.

5
currencystring

The local currency in which the limits are defined. This helps determine the denomination applicable to lower and upper bounds.

6
countrystring

The two-letter ISO 3166-1 alpha-2 code representing the country (e.g., 'NG' for Nigeria, 'GH' for Ghana). Used to identify the jurisdiction the limits apply to.

7
ratestring

The real-time exchange rate between the local currency and USD. This rate is used to compute the USD equivalent of the defined limits.

8
usdLowerLimitstring

The minimum transaction amount converted to USD using the current exchange rate. Useful for applications working primarily with USD values.

9
usdHigherLimitstring

The maximum transaction amount converted to USD based on the current exchange rate. Helps standardize limits across different countries.

Get Transaction Limits - Response

Did you find this page useful?