# Create a new transfer

Create a new transfer to a beneficiary. The transfer can either include an underlying conversion when the transfer currency varies from the source currency, or will not include a conversion when the transfer currency and source currency match.

We have created a dynamic schema that will return required fields based on some key criteria that we need to determine the destination of the transfer and the route it will take to reach that destination. 

**Transfer Fee**

By default, payer is responsible for the transfer fee but may be passed onto the beneficiary by setting `fee_paid_by` to `BENEFICIARY`. The `fee_paid_by` flag affects the total amount the payer has to pay, and the amount the beneficiary receives.

The fee component is calculated by the system and is communicated back via `fee_currency` and `fee_amount` in the API response. The actual amounts both parties pay and receive are represented by `amount_payer_pays` and `amount_beneficiary_receives` respectively.

**Approvals**

Creating a transfer to be submitted for approval is available upon request. When a transfer including a conversion is submitted for approval, values for `amount_beneficiary_receives`, `amount_payer_pays`, `fee_amount`, `transfer_amount` and `source_amount` in the response are tentative based on the exchange rate at the time of creation until the transfer status changes to `SCHEDULED`, at which point the exchange rate is confirmed. When the transfer status transitions to `SCHEDULED`, if the `transfer_date` is a past date, its value will get updated.

## Endpoint

`POST /api/v1/transfers/create`

## Request Headers

- `Authorization` (string, required)
  Obtain a token via `POST /api/v1/authentication/login` with your API key and client unique identifier. Pass it as `Authorization: Bearer {{ACCESS_TOKEN}}`. Tokens expire after a configurable duration.

## Request Parameters

### Request Body

- `application_fee_options` (array[object], conditional)
  The application fee options applied to the transfer.
  - `amount` (string, conditional)
    A positive integer specifying the amount of the fee expressed in the smallest unit of the currency. e.g. cents for USD. This field is required only when type is FIXED.
  - `currency` (string, conditional)
    Specify the currency of the application fee in ISO 4217 currency code format, e.g., USD, AUD. This field is required when the type is FIXED.
    When the type is PERCENTAGE and source_type is CONVERSION, the currency for the conversion if specified must be from the currency pair. If the currency is unspecified, the contra currency of the quote will be used.
  - `metadata` (object, conditional)
    The metadata of the application fee. The value should be set in key:value format. (e.g., id:1).
  - `percentage` (string, conditional)
    Required if the type is PERCENTAGE, and the value to be provided depends on the transaction context.
    FX Conversions: The value acts as a markup on the FX rate, increasing the conversion cost by the specified percentage.
    Others: The value represents a direct fee calculated as a percentage of the transaction amount.
  - `source_type` (string, conditional)
    Specify type of the source transaction.
    Possible enum values:
      - `CONVERSION`
      - `TRANSFER`
  - `type` (string, conditional)
    Define the type of fee calculation. If the `source_type` is `CONVERSION`, then the type must be `PERCENTAGE`.
    Possible enum values:
      - `FIXED`
      - `PERCENTAGE`
- `beneficiary` (object, conditional)
  Details for the beneficiary in the transfer request. If beneficiary_id provided in the transfer request then beneficiary should be empty
  - `additional_info` (object, conditional)
    Additional information about the beneficiary
    - `business_area` (string, conditional)
      Category of business activity
    - `business_phone_number` (string, conditional)
      Business phone number
    - `business_registration_number` (string, conditional)
      Business registration number
    - `external_identifier` (string, conditional)
      The identifier that you use to identify a beneficiary, usually a unique identifier. This field can be used to link transfers or beneficiaries to other records such as tax form details for filing purposes
    - `legal_rep_bank_account_number` (string, conditional)
      Legal representative's personal bank account number used for declaration purposes. No funds will be sent to this account number.
    - `legal_rep_first_name_in_chinese` (string, conditional)
      Legal representative first name in chinese
    - `legal_rep_id_number` (string, conditional)
      Legal representative id number
    - `legal_rep_last_name_in_chinese` (string, conditional)
      Legal representative last name in chinese
    - `legal_rep_mobile_number` (string, conditional)
      Legal representative's mobile number associated with their bank account.
    - `personal_email` (string, conditional)
      Personal email
    - `personal_first_name_in_chinese` (string, conditional)
      Beneficiary's first name in Chinese
    - `personal_id_number` (string, conditional)
      Personal unique identifier number
    - `personal_id_type` (string, conditional)
      Personal unique identifier type
    - `personal_last_name_in_chinese` (string, conditional)
      Beneficiary's last name in Chinese
    - `personal_mobile_number` (string, conditional)
      Personal mobile number
    - `recipient_account_id` (string, conditional)
      Account unique identifier of the recipient account used for payout processing. The account must be active and have `customer_agreements.terms_and_conditions.service_agreement_type` set to `RECIPIENT` (verify via [Retrieve account details API](https://www.airwallex.com/docs/api/issuing/cards/details)).
    - `security_question` (string, conditional)
      Security question. Required when the email address is not registered with Interac e-Transfer autodeposit.
    - `security_question_answer` (string, conditional)
      Security question answer. Required when the email address is not registered with Interac e-Transfer autodeposit.
  - `address` (object, conditional)
    Beneficiary's address details
    - `city` (string, conditional)
      Beneficiary's city
    - `country_code` (string, conditional)
      Beneficiary's country code (2-letter ISO 3166-2 country code)
    - `postcode` (string, conditional)
      Beneficiary's post code
    - `state` (string, conditional)
      Beneficiary's state
    - `street_address` (string, conditional)
      Beneficiary's street address
  - `bank_details` (object, conditional)
    Beneficiary's bank account details where the payment will be credited
    - `account_currency` (string, required)
      Account Currency
    - `account_name` (string, required)
      Account holder name of the beneficiary's bank account
    - `account_name_alias` (string, conditional)
      The beneficiary's account name known in the payment system. This is only supported in some regions and transfer methods. See detailed definitions in the [Payouts Product Docs](/docs/payouts/beneficiaries/create-beneficiaries).
    - `account_number` (string, conditional)
      Account number, mostly for non-european countries, either account_number or iban should be filled
    - `account_routing_type1` (string, conditional)
      Routing code type
    - `account_routing_type2` (string, conditional)
      Routing code sub type
    - `account_routing_value1` (string, conditional)
      Routing code value
    - `account_routing_value2` (string, conditional)
      Routing code sub type value
    - `bank_account_category` (string, conditional)
      bank account type
    - `bank_branch` (string, conditional)
      Specific branch of bank account
    - `bank_country_code` (string, required)
      Bank country code (2-letter ISO 3166-2 country code)
    - `bank_name` (string, conditional)
      Bank name of the beneficiary's bank account
    - `bank_state` (string, conditional)
      Bank State
    - `bank_street_address` (string, conditional)
      Bank street address
    - `binding_mobile_number` (string, conditional)
      The mobile number tied to the Beneficiary's bank account
    - `fingerprint` (string, conditional)
      Fingerprint of current beneficiary's bank account
    - `iban` (string, conditional)
      International bank account number, mostly for european countries
    - `intermediary_bank_name` (string, conditional)
      Bank name of the beneficiary's intermediary bank
    - `intermediary_bank_swift_code` (string, conditional)
      Intermediary bank SWIFT code / BIC,Should contain alphanumeric characters only, Should be a valid and supported SWIFT code / BIC
    - `local_clearing_system` (string, conditional)
      Which clearing system should be used for this local bank transfer.
      Please refer to our [payout guide](https://airwallex.com/guides/payout) for details about each option.
      We suggest explicitly specifying this value, however if it's not provided we will select a default (using the specified account routing type and/or what's most often the best option).
    - `swift_code` (string, conditional)
      Bank swift code
  - `card` (object, conditional)
    Beneficiary's card details where the payment will be credited
    - `brand` (string, conditional)
      Card brand
    - `cardholder_name` (string, required)
      Cardholder name
    - `currency` (string, conditional)
      Card currency
    - `expiry_month` (string, conditional)
      Expiry month
    - `expiry_year` (string, conditional)
      Expiry year
    - `number` (string, conditional)
      Card number
    - `token` (string, required)
      Tokenised card number, which can be retrieved from Airwallex beneficiary component
  - `company_name` (string, conditional)
    Company name of the beneficiary
  - `date_of_birth` (string, conditional)
    beneficiary date of birth
  - `digital_wallet` (object, conditional)
    Beneficiary's digital wallet details where the payment will be credited
    - `account_name` (string, required)
      Account holder name of the beneficiary's digital wallet
    - `country_code` (string, conditional)
      Digital wallet country code (2-letter ISO 3166-2 country code)
    - `id_type` (string, required)
      Account identifier type of the beneficiary's digital wallet
    - `id_value` (string, required)
      Account identifier value of the beneficiary's digital wallet
    - `provider` (string, required)
      Service provider of the beneficiary's digital wallet
  - `entity_type` (string, conditional)
    Entity type of the beneficiary
  - `first_name` (string, conditional)
    First name of the beneficiary
  - `last_name` (string, conditional)
    Last name of the beneficiary
  - `type` (string, conditional)
    Type of the beneficiary, indicating the type of account or method through which the beneficiary receives funds
- `beneficiary_id` (string, conditional)
  An Airwallex beneficiary_id previously generated by utilising the Airwallex Contact API.  This may be provided in place of the beneficiary section and should be empty if the beneficiary fields are provided
- `client_data` (string, conditional)
  Free text field available to you; can be populated with any additional identifiers that may be required for the transfer
- `fee_paid_by` (string, conditional)
  Denotes whether `PAYER`/`BENEFICIARY` will be liable for the transfer fees, and it affects the actual amount the beneficiary receives
- `lock_rate_on_create` (boolean, conditional)
  Customers could choose whether to use confirmed rates for scheduled transfer with conversion. This field should only be specified when a conversion is involved.If customers do not specify this field, the default value is true. This field can either be specified to be TRUE when creating a transfer with currency conversions at a confirmed rate or FALSE if an unconfirmed rate is wanted.
- `metadata` (object, conditional)
  A set of key-value pairs for storing your own data together with the transfer.
- `payer` (object, conditional)
  Details for the payer in the transfer request. If payer_id provided in the transfer request then payer should be empty
  - `additional_info` (object, conditional)
    Additional information about the payer
    - `business_registration_number` (string, conditional)
      Business registration number
    - `business_registration_type` (string, conditional)
      Type of business as registered with the local government authority
    - `external_id` (string, conditional)
      Unique identifier of the person in your company
    - `personal_email` (string, conditional)
      Personal email
    - `personal_id_number` (string, conditional)
      Personal unique identifier number
  - `address` (object, required)
    Payer's address details
    - `city` (string, conditional)
      Payer's city
    - `country_code` (string, required)
      Payer's country code (2-letter ISO 3166-2 country code)
    - `postcode` (string, conditional)
      Payer's post code
    - `state` (string, conditional)
      Payer's state
    - `street_address` (string, conditional)
      Payer's street address
  - `company_name` (string, conditional)
    Company name of the payer
  - `date_of_birth` (string, conditional)
    Payer's date of birth
  - `entity_type` (string, required)
    Entity type of the payer
  - `first_name` (string, conditional)
    First name of the payer
  - `last_name` (string, conditional)
    Last name of the payer
- `payer_id` (string, conditional)
  An Airwallex payer_id previously generated by utilising the Airwallex Contact API.  This may be provided in place of the payer section and should be empty if the payer fields are provided
- `quote_id` (string, conditional)
  quote id from a previously created lockfx quote
- `reason` (string, required)
  Reason for the transfer instruction
- `reference` (string, required)
  A user specified reference that will be displayed to the beneficiary on the transfer transaction with their bank
- `remarks` (string, conditional)
  Additional information about this transfer, which will not be passed to the beneficiary.
- `request_id` (string, required)
  A unique request ID specified by the client.  Payout creation requests with a `request_id` that has been used in the past 7 days are treated as duplicated payout and cannot be processed. When you are not sure about the outcome of a payout creation request, e.g. when there are network issues or system failures such as timeout, you can try to get a payout with this `request_id` to find out.
  Note: Can be non-UUID as long as it is unique among the requests within the past 7 days.
- `source_amount` (string, conditional)
  Source amount in `source_currency`
- `source_currency` (string, conditional)
  Source currency, i.e. the currency that the Payer uses to fund the transfer (3-letter ISO-4217 code)
- `swift_charge_option` (string, conditional)
  (For SWIFT transfers only), specify who should bear SWIFT charges, either `SHARED` (default) or `PAYER`
- `transfer_amount` (string, conditional)
  Transfer amount in `transfer_currency`
- `transfer_currency` (string, required)
  Transfer currency, i.e. the currency that the beneficiary receives (3-letter ISO-4217 code)
- `transfer_date` (string, conditional)
  Date when transfer should be made
- `transfer_method` (string, conditional)
  Transfer method, i.e. SWIFT, LOCAL

**Example:**

```json
{
  "application_fee_options": [
    {
      "amount": "5",
      "currency": "AUD",
      "percentage": "0.1",
      "source_type": "TRANSFER",
      "type": "FIXED"
    }
  ],
  "beneficiary": {
    "additional_info": {
      "business_area": "Travel",
      "business_phone_number": "689342234",
      "business_registration_number": "IT593003",
      "external_identifier": "<string>",
      "legal_rep_bank_account_number": "44250100003700000000",
      "legal_rep_first_name_in_chinese": "小芳",
      "legal_rep_id_number": "110108199304203520",
      "legal_rep_last_name_in_chinese": "刘",
      "legal_rep_mobile_number": "13651362890",
      "personal_email": "john.walker@gmail.com",
      "personal_first_name_in_chinese": "大明",
      "personal_id_number": "1234567890",
      "personal_id_type": "NATIONAL_ID",
      "personal_last_name_in_chinese": "李",
      "personal_mobile_number": "13651362890",
      "recipient_account_id": "<string>",
      "security_question": "What is the name of my second puppy?",
      "security_question_answer": "Scooby Doo"
    },
    "address": {
      "city": "Melbourne",
      "country_code": "AU",
      "postcode": "3000",
      "state": "VIC",
      "street_address": "15 William Street"
    },
    "bank_details": {
      "account_currency": "AUD",
      "account_name": "Lee Da Ming",
      "account_name_alias": "Lee D M",
      "account_number": "12750852",
      "account_routing_type1": "bsb",
      "account_routing_type2": "sort_code",
      "account_routing_value1": "083064",
      "account_routing_value2": "123456",
      "bank_account_category": "Checking,Savings,Vista,Maestra",
      "bank_branch": "Melbourne",
      "bank_country_code": "AU",
      "bank_name": "National Australia Bank",
      "bank_state": "<string>",
      "bank_street_address": "500 Bourke Street, Melbourne 3000, Australia",
      "binding_mobile_number": "654897612345",
      "fingerprint": "2e99758548972a8e8822ad47fa1017ff72f06f3ff6a016851f45c398732bc50c",
      "iban": "ES8023100001180000012345",
      "intermediary_bank_name": "National Australia Bank",
      "intermediary_bank_swift_code": "CTBAAU2S",
      "local_clearing_system": "ACH",
      "swift_code": "CTBAAU2S"
    },
    "card": {
      "brand": "VISA",
      "cardholder_name": "John Walker",
      "currency": "USD",
      "expiry_month": "10",
      "expiry_year": "2033",
      "number": "************1111",
      "token": "AKvN4TqxI04SNFZ+oYRXaECtDA=="
    },
    "company_name": "Complete Concrete Pty Ltd",
    "date_of_birth": "1976-08-26T00:00:00.000Z",
    "digital_wallet": {
      "account_name": "John Walker Corporation",
      "country_code": "US",
      "id_type": "account_number",
      "id_value": "1033106816639334",
      "provider": "AIRWALLEX"
    },
    "entity_type": "COMPANY",
    "first_name": "John",
    "last_name": "Walker",
    "type": "<string>"
  },
  "beneficiary_id": "8365ea88-2946-4877-abe1-e02a1015288d",
  "client_data": "string",
  "fee_paid_by": "PAYER",
  "lock_rate_on_create": false,
  "metadata": {
    "order_id": "0123456789"
  },
  "payer": {
    "additional_info": {
      "business_registration_number": "EU300503",
      "business_registration_type": "Partnership",
      "external_id": "1234567890",
      "personal_email": "james.smith@google.com",
      "personal_id_number": "1234567890"
    },
    "address": {
      "city": "Melbourne",
      "country_code": "AU",
      "postcode": "3000",
      "state": "VIC",
      "street_address": "15 William Street"
    },
    "company_name": "Complete Concrete Pty Ltd",
    "date_of_birth": "1976-08-26T00:00:00.000Z",
    "entity_type": "COMPANY",
    "first_name": "James",
    "last_name": "Smith"
  },
  "payer_id": "46c22228-5831-4c53-a4fa-a3ab4954877c",
  "quote_id": "<string>",
  "reason": "travel",
  "reference": "PMT1936398",
  "remarks": "Any information",
  "request_id": "7f687fe6-dcf4-4462-92fa-80335301d9d2",
  "source_amount": "10000",
  "source_currency": "AUD",
  "swift_charge_option": "SHARED",
  "transfer_amount": "10000",
  "transfer_currency": "AUD",
  "transfer_date": "2017-03-20T00:00:00.000Z",
  "transfer_method": "SWIFT"
}
```

## cURL Example

```bash
curl -X POST "https://api.airwallex.com/api/v1/transfers/create" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "_placeholder": "Replace this with your request body. See Request Parameters section above for the schema."
  }'
```

## Response

### 201 Created

**Example:**

```json
{
  "amount_beneficiary_receives": 99996,
  "amount_payer_pays": 10004,
  "application_fee_options": [
    {
      "amount": "5",
      "currency": "AUD",
      "percentage": "0.1",
      "source_type": "TRANSFER",
      "type": "FIXED"
    }
  ],
  "application_fees": [
    {
      "amount": "5",
      "currency": "AUD",
      "source_type": "TRANSFER"
    }
  ],
  "batch_transfer_id": "d9df6d02-4116-4376-82c7-064159cc878e",
  "beneficiary": {
    "additional_info": {
      "business_area": "Travel",
      "business_phone_number": "689342234",
      "business_registration_number": "IT593003",
      "external_identifier": "<string>",
      "legal_rep_bank_account_number": "44250100003700000000",
      "legal_rep_first_name_in_chinese": "小芳",
      "legal_rep_id_number": "110108199304203520",
      "legal_rep_last_name_in_chinese": "刘",
      "legal_rep_mobile_number": "13651362890",
      "personal_email": "john.walker@gmail.com",
      "personal_first_name_in_chinese": "大明",
      "personal_id_number": "1234567890",
      "personal_id_type": "NATIONAL_ID",
      "personal_last_name_in_chinese": "李",
      "personal_mobile_number": "13651362890",
      "recipient_account_id": "<string>",
      "security_question": "What is the name of my second puppy?",
      "security_question_answer": "Scooby Doo"
    },
    "address": {
      "city": "Melbourne",
      "country_code": "AU",
      "postcode": "3000",
      "state": "VIC",
      "street_address": "15 William Street"
    },
    "bank_details": {
      "account_currency": "AUD",
      "account_name": "Lee Da Ming",
      "account_name_alias": "Lee D M",
      "account_number": "12750852",
      "account_routing_type1": "bsb",
      "account_routing_type2": "sort_code",
      "account_routing_value1": "083064",
      "account_routing_value2": "123456",
      "bank_account_category": "Checking,Savings,Vista,Maestra",
      "bank_branch": "Melbourne",
      "bank_country_code": "AU",
      "bank_name": "National Australia Bank",
      "bank_state": "<string>",
      "bank_street_address": "500 Bourke Street, Melbourne 3000, Australia",
      "binding_mobile_number": "654897612345",
      "fingerprint": "2e99758548972a8e8822ad47fa1017ff72f06f3ff6a016851f45c398732bc50c",
      "iban": "ES8023100001180000012345",
      "intermediary_bank_name": "National Australia Bank",
      "intermediary_bank_swift_code": "CTBAAU2S",
      "local_clearing_system": "ACH",
      "swift_code": "CTBAAU2S"
    },
    "card": {
      "brand": "VISA",
      "cardholder_name": "John Walker",
      "currency": "USD",
      "expiry_month": "10",
      "expiry_year": "2033",
      "number": "************1111",
      "token": "AKvN4TqxI04SNFZ+oYRXaECtDA=="
    },
    "company_name": "Complete Concrete Pty Ltd",
    "date_of_birth": "1976-08-26T00:00:00.000Z",
    "digital_wallet": {
      "account_name": "John Walker Corporation",
      "country_code": "US",
      "id_type": "account_number",
      "id_value": "1033106816639334",
      "provider": "AIRWALLEX"
    },
    "entity_type": "COMPANY",
    "first_name": "John",
    "last_name": "Walker",
    "type": "<string>"
  },
  "beneficiary_id": "<uuid>",
  "conversion": {
    "currency_pair": "USDEUR",
    "rate": 0.761223
  },
  "created_at": "2017-03-22T16:08:02+1100",
  "dispatch_date": "2017-03-29T00:00:00.000Z",
  "dispatch_info": {
    "external_reference": "CHK-100012345",
    "external_reference_type": "PAPER_CHECK_NUMBER"
  },
  "failure": {
    "code": "90502",
    "message": "Unable to process due to risk concerns.",
    "details": {
      "type": "TM_SUSPEND",
      "reason_codes": [
        "EXPIRED_TRANSACTION_RFI"
      ]
    }
  },
  "fee_amount": 4,
  "fee_currency": "AUD",
  "fee_paid_by": "PAYER",
  "funding": {
    "deposit_type": "DIRECT_DEBIT",
    "failure_details": {
      "code": "insufficient_funds",
      "iso_code": "AM04",
      "provider_failure_details": {
        "code": "R01",
        "local_clearing_system": "US_ACH",
        "message": "INSUFFICIENT FUNDS"
      }
    },
    "failure_reason": "regulatory_reason",
    "funding_source_id": "b3856846-31b0-44d8-855d-e0eedf532282",
    "status": "FUNDED"
  },
  "id": "d9af1614-a6a1-4d45-aae7-6858fc6d9ede",
  "lock_rate_on_create": false,
  "metadata": {
    "order_id": "0123456789"
  },
  "payer": {
    "additional_info": {
      "business_registration_number": "EU300503",
      "business_registration_type": "Partnership",
      "external_id": "1234567890",
      "personal_email": "james.smith@google.com",
      "personal_id_number": "1234567890"
    },
    "address": {
      "city": "Melbourne",
      "country_code": "AU",
      "postcode": "3000",
      "state": "VIC",
      "street_address": "15 William Street"
    },
    "company_name": "Complete Concrete Pty Ltd",
    "date_of_birth": "1976-08-26T00:00:00.000Z",
    "entity_type": "COMPANY",
    "first_name": "James",
    "last_name": "Smith"
  },
  "payer_id": "<uuid>",
  "prepayment": {
    "amount": 12.34,
    "currency": "USD"
  },
  "reason": "travel",
  "reference": "PMT1936398",
  "remarks": "Any information",
  "request_id": "7f687fe6-dcf4-4462-92fa-80335301d9d2",
  "short_reference_id": "20170322-9F6ML2",
  "source_amount": 10000,
  "source_currency": "AUD",
  "status": "PROCESSING",
  "swift_charge_option": "SHARED",
  "transfer_amount": 10000,
  "transfer_currency": "AUD",
  "transfer_date": "2017-03-24T00:00:00.000Z",
  "transfer_method": "SWIFT",
  "updated_at": "2017-03-24T18:00:02+1100"
}
```

- `amount_beneficiary_receives` (number, required)
  The total amount (in transfer `transfer_currency`) the beneficiary receives for this transfer, and is governed by value specified in `fee_paid_by`, i.e. if `fee_paid_by` is `PAYER`, then the beneficiary receives the exact same `transfer_amount` since payer is responsible for the transfer fee.  Otherwise, beneficiary receives `transfer_amount - fee` as the fee is implicitly passed onto the beneficiary
- `amount_payer_pays` (number, required)
  The total amount (in `source_currency`) the payer has to pay for making this transfer. For example, if `fee_paid_by` is `PAYER` and FX conversion is not involved, then this is the sum of `transfer_amount + fee` as the payer is responsible for the fee.  Otherwise this field is the same as `transfer_amount`
- `application_fee_options` (array[object], conditional)
  The application fee options applied to this transfer.
  - `amount` (string, conditional)
    A positive integer specifying the amount of the fee expressed in the smallest unit of the currency. e.g. cents for USD. This field is required only when type is FIXED.
  - `currency` (string, conditional)
    Specify the currency of the application fee in ISO 4217 currency code format, e.g., USD, AUD. This field is required when the type is FIXED.
    When the type is PERCENTAGE and source_type is CONVERSION, the currency for the conversion if specified must be from the currency pair. If the currency is unspecified, the contra currency of the quote will be used.
  - `metadata` (object, conditional)
    The metadata of the application fee. The value should be set in key:value format. (e.g., id:1).
  - `percentage` (string, conditional)
    Required if the type is PERCENTAGE, and the value to be provided depends on the transaction context.
    FX Conversions: The value acts as a markup on the FX rate, increasing the conversion cost by the specified percentage.
    Others: The value represents a direct fee calculated as a percentage of the transaction amount.
  - `source_type` (string, conditional)
    Specify type of the source transaction.
    Possible enum values:
      - `CONVERSION`
      - `TRANSFER`
  - `type` (string, conditional)
    Define the type of fee calculation. If the `source_type` is `CONVERSION`, then the type must be `PERCENTAGE`.
    Possible enum values:
      - `FIXED`
      - `PERCENTAGE`
- `application_fees` (array[object], conditional)
  Application fees in this transfer.
  - `amount` (string, conditional)
    The application fee amount.
  - `currency` (string, conditional)
    The currency of the application fee.
  - `source_type` (string, conditional)
    Specify the type of source transaction for this application fee.
    Possible enum values:
      - `CONVERSION`
      - `TRANSFER`
- `batch_transfer_id` (string, conditional)
  Unique identifier of the batch containing the transfer.
- `beneficiary` (object, required)
  Details of the beneficiary
  - `additional_info` (object, conditional)
    Additional information about the beneficiary
    - `business_area` (string, conditional)
      Category of business activity
    - `business_phone_number` (string, conditional)
      Business phone number
    - `business_registration_number` (string, conditional)
      Business registration number
    - `external_identifier` (string, conditional)
      The identifier that you use to identify a beneficiary, usually a unique identifier. This field can be used to link transfers or beneficiaries to other records such as tax form details for filing purposes
    - `legal_rep_bank_account_number` (string, conditional)
      Legal representative's personal bank account number used for declaration purposes. No funds will be sent to this account number.
    - `legal_rep_first_name_in_chinese` (string, conditional)
      Legal representative first name in chinese
    - `legal_rep_id_number` (string, conditional)
      Legal representative id number
    - `legal_rep_last_name_in_chinese` (string, conditional)
      Legal representative last name in chinese
    - `legal_rep_mobile_number` (string, conditional)
      Legal representative's mobile number associated with their bank account.
    - `personal_email` (string, conditional)
      Personal email
    - `personal_first_name_in_chinese` (string, conditional)
      Beneficiary's first name in Chinese
    - `personal_id_number` (string, conditional)
      Personal unique identifier number
    - `personal_id_type` (string, conditional)
      Personal unique identifier type
    - `personal_last_name_in_chinese` (string, conditional)
      Beneficiary's last name in Chinese
    - `personal_mobile_number` (string, conditional)
      Personal mobile number
    - `recipient_account_id` (string, conditional)
      Account unique identifier of the recipient account used for payout processing. The account must be active and have `customer_agreements.terms_and_conditions.service_agreement_type` set to `RECIPIENT` (verify via [Retrieve account details API](https://www.airwallex.com/docs/api/issuing/cards/details)).
    - `security_question` (string, conditional)
      Security question. Required when the email address is not registered with Interac e-Transfer autodeposit.
    - `security_question_answer` (string, conditional)
      Security question answer. Required when the email address is not registered with Interac e-Transfer autodeposit.
  - `address` (object, conditional)
    Beneficiary's address details
    - `city` (string, conditional)
      Beneficiary's city
    - `country_code` (string, conditional)
      Beneficiary's country code (2-letter ISO 3166-2 country code)
    - `postcode` (string, conditional)
      Beneficiary's post code
    - `state` (string, conditional)
      Beneficiary's state
    - `street_address` (string, conditional)
      Beneficiary's street address
  - `bank_details` (object, conditional)
    Beneficiary's bank account details where the payment will be credited
    - `account_currency` (string, required)
      Account Currency
    - `account_name` (string, required)
      Account holder name of the beneficiary's bank account
    - `account_name_alias` (string, conditional)
      The beneficiary's account name known in the payment system. This is only supported in some regions and transfer methods. See detailed definitions in the [Payouts Product Docs](/docs/payouts/beneficiaries/create-beneficiaries).
    - `account_number` (string, conditional)
      Account number, mostly for non-european countries, either account_number or iban should be filled
    - `account_routing_type1` (string, conditional)
      Routing code type
    - `account_routing_type2` (string, conditional)
      Routing code sub type
    - `account_routing_value1` (string, conditional)
      Routing code value
    - `account_routing_value2` (string, conditional)
      Routing code sub type value
    - `bank_account_category` (string, conditional)
      bank account type
    - `bank_branch` (string, conditional)
      Specific branch of bank account
    - `bank_country_code` (string, required)
      Bank country code (2-letter ISO 3166-2 country code)
    - `bank_name` (string, conditional)
      Bank name of the beneficiary's bank account
    - `bank_state` (string, conditional)
      Bank State
    - `bank_street_address` (string, conditional)
      Bank street address
    - `binding_mobile_number` (string, conditional)
      The mobile number tied to the Beneficiary's bank account
    - `fingerprint` (string, conditional)
      Fingerprint of current beneficiary's bank account
    - `iban` (string, conditional)
      International bank account number, mostly for european countries
    - `intermediary_bank_name` (string, conditional)
      Bank name of the beneficiary's intermediary bank
    - `intermediary_bank_swift_code` (string, conditional)
      Intermediary bank SWIFT code / BIC,Should contain alphanumeric characters only, Should be a valid and supported SWIFT code / BIC
    - `local_clearing_system` (string, conditional)
      Which clearing system should be used for this local bank transfer.
      Please refer to our [payout guide](https://airwallex.com/guides/payout) for details about each option.
      We suggest explicitly specifying this value, however if it's not provided we will select a default (using the specified account routing type and/or what's most often the best option).
    - `swift_code` (string, conditional)
      Bank swift code
  - `card` (object, conditional)
    Beneficiary's card details where the payment will be credited
    - `brand` (string, conditional)
      Card brand
    - `cardholder_name` (string, required)
      Cardholder name
    - `currency` (string, conditional)
      Card currency
    - `expiry_month` (string, conditional)
      Expiry month
    - `expiry_year` (string, conditional)
      Expiry year
    - `number` (string, conditional)
      Card number
    - `token` (string, required)
      Tokenised card number, which can be retrieved from Airwallex beneficiary component
  - `company_name` (string, conditional)
    Company name of the beneficiary
  - `date_of_birth` (string, conditional)
    beneficiary date of birth
  - `digital_wallet` (object, conditional)
    Beneficiary's digital wallet details where the payment will be credited
    - `account_name` (string, required)
      Account holder name of the beneficiary's digital wallet
    - `country_code` (string, conditional)
      Digital wallet country code (2-letter ISO 3166-2 country code)
    - `id_type` (string, required)
      Account identifier type of the beneficiary's digital wallet
    - `id_value` (string, required)
      Account identifier value of the beneficiary's digital wallet
    - `provider` (string, required)
      Service provider of the beneficiary's digital wallet
  - `entity_type` (string, conditional)
    Entity type of the beneficiary
  - `first_name` (string, conditional)
    First name of the beneficiary
  - `last_name` (string, conditional)
    Last name of the beneficiary
  - `type` (string, conditional)
    Type of the beneficiary, indicating the type of account or method through which the beneficiary receives funds
- `beneficiary_id` (string (uuid), conditional)
  beneficiary_id of the beneficiary contact used to create this transfer
- `conversion` (object, conditional)
  Conversion details of a transfer with currency conversions.
  - `currency_pair` (string, required)
    The currency pair of the conversion.
  - `rate` (number, required)
    The rate of the conversion.
- `created_at` (string, required)
  The time this transfer request was created
- `dispatch_date` (string, conditional)
  Actual payout dispatch date. Payouts are dispatched at this date in actual processing. This date could be later than the transfer date.
- `dispatch_info` (object, conditional)
  Additional details populated after the transaction is sent to Airwallex's downstream for processing. Only available for some transfer methods - see [Product Docs](/docs/payouts/transfers/create-a-transfer) for details.
  - `external_reference` (string, conditional)
    A reference unique identifier to track a transfer after it's dispatched from Airwallex
  - `external_reference_type` (string, conditional)
    The definition of the `external_reference` in the payment system.
- `failure` (object, conditional)
  Failure details if the transfer is in an error state
  - `code` (string, conditional)
    Failure code
  - `message` (string, conditional)
    Failure message
  - `details` (object, conditional)
    Additional failure details
    - `type` (string, conditional)
      Failure type
    - `reason_codes` (array[string], conditional)
      Detailed reason code
- `fee_amount` (number, required)
  The transfer fee (in `source_currency`) for sending this transfer
- `fee_currency` (string, required)
  The transfer fee currency. This should always equal to the `source_currency`
- `fee_paid_by` (string, required)
  Denotes whether `PAYER` / `BENEFICIARY` will be liable for the the transfer fee.  Defaults to `PAYER` unless field is populated in the request
- `funding` (object, required)
  The funding information of this transfer.
  - `deposit_type` (string, conditional)
    Can be one of: `FASTER_DIRECT_DEBIT`, `DIRECT_DEBIT`.
  - `failure_details` (object, conditional)
    Details about why the funding has failed. Only present when the funding is in a failure state.
    - `code` (string, conditional)
      Error code (details can be found [here](/docs/global-treasury/receive-funds/add-funds-via-direct-debits-from-linked-accounts/direct-debit-deposit-error-codes)).
    - `iso_code` (string, conditional)
      Error code [ISO 20022](https://www.iso20022.org/about-iso-20022) (details can be found [here](/docs/global-treasury/receive-funds/add-funds-via-direct-debits-from-linked-accounts/direct-debit-deposit-error-codes)).
    - `provider_failure_details` (object, conditional)
      A set of original information received from the local clearing system.
      - `code` (string, conditional)
        The original error code received from the local clearing system.
      - `local_clearing_system` (string, conditional)
        The local clearing system used for the direct debit deposit. Possible values are `AU_BECS`, `US_ACH`, `GB_BACS`, `EU_SEPA`.
      - `message` (string, conditional)
        The original error message received from the local clearing system.
  - `failure_reason` (string, conditional)
    Empty unless the funding is in an error state.
  - `funding_source_id` (string, conditional)
    The id of the funding source, it can be null if using a wallet.
  - `status` (string, required)
    The funding status of this payment. Please see details in [Funding Statuses](/docs/payouts/transfers/create-a-transfer/transfer-statuses#funding-statuses).
- `id` (string (uuid), required)
  Returned `id` that can be used to query the status of the transfer
- `lock_rate_on_create` (boolean, conditional)
  Denotes whether to lock the conversion rate for a scheduled transfer with value `TRUE` or `FALSE`.This field should only be specified when a conversion is involved. If not specified, the default value is `TRUE`.
- `metadata` (object, conditional)
  A set of key-value pairs for storing your own data together with the transfer.
- `payer` (object, required)
  Details for the payer in the transfer request. If payer_id provided in the transfer request then payer should be empty
  - `additional_info` (object, conditional)
    Additional information about the payer
    - `business_registration_number` (string, conditional)
      Business registration number
    - `business_registration_type` (string, conditional)
      Type of business as registered with the local government authority
    - `external_id` (string, conditional)
      Unique identifier of the person in your company
    - `personal_email` (string, conditional)
      Personal email
    - `personal_id_number` (string, conditional)
      Personal unique identifier number
  - `address` (object, required)
    Payer's address details
    - `city` (string, conditional)
      Payer's city
    - `country_code` (string, required)
      Payer's country code (2-letter ISO 3166-2 country code)
    - `postcode` (string, conditional)
      Payer's post code
    - `state` (string, conditional)
      Payer's state
    - `street_address` (string, conditional)
      Payer's street address
  - `company_name` (string, conditional)
    Company name of the payer
  - `date_of_birth` (string, conditional)
    Payer's date of birth
  - `entity_type` (string, required)
    Entity type of the payer
  - `first_name` (string, conditional)
    First name of the payer
  - `last_name` (string, conditional)
    Last name of the payer
- `payer_id` (string (uuid), conditional)
  payer_id of the payer contact used to create this transfer
- `prepayment` (object, conditional)
  Prepayment details for a schedule transfer with currency conversions at a confirmed rate.
  - `amount` (number, required)
    The prepayment amount to be paid.
  - `currency` (string, required)
    The prepayment currency.
- `reason` (string, required)
  Reason for the transfer instruction
- `reference` (string, required)
  Bank transfer reference to be shown on beneficiary's bank transaction history
- `remarks` (string, conditional)
  Additional information about this transfer, which will not be passed to the beneficiary.
- `request_id` (string, required)
  A unique request identifier specified in the transfer request
- `short_reference_id` (string, required)
  Short transfer reference for support purposes
- `source_amount` (number, required)
  Amount to be received
- `source_currency` (string, required)
  Copied from the request if specified
- `status` (string, required)
  The transfer status. Please see details in [Transfer Statuses](/docs/payouts/transfers/create-a-transfer/transfer-statuses).
- `swift_charge_option` (string, conditional)
  (For SWIFT transfers only), specify who should bear SWIFT charges, either `SHARED` (default) or `PAYER`
- `transfer_amount` (number, required)
  Amount to be paid
- `transfer_currency` (string, required)
  Currency the transfer should be made in (3-letter ISO-4217 code)
- `transfer_date` (string, required)
  Date when transfer should be made (Copied from the request if specified)
- `transfer_method` (string, required)
  Copied from the request if specified.  Otherwise the system will populate this field automatically
- `updated_at` (string, required)
  The time this transfer request was last updated

### 400 Bad Request

- `code` (string, conditional)
- `details` (object, conditional)
- `message` (string, conditional)
- `source` (string, conditional)

### 401 Unauthorized

["credentials_invalid"
,"credentials_expired"]

### 409 

- `code` (string, conditional)
- `details` (object, conditional)
- `message` (string, conditional)
- `source` (string, conditional)

### 429 

Too many requests

### 500 Internal Server Error

Service unavailable
