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
acceptstringRequired

Specifies the response format expected by the client. Should be set to application/json.

2
content-typestringRequired

Specifies the media type of the request payload. Must be application/json.

3
sourcestringRequired

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

4
fromAssetstringRequired

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

5
toCurrencystringRequired

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

6
chainstringOptional

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

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

8
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
statusboolean

Indicates whether the quote was successfully generated. A value of true means the system was able to calculate a valid conversion quote using the provided parameters.

2
messagestring

A message from the API confirming the result of the quote generation process. Useful for providing user-facing feedback such as 'Payouts quote generated successfully'.

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

4
statusstring

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

5
settlementCurrencystring

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

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

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

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

9
amountnumber

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

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
statusboolean

Indicates if the initialization request was successful. A value of true confirms the transaction setup proceeded without issues.

2
messagestring

A human-readable response message from the API. Typically used to confirm that the initialization was successful or describe any errors.

3
idstring

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

4
addressstring

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

5
chainstring

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

6
statusstring

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

7
paymentETAstring

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

8
referencestring

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

9
fromAssetstring

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

10
quoteIdstring

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

11
paymentReasonstring

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

12
settlementCurrencystring

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

13
exchangeRatenumber

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

14
expiryTimeStampnumber

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

15
amountnumber

The original crypto amount to be paid by the customer. Usually expressed in the smallest denomination (e.g., cents or satoshis).

16
btcAmountnumber

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

17
satAmountnumber

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

18
expiresInTextstring

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

19
beneficiaryDetailsobject

An object containing all verified and saved information about the beneficiary. Includes account name, number, bank code, and internal ID.

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. It generates a deposit address (for on-chain flows) where the customer can send the crypto, and triggers the process that results in the fiat being sent to the selected beneficiary. Use this right before showing the user payment instructions.

Finalize Payouts Quote

Finalize Quote Request
1
acceptstring

The media type of the response body. Set this to application/json to receive structured JSON responses.

2
content-typestring

The media type of the request payload. Must be application/json.

3
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
1
statusboolean

Indicates whether the finalize operation was successful. If true, the payouts quote is now active and awaiting payment.

2
messagestring

A confirmation message from the server. Usually indicates successful finalization.

3
idstring

Unique identifier of the finalized payouts transaction. Use this to track the payout.

4
feesnumber

Any network or service fees associated with the transaction, returned in fiat currency units.

5
chainstring

The blockchain network selected for the crypto deposit (e.g., trc20, erc20).

6
amountnumber

The crypto amount to be paid, expressed in the smallest unit (e.g., cents, satoshis).

7
statusstring

Current lifecycle state of the payout (e.g., pending_address_deposit). Use this to track progress.

8
addressstring

Blockchain address where the customer should send the crypto. This address is tied to the finalized quote.

9
quoteIdstring

The same quote ID used during initialization and now finalized for payment.

10
btcAmountnumber

The equivalent BTC amount (if asset is BTC or converted internally for tracking).

11
satAmountnumber

The equivalent value in satoshis (smallest BTC unit).

12
fromAssetstring

The crypto asset being payoutsed (e.g., usdt, btc, usdc).

13
referencestring

The unique transaction reference provided during quote initialization for external tracking.

14
paymentETAstring

Estimated time in which the fiat payout will be received by the beneficiary after payment confirmation.

15
exchangeRatenumber

Rate used to convert crypto into fiat. This value is locked in from the quote.

16
expiresInTextstring

User-friendly text showing how much time is left before the quote expires.

17
paymentReasonstring

Purpose of the payment as provided by the sender. Useful for audit and compliance.

18
expiryTimeStampnumber

UNIX timestamp indicating when the payment quote will expire and no longer be valid.

19
settlementAmountnumber

The exact amount of fiat currency that will be received by the beneficiary after conversion and fees.

20
beneficiaryDetailsobject

Full details of the recipient, including bank information, verification status, and country of residence.

21
settlementCurrencystring

Fiat currency the beneficiary will receive, based on quote and country.

Finalize Quote - Response

Simulate Address Deposit

This endpoint is used only in the sandbox environment to simulate a crypto deposit to the blockchain address provided after quote finalization. It mimics the user sending crypto to Bitnob's generated address to trigger fiat settlement for testing purposes.

Use this after finalizing an payouts quote to test the full payouts payout flow without moving real funds.

Simulate Address Deposit

Simulate Address Deposit Request
1
Content-TypestringRequired

Must be application/json to ensure correct data formatting.

2
addressstringRequired

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

3
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
statusboolean

Indicates whether the request to fetch all payouts quotes was successful. True means the request was processed and a response was returned.

2
messagestring

A descriptive message from the server about the outcome of the request. Usually confirms success or describes an error.

3
data.Payouts[]array

An array of payouts quote objects. Each object contains detailed information about a specific payouts transaction.

4
idstring

Unique identifier for the payouts transaction. Can be used to retrieve more details or perform further operations.

5
quoteIdstring

Identifier that links this payouts to its original quote. Useful for tracking and referencing the transaction’s lifecycle.

6
statusstring

Current status of the payouts transaction. Example values include expired, pending, underpayment, completed.

7
referencestring

User-defined reference for the transaction, typically used for reconciliation, tracking, or correlating with internal records.

8
ratenumber

The conversion rate used to calculate the fiat equivalent of the crypto asset during the payouts quote generation.

9
currencystring

Fiat currency used in the settlement. Example: ngn for Nigerian Naira.

10
accountNamestring

Name of the recipient associated with the bank account that will receive the fiat funds after settlement.

11
accountNumberstring

Bank account number for the beneficiary where the converted fiat will be deposited.

12
submittedstring

Timestamp (UNIX format) representing when the payouts transaction was first submitted by the client.

13
amountstring

Amount of crypto (e.g., USDT) to be converted. Value is typically represented in whole units (not cents).

14
settlementAmountnumber

Final fiat amount (in lowest denomination, e.g., kobo for NGN) the user will receive after all calculations are done.

15
chainstring

Blockchain network over which the crypto was sent. Example values include trc20.

16
.fromAssetstring

The type of cryptocurrency used for the transaction. For example, usdt, btc, or usdc.

17
pagenumber

Current page of the paginated result. Used to navigate through large datasets returned from the server.

18
takenumber

Number of items returned per page. This defines the size of each paginated set of results.

19
itemCountnumber

Total number of items (payoutss) matching the request criteria.

20
pageCountnumber

Total number of pages based on the itemCount and take values. Useful for rendering pagination UI.

21
hasPreviousPageboolean

true if there is a page before the current one, useful for enabling/disabling 'Previous' pagination buttons.

22
hasNextPageboolean

true if there are more results available on the next page.

Get All Quotes - 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
1
statusboolean

Indicates whether the request to retrieve the quote was successful. A value of `true` means the operation succeeded without errors.

2
messagestring

A human-readable string describing the result of the API call. Usually used for confirmation or debugging.

3
idstring

The unique identifier of the payouts transaction. Useful for tracking and referencing the specific payout.

4
createdAtstring (ISO8601)

Timestamp (in ISO format) indicating when the quote was initially created.

5
updatedAtstring (ISO8601)

Timestamp showing the last time any update was made to this quote's record.

6
quoteIdstring

The internal quote reference code generated when the quote was created. Used to finalize or simulate the quote.

7
companyIdstring

The unique ID of the company associated with this quote. Indicates which company initiated or owns the transaction.

8
customerIdstring

The UUID representing the customer for whom this payouts quote was generated.

9
paymentReasonstring

A custom reason for the payment, typically provided by the user or platform to describe the purpose of the transaction.

10
referencestring

A unique alphanumeric string used to reference the quote transaction, typically used for internal tracking or reconciliation.

11
callbackUrlstring (URL)

The webhook URL that Bitnob will call with updates to the transaction's status, if provided.

12
beneficiaryIdstring

The unique ID of the beneficiary associated with the payout. Beneficiaries contain destination bank details or wallet info.

13
statusstring

The current status of the quote transaction. Common values include `initiated`, `expired`, `completed`, or `pending_address_deposit`.

14
ratenumber

The exchange rate used to convert the crypto asset into the target fiat currency at the time of quote creation.

15
currencystring

The fiat currency used in the settlement, represented in ISO 4217 format (e.g., `NGN` for Nigerian Naira).

16
beneficiary.idstring

The unique identifier for the beneficiary object, which includes full details about the payout destination.

17
beneficiary.statusstring

Indicates whether the beneficiary has been successfully verified or not (e.g., `success`, `failed`).

18
countrystring

The country code (ISO 3166-1 alpha-2) representing the beneficiary's country. For example, `NG` for Nigeria.

19
updatedAtstring

Timestamp indicating the last update made to the beneficiary record.

20
typestring

The type of destination account. Currently `BANK` is supported, indicating a bank transfer payout.

21
bankCodestring

The bank code of the beneficiary’s financial institution.

22
accountNumberstring

The account number of the beneficiary. It may be masked for security purposes in the response.

23
quoteSentAtnumber

UNIX timestamp (in seconds) indicating when the quote was initially sent to the user.

24
initializedAtnumber

UNIX timestamp indicating when the quote was initialized for a payout request.

25
completionTimenumber

UNIX timestamp representing when the payout was completed.

26
namestring

Custom metadata field capturing the name associated with the transaction, typically user-provided.

27
heightstring

Another example of metadata, stored as a string, could represent any user-defined detail.

28
satAmountstring

The crypto amount expressed in satoshis (smallest unit of Bitcoin). A string to preserve precision.

29
btcAmountstring

The crypto amount converted to BTC equivalent at the time of the quote.

30
amountstring

The amount of crypto being payoutsed, in the original asset's denomination (e.g., 1000 USDT).

31
centAmountstring

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

32
settlementAmountnumber

The total amount that will be received by the beneficiary after conversion and fees.

33
centFeesstring

Any transaction fees charged, expressed in the smallest denomination of the currency (e.g., cents or kobo).

34
feesstring

The total fee amount for the transaction, expressed in standard currency units.

35
addressstring | null

The crypto deposit address assigned for this transaction. May be null if address is not required.

36
sourcestring

Indicates the source of crypto funds. Typically onchain for blockchain deposits.

37
fromAssetstring

The type of crypto asset used for the transaction (e.g., usdt).

38
chainstring

The blockchain network on which the transaction is processed (e.g., trc20, erc20).

39
toCurrencystring

The fiat currency that the crypto will be converted into (e.g., ngn).

40
paymentETAstring

Estimated time range for when the payment will reach the beneficiary, usually stated in minutes.

41
expirystring (ISO8601)

The expiration timestamp for this quote. After this time, the quote becomes invalid and cannot be used.

Get Quote by QuoteId - 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.

Note

The response for Get Quote by Id 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 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?