Mass payouts

Create payout

This method is used for crypto payouts only. Please note that payouts can be requested only using a whitelisted IP address, and to whitelisted wallet addresses. It's a security measure enabled for each partner account by default.

You can whitelist both of these anytime in your NOWPayments personal account by visiting 'Whitelist' section in 'Settings'.

You need to provide your data as a JSON-object payload. Next is a description of the required request fields:

  • execute_at (required for scheduled/recurring payouts only) – the date and time when the payout(s) should be executed. Format: YYYY-MM-DDTHH:mm:ss.sssZ;

  • interval (required for scheduled/recurring payouts only) – defines how the payout should be executed:

ONETIME – payout is executed once;
DAILY – payouts are created every day;
WEEKLY – payouts are created every 7 days;
MONTHLY_BY_DAY_OF_MONTH – payouts are created monthly on the same calendar date;
MONTHLY_BY_DAY_OF_WEEK – payouts are created monthly on the same weekday pattern;

  • interval_value (optional; for scheduled/recurring payouts only) – defines how often payouts should be created within the selected interval (default is 1).
    Example: interval = DAILY, interval_value = 3 → payout every 3 days;

  • execute_until (optional; for scheduled/recurring payouts only**)** – the date and time after which new payouts should no longer be created for the batch. Format: YYYY-MM-DDTHH:mm:ss.sssZ;

  • address (required) - the address where you want to send funds;

  • currency (required) - payout currency;

  • amount (required) - amount of the payout. Must not exceed 6 decimals (i.e. 0.123456);

  • extra_id (optional) - memo, destination tag, etc.

  • ipn_callback_url(optional) - url to receive callbacks, should contain "http" or "https", eg. "https://nowpayments.io". Please note: you can either set ipn_callback_url for each individual payout, or for all payouts in a batch (see example). In both cases IPNs will be sent for each payout separately;

  • payout_description(optional) - a description of the payout. You can set it for all payouts in a batch;

  • unique_external_id(optional) - a unique external identifier;

  • fiat_amount(optional) - used for setting the payout amount in fiat equivalent. Overrides "amount" parameter;

  • fiat_currency (optional) - used for determining fiat currency to get the fiat equivalent for. Required for "fiat_amount" parameter to work. DOES NOT override "currency" parameter. Payouts are made in crypto only, no fiat payouts are available unless you have a fiat off-ramp provider activated for your account;

Here is the list of the available payout statuses:

  • creating;

  • waiting;

  • processing;

  • sending;

  • finished;

  • failed;

  • rejected;

Please note that in some cases 'Failed' payouts may be processed after your confirmation, so please check this possibility with the support team beforer recreating the payout.

Please, take note that you may request a single payout, but it still should be formatted as an array with the single element.

How to schedule a payout

Scheduled Payouts allow you to define a specific time when the payout should be executed. This is useful when you need to ensure that funds are sent at a precise moment.
Please ensure that your IP address and wallet addresses are whitelisted. Payouts can only be requested from whitelisted IPs and sent to whitelisted addresses by default.

Step 1: Define the Parameters for Scheduled Payout

To create a scheduled payout, you need to provide two key parameters before the regular payout details:

  • execute_at (required):
    Specify the exact date and time when the payout should be processed. Use the format YYYY-MM-DDTHH:mm:ss.sssZ.
    Example: "2026-02-29T10:35:00.000Z"

  • interval (required):
    Set the frequency for the payout. Currently, only ONETIME is supported, meaning the payout will occur once at the specified time.

Step 2: Add Payout Details

Next, provide the details of the payout, such as the amount, currency, and address where the funds should be sent. You can find all the required fields in the description above.

Step 3: Create the Payout

Once you have defined the execute_at and interval parameters, and added the payout details, send the request. Make sure to verify it with 2fa using POST Verify payout endpoint.

How to cancel a scheduled payout

If you need to cancel a scheduled payout, you can use the POST /v1/payout/w_id/cancel endpoint. You need to provide the ID of the payout in the request.
The payout will receive the status cancelled after being successfully canceled.

How to create recurring payout(s)

  1. specify the exact date and time when the first payout(s) should be executed, in the format: YYYY-MM-DDTHH:mm:ss.sssZ. with the execute_at param (required for this flow). For example: "2026-02-29T10:35:00.000Z"

  2. specify the desired interval (required) which defines how often payouts should be created:

  • DAILY — payouts are created every day

  • WEEKLY — payouts are created every 7 days

  • MONTHLY_BY_DAY_OF_MONTH — payouts are created monthly on the same date

  • MONTHLY_BY_DAY_OF_WEEK — payouts are created monthly on the same weekday pattern (e.g., second Monday)

3. specify an interval_value (optional) which defines how frequently the interval repeats:

Examples:

  • DAILY + interval_value = 3 → every 3 days

  • WEEKLY + interval_value = 2 → every 2 weeks

Default value: 1

Maximum value: 365 for DAILY / 52 for WEEKLY / 12 for MONTHLY

4. specify execute_until param (optional) if you want the system to stop creating new payouts after a specific date and time. For example: "2026-05-29T10:35:00.000Z"

After this date/time, no new payouts will be generated.

5. specify other payout details like amount, currency, and address in the request payload and send the request using POST /v1/payout method.

How recurring payouts work:

  • A batch (which contains one or more payouts) is created automatically when using recurring intervals

  • The first payout date is scheduled using execute_at

  • Future payouts are generated automatically based on:

    • interval

    • interval_value

  • Payouts continue to be created until:

    • execute_until is reached, or

    • the batch is canceled

Canceling recurring payouts

  1. Cancel a single payout: POST /v1/payout/:payout_id/cancel
  • Cancels only the selected payout

  • Does not stop other payouts in the batch

2. Cancel an entire batch: POST /v1/payout/:batch_id/cancel-batch

  • Cancels all the payouts this particular batch contains

  • Stops all the payouts in the batch from future creation

post/v1/payout

Request

Headers

x-api-keystring

(Required) Your NOWPayments API key

Request body

ipn_callback_urlstring uri

Response

200

idstring

Changes

No recorded changes to this operation across all 1 revision of this API.