Search...
Log inGet started
Airwallex logo
Home
Core API
Payments
Transactional FX
Payouts
Issuing
Back to home
OverviewUnderstanding Global Treasury
Market & infrastructure coverage
Use cases
Hold & convert funds
Process payouts
Authorize direct debit payouts
Create a payout
Payout statusesGenerate a confirmation letterSimulate payout status transition
Test and go live

Create a payout

Airwallex Payouts allows you to move funds across the globe easily to your suppliers, employees, contractors and/or own bank accounts. As a platform, you can bring your customers onto Airwallex and enhance your product offering by creating payouts on their behalf. Learn how to programmatically create payouts with our Payout API endpoints API in the following sections.

New feature: Airwallex supports payouts created via API to be routed through the transfer approval workflow set up on the Airwallex account. Learn more in Manage approvals for payouts.

Before you begin

  • Obtain your access token API by authenticating to Airwallex using your unique Client ID and API key. You will need the access token to make API calls.
  • Check out Payout Network for supported regions and currencies, and the country guides under it for more details on payment methods, delivery times, and other country specific details.
  • As a platform, you can call all Payouts API endpoints on behalf of your connected accounts by specifying the connected account's open ID (in the format acct_xxxxxx) in the x-on-behalf-of header of your API request. To learn about how you can register as a platform and set up this solution, see Global Treasury and Global Finance.

Step 1: Prepare required beneficiary information

Before creating a payout, you will need to prepare the required beneficiary information, which can vary depending on the payout country/currency, payment method, local clearing system, beneficiary type.

Our dynamic schema API allows you to obtain precise field requirements specific to the intended payout scenario. Refer to the screenshot below on which fields you can specify to generate the schema.

dynamic schema - center

The dynamic schema comes in handy when you are checking for a handful of payout scenarios. To obtain our full schema for beneficiaries programmatically in a JSON payload, you can call Get the API schema API to retrieve the required fields and validation rules, and/or Get the form schema API to retrieve suggested specifications on the UI components to render the fields along with the corresponding validation rules. See Using API and form schemas to learn more.

Furthermore, beneficiary information can be saved beforehand and used directly when creating a payout by specifying the beneficiary_id instead (see Step 2).

Step 2: Create a payout

Call Create a new payment API with the required beneficiary and transaction information (currency, amount, date, reference) to create a payout.

Beneficiary information can be specified within the request in two ways:

  1. Beneficiary ID

    If you prefer to save beneficiary information with Airwallex in advance to simplify the payout creation process, you can call Create a new beneficiary API, and a unique beneficiary_id will be returned. This can be used in place of the beneficiary object to create the payout subsequently.

    See Create beneficiaries and Manage beneficiaries to learn more.

  2. Directly within the request

    If you prefer to manage all beneficiary information outside of Airwallex, you can provide beneficiary information directly under the beneficiary object each time when calling Create a new payment API.

Refer to the dynamic schema API for precise field requirements specific to the intended payout scenario. If you specify a parameter that is either not required or not on the full schema, it will be ignored and removed from the response. Please find below further considerations on some of the required parameters:

  • beneficiary: beneficiary details should be provided directly in this object if beneficiary_id is not used:

    • bank_details: Required beneficiary bank account details parameters will vary according to the specified payout scenario. Please refer to dynamic schema API or call Get the API schema API to obtain the corresponding parameter requirements.
    • address: required address parameters such as street address, city, state and postcode will vary according to the specified address country. Please refer to dynamic schema API or call Get the API schema API to obtain the corresponding parameter requirements.
    • entity_type: Specify whether the beneficiary is an individual (PERSONAL) or a business (COMPANY).

    • company_name, OR first_name and last_name: The beneficiary’s name according to the entity_type.

  • payment_currency: The currency (3-letter ISO 4217 code) in which the beneficiary receives. It must match account_currency of the beneficiary’s bank account details. See Payout Network for supported currencies.

  • source_currency: The currency (3-letter ISO 4217 code) in which to fund the payout. If it is different from payment_currency, an underlying currency conversion will be booked (Refer to Transactional FX for more details).

  • payment_amount OR source_amount: Please only specify one of these two amounts in their respective currencies. The other amount will be calculated and returned in the response.

Actual amounts with payout fees applied (if any) are returned as amount_beneficiary_receives and amount_payer_pays in the response. If a payout was initially created and submitted for approval, these amounts are tentative based on the exchange rate at the time of creation until the payment status changes to SCHEDULED, at which point the exchange rate is confirmed. By default, payout fees are charged to the payer i.e. added to payment_amount and resulted in amount_payer_pays. If you wish to pass on the fees to the beneficiary, you can specify using the fee_paid_by parameter (see below for more details).

  • payment_method: Specify SWIFT to create an international SWIFT payout; or LOCAL to create a payout via the local clearing system, which is faster and more cost-effective. See Payout Network for supported payment methods by countries/regions and currencies.

  • reference: A user-specified reference that may be displayed to the beneficiary on their bank statement, depending on whether this is supported by the local clearing system and our banking partners. Contact your Account Manager to confirm whether display of reference is supported for your payout scenarios.

In addition, you may also choose to specify the following optional parameters in your request to further customize the payout or leverage other related features:

  • beneficiary.additional_info.personal_email: Specify this parameter if you want the beneficiary to receive an email notification upon payout being dispatched. Please contact your Account Manager to enable this feature beforehand.

  • fee_paid_by: By default, payout fees will be charged to the PAYER and included in the amount_payer_pays within the response. If you wish to pass on the fees to the beneficiary, set the value to BENEFICIARY.

  • swift_charge_option: By default, SHARED will be applied, in which case the SWIFT charges will be shared between the payer and the beneficiary, i.e. the beneficiary will receive the amount_beneficiary_receives less corresponding SWIFT charges by the beneficiary bank. If you want the beneficiary to receive the full amount_beneficiary_receives, set the value to PAYER to cover the additional SWIFT charges.

  • payment_date: Specify a current or future date (ISO 8601 format) for when the payout should be processed. If left blank, the payout date will default to the earliest possible date and your payout will be dispatched as soon as possible.

    For payouts with the same source and payment currency, you can specify a date up to 120 days into the future. For payouts with currency conversions, generally you can specify a date up to 2 days into the future (varies by currency pairs). Longer tenors up to 180 days (varies by currency pair) is possible with our FX forwards product for Australia or Hong Kong customers, but additional regulatory restrictions and application/review process may apply. Please confirm the acceptable value dates by currency pair with your Account Manager.

    For payouts created and submitted for approval, the payment_date will be updated if it was approved after the original specified date; at which point the payout status transitions to SCHEDULED and payment_date is fixed. The date when the payout is SENT will be returned in dispatch_date.

  • quote_id: Specify the quote_id returned from a previously created LockFX quote to fix the conversion rate of the payout. You must also ensure that the source_currency and payment_currency in your payout request match the sell_currency and buy_currency from the LockFX quote. By default, MarketFX (the prevailing market rate at the point of conversion) will be applied to the underlying currency conversion. See Transactional FX to learn more about the options you have in performing conversions and how you can leverage the corresponding API endpoints. LockFX quotes cannot be applied for creating and submitting a payout for approval.

  • payer or payer_id: Specify the payer information other than the Airwallex account owner with POBO (Pay On Behalf Of) enabled on a case-by-case approval basis. Similar to beneficiaries, the payer information may be provided directly within the payer object, or by specifying the payer_id of a saved payer. See Create a payer for more information. By default, Airwallex identifies the payer as the Airwallex account owner creating the payout (connected account owner in a platform use case), and it is not necessary to specify the payer information.

Example request

To create a payout to a saved beneficiary using beneficiary_id:

Shell

To create a payout by directly providing beneficiary information:

Shell

If you are registered as a platform account, you can call this endpoint on behalf of your connected accounts by specifying the open ID in the x-on-behalf-of header.

Example response

JSON

Fund deduction

Generally under the pre-funding workflow, funds will be immediately deducted from the Wallet upon payout creation (including future dated payments). If a payout was initially created and submitted for approval, funds will be deducted from the Wallet when the status of the payout transitions to PROCESSING. Please ensure that you have sufficient balance in your Wallet when creating payouts.

Alternatively under the post-funding workflow, certain customers without sufficient balance are permitted to create payouts in advance, which will be processed once funded automatically or manually:

  • Auto-funding mode: Funds will be deducted from the Wallet on payout date from 9am, on a first-in first-out basis based on the earliest payment_date, and the earliest created_at time. Funding will be retried every 30 minutes if wallet balance is insufficient.
  • Manual-funding mode: Payouts will not be processed unless funding instructions are confirmed to be processed on payment date by calling Confirm funding for a payment API.

To learn more about fund deduction models, please see Funding and Settlement Models.

Payout fee

The fee component of a payout is calculated by Airwallex and communicated back via fee_currency and fee_amount in the API response, while amount_payer_pays and amount_beneficiary_receives represent the actual amounts that you will pay and the recipient will receive respectively (with fees applied). If a payout was initially created and submitted for approval, fee_amount, amount_payer_pays and amount_beneficiary_receives are tentative based on the exchange rate at the time of creation until the payment status changes to SCHEDULED, at which point the exchange rate is confirmed.

The payout fee is set to be paid by the payer by default, while you can pass on the fees to the beneficiary instead by specifying BENEFICIARY for the fee_paid_by parameter in your request. See more details above in the description of request parameters.

Errors

Airwallex uses conventional HTTP response codes API to indicate the success or failure of an API request.

A HTTP 400 status code indicates an error that has been triggered due to the information provided in the request. See Error codes to learn about all possible errors associated with the HTTP 400 status when creating a payout.

Step 3: Retrieve a payout

Call Get payment by ID API or Get list of payments API to retrieve payout details. Additionally, you can subscribe to Payouts webhook events to receive any payout status transitions (the payload will be in the same manner as Create a new payment API). See Payout statuses for more information.

Retrieve a list of payouts

Call Get list of payments API to retrieve details for payouts based on specific conditions.

You can specify the date range of payout creation (from_created_at and to_created_at, inclusively) whithin the endpoint URL of the request, and the response will be in the same format as in the response of Create a new payment API. You can also use optional parameters such as payment_currency and status to filter your payouts, and the pagination parameters (page_num, page_size) to refine the results.

Example request

Shell

If you are registered as a platform account, you can call this endpoint on behalf of your connected accounts by specifying the open ID in the x-on-behalf-of header.

Retrieve details of a payout

Call Get payment by ID API to retrieve details of a payout by specifying the payment_id.

A successful request will return response in the same format as Create a new payment API.

Example request

Shell

If you are registered as a platform account, you can call this endpoint on behalf of your connected accounts by specifying the open ID in the x-on-behalf-of header.

On this page