Changelog
The following lists the backwards-incompatible changes to Airwallex's API.
To avoid breaking existing integrations, all backwards-incompatible changes are covered by versioning. See the previous section for further details.
It includes a list of all affected endpoints to assist in identifying any migration work required. Please refer to the relevant version's documentation for full details of each affected endpoint's new contract.
If you have further questions or concerns please contact our support team.
2026-07-17
-
country_codeis now required in the account address objects below. Previouslycountry_codewas optional in these addresses; requests that omit it in the cases described are now rejected with a validation error, ensuring a country can always be determined for each provided address.Affected endpoints:
- POST
/api/v1/accounts/create - POST
/api/v1/accounts/{id}/update
Changes:
account_details.business_details.business_address.country_code: now required for non-registered sole proprietors and businesses that do not have a business registration country (on update, whenbusiness_addressis provided).account_details.business_details.registration_address.country_code: now required for all business types except non-registered sole proprietors and businesses that do not have a business registration country. If the business has no registration country, provide it inbusiness_address.country_codeinstead (on update, whenregistration_addressis provided).account_details.individual_details.residential_address.country_code: now required (on update, whenresidential_addressis provided).
- POST
-
The standalone
lifecycle_idis removed from the Issuing Authorizations and Transactions APIs. Its value is now provided by thecard_transaction_dataobject — which is available across all API versions — as itscard_transaction_lifecycle_idchild, alongside the other card transaction identifiers.Affected endpoints:
- GET
/api/v1/issuing/authorizations, request and response - GET
/api/v1/issuing/authorizations/{id}, response only - GET
/api/v1/issuing/transactions, request and response - GET
/api/v1/issuing/transactions/{id}, response only
Changes:
lifecycle_id: removed from the response. Its value is now returned ascard_transaction_data.card_transaction_lifecycle_id.lifecycle_id: removed as a query parameter from the List authorizations and List transactions endpoints.card_transaction_data: not new to this version — this object is available across all API versions and carries the card transaction identifiers for each authorization and transaction (omitted for transactions created before January 2025). It contains:card_transaction_lifecycle_id: links related transactions belonging to the same card payment — such as authorizations, reversals, captures, and refunds — under a single lifecycle. Same value as the removedlifecycle_id.card_transaction_id: identifier of the card transaction. Retrieve its details via GET/api/v1/issuing/card_transactions/{id}.card_transaction_event_id: identifier of the individual card transaction event within the lifecycle; the closest equivalent of thetransaction_idfield.
- GET
-
Issuing webhook events now carry a
card_transaction_dataobject with the card transaction identifiers, so you can correlate webhook payloads with the Card Transactions model (Lifecycle → Card Transaction → Transaction Event) without subscribing to new event types. The object is omitted for events raised on a transaction created before January 2025 (one with no card transaction identifiers).Affected webhook events:
issuing.transaction.succeededissuing.transaction.failedissuing.transaction_dispute.createdissuing.transaction_dispute.submittedissuing.transaction_dispute.acceptedissuing.transaction_dispute.rejectedissuing.transaction_dispute.cancelledissuing.transaction_dispute.expiredissuing.transaction_dispute.wonissuing.transaction_dispute.lostissuing.transaction_dispute.modified
Changes:
data.card_transaction_data: added to each event above. It contains the same child items returned by the Authorizations and Transactions APIs:card_transaction_lifecycle_id: the card transaction lifecycle identifier (same value as the oldlifecycle_id).card_transaction_id: identifier of the card transaction. Retrieve its details via GET/api/v1/issuing/card_transactions/{id}.card_transaction_event_id: identifier of the individual card transaction event within the lifecycle.
2026-06-30
-
Specific
risk_declinedcases are now returned with more accurate error codes:Affected endpoints:
- POST
/api/v1/pa/payment_intents/create - POST
/api/v1/pa/payment_intents/{id}/confirm - POST
/api/v1/pa/payment_intents/{id}/confirm_continue
Changes:
operation_above_limit: returned (instead ofrisk_declined) when the payment attempt count exceeds the configured limit per intent.validation_error: returned (instead ofrisk_declined) whendevice_idis not a valid UUID.
- POST
-
terminal_idinterminal_info(under bothpayment_method.cardandpayment_method.card_present) is renamed toterminal_identifier. The field represents the 8-digit alphanumeric identifier sent to the card scheme, not the Airwallex Terminal resource ID; the new name avoids that confusion.Affected endpoints:
/api/v1/pa/payment_intents/*/api/v1/pa/payment_attempts/*
Changes:
payment_method.card.terminal_info.terminal_id: renamed topayment_method.card.terminal_info.terminal_identifierpayment_method.card_present.terminal_info.terminal_id: renamed topayment_method.card_present.terminal_info.terminal_identifier
-
The
payment_method.card.three_dsnode is removed from API requests.payment_method.card.three_ds.return_urlis replaced by the top-levelreturn_url; all other fields in the node were already deprecated and unused.Affected endpoints:
- POST
/api/v1/pa/payment_intents/create - POST
/api/v1/pa/payment_intents/{id}/confirm
Changes:
payment_method.card.three_ds: removed from the request (use top-levelreturn_url).
- POST
-
Timestamp fields in responses now use the ISO-8601 standard timezone offset format
+00:00instead of the legacy+0000. For example,2024-06-15T10:30:00+0000is now returned as2024-06-15T10:30:00+00:00. Date-only fields (YYYY-MM-DD) are unaffected.Affected endpoints:
- All Payment Acceptance endpoints returning timestamp fields (e.g.
created_at,updated_at).
- All Payment Acceptance endpoints returning timestamp fields (e.g.
-
The settlement
idresponse field is renamed tosettlement_id.Affected endpoints:
- GET
/api/v1/pa/financial/settlements - GET
/api/v1/pa/financial/settlements/{id} - GET
/api/v1/pa/financial/settlements/{id}/report
Changes:
id: renamed tosettlement_idin the settlement list, settlement retrieve, and settlement report responses.
- GET
-
The
versionquery parameter is removed from the Get a settlement report endpoint, as the old version is deprecated. The report is always generated using the latest report version.Affected endpoints:
- GET
/api/v1/pa/financial/settlements/{id}/report
Changes:
version: removed from the request query parameters.
- GET
-
The Get a settlement report by ID API gains a
report_statusfield. If the report is available,report_statusREADYand a populatedreport_urlis returned. Otherwise the report is generated withreport_statusIN_PROGRESS;report_urlis populated once the report reachesREADY.Affected endpoints:
- GET
/api/v1/pa/financial/settlements/{id}/report
Changes:
report_status: added to the response.READYwhen the report is available;IN_PROGRESSwhile it is being generated.- If the report is not yet available, it is generated;
report_urlis populated oncereport_statusisREADY.
- GET
-
The datetime filter query parameters on the List payment disputes endpoint now require a valid timezone-aware ISO 8601 value. Previously, a value that could not be parsed as ISO 8601 silently fell back to local datetime parsing, ignoring the timezone; such values are now rejected with a validation error.
Affected endpoints:
- GET
/api/v1/pa/payment_disputes
Changes:
from_due_at,to_due_at,from_updated_at,to_updated_at,from_created_at,to_created_at: an invalid datetime value now returns a validation error instead of falling back to local datetime parsing. Provide timezone-aware ISO 8601 values (e.g.2026-01-27T14:30:00Zor2026-01-27T14:30:00+08:00).
- GET
-
Introduced
failureobject under Transfers resource to provide transfer failure detailsAffected endpoints:
- GET
/api/v1/transfers(response only) - GET
/api/v1/transfers/{id}(response only) - POST
/api/v1/transfers/create(response only) - POST
/api/v1/transfers/{id}/confirm_funding(response only)
Changes:
- Replaced
failure_reasonandfailure_typewith a newfailureobject, which contains failure code, message, and details.
- GET
-
Introduced
failure_detailsin thefundingobject under Transfers and Batch Transfers resources to provide funding failure details Affected endpoints:- GET
/api/v1/transfers(response only) - GET
/api/v1/transfers/{id}(response only) - POST
/api/v1/transfers/create(response only) - POST
/api/v1/transfers/{id}/confirm_funding(response only) - GET
/api/v1/batch_transfers(response only) - GET
/api/v1/batch_transfers/{id}(response only) - POST
/api/v1/transfers/{id}/add_items(response only) - POST
/api/v1/transfers/{id}/delete(response only) - POST
/api/v1/transfers/{id}/delete_items(response only) - POST
/api/v1/transfers/{id}/quote(response only) - POST
/api/v1/transfers/{id}/submit(response only) - POST
/api/v1/transfers/{id}/create(response only)
Changes:
- Replaced
failure_reasonwithfailure_detailsin thefundingobject.
- GET
2026-05-29
-
customer_data_collection.enabledis removed from Billing Checkout APIs. New enum fieldscustomer_data_collection.tax_idandcustomer_data_collection.billing_addressare added.Affected endpoints:
- POST
/api/v1/billing_checkouts/create - GET
/api/v1/billing_checkouts/{id} - GET
/api/v1/billing_checkouts - POST
/api/v1/billing_checkouts/{id}/update - POST
/api/v1/billing_checkouts/{id}/cancel
Changes:
customer_data_collection.enabled: removedcustomer_data_collection.tax_id: added enum field (DISABLED,OPTIONAL_IF_SUPPORTED,REQUIRED_IF_SUPPORTED; Default:OPTIONAL_IF_SUPPORTED)customer_data_collection.billing_address: added enum field (AUTO,REQUIRED; Default:AUTO)
- POST
2026-02-27
-
Updated
statusof financial reports to indicateFAILEDwhen report generation process had failed. This is distinct from the previousPENDINGstate, which now indicates that the report generation is still in progress.Affected endpoints:
- GET
/api/v1/finance/financial_reports(response only) - GET
/api/v1/finance/financial_report/{id}(response only) - POST
/api/v1/finance/financial_reports/create(response only)
- GET
2025-11-11
-
In this version, the meaning of the field
external_idon the Payment Source resource has changed from referencing a Payment Consent ID to referencing a Payment Method ID.Affected endpoints:
- POST
/api/v1/payment_sources/create - GET
/api/v1/payment_sources/{id} - GET
/api/v1/payment_sources - (Sandbox Only) POST
/api/v1/simulation/billing/payment_sources/{id}/fail_next_autocharge
Changes:
external_idaccepts a Payment Method ID instead of a Payment Consent ID.
- POST
2025-09-30
-
This version includes major changes to the Account Capability resource, notably relating to the querying of available funding limit or Faster Direct Debit limit.
-
Introduced new parameters to allow querying for future funding limits and funding limits of specific mandate types.
Affected endpoints:
- GET
/api/v1/account_capabilities/funding_limits, request and response
Changes:
- Added new
effective_atfield. - Added new
mandate_typefield.
- GET
-
Updated response to include more details on funding limit.
Affected endpoints:
- GET
/api/v1/account_capabilities/funding_limits, response only
Changes:
- Replaced the
availablefield with anavailablesobject. This object maps the key that is the direct debitschemeto the available funding limit for that scheme.
- GET
-
Renamed pagination parameters.
Affected endpoints:
- GET
/api/v1/account_capabilities/funding_limits, request only
Changes:
- Renamed
pageNumfield topage_num. - Renamed
pageSizefield topage_size.
- GET
-
Updated
sourceandamountfor balance activity wheresource_typeisISSUING:source: Change value from Retrieval Reference Number to Issuing transaction'stransaction_idamount: Invert sign wheretransaction_typeisISSUING_AUTHORISATION_HOLDorISSUING_AUTHORISATION_RELEASEto properly report on available balance changes
Affected endpoints:
- GET
/api/v1/balance/history(response only)
2025-08-29
-
In this version, we introduce several improvements to the Billing APIs, including enhanced pagination, a new subscription duration parameter, and clearer representation of tiered invoice line items. We also add new features, such as:
- In Billing Checkout, support of collecting one-off payments; collecting and saving a payment method for future payments.
- Support of creating one-off invoices with existing payment sources and a simulation API to facilitate testing of payments.
- A new API to simulate auto-charge behavior in the sandbox environment.
-
Pagination update for search endpoints of Billing.
Affected endpoints for both request and response:
- GET
/api/v1/billing_customers - GET
/api/v1/billing_transactions - GET
/api/v1/invoices - GET
/api/v1/invoices/{id}/line_items - GET
/api/v1/payment_sources - GET
/api/v1/prices - GET
/api/v1/products - GET
/api/v1/subscriptions - GET
/api/v1/subscriptions/{id}/items - GET
/api/v1/billing_checkouts
Changes:
- Replaced
page_numwithpagein request payload. - Replaced
has_morewithpage_beforeandpage_afterin response payload. - From this API version onward, changes above will be available generally; for earlier API versions, this feature is not enabled by default. Access is provided on a request basis.
- GET
-
Subscription model and API updates: we have updated the representation of subscription duration to make it clearer and easier to use.
Affected endpoints:
- POST
/api/v1/subscriptions/create(request and response) - POST
/api/v1/subscriptions/{id}/update(request and response) - GET
/api/v1/subscriptions/{id}(response only) - GET
/api/v1/subscriptions(response only) - POST
/api/v1/subscriptions/{id}/cancel(response only) - POST
/api/v1/invoices/preview(request only) - POST
/api/v1/billing_checkouts/create(request and response) - GET
/api/v1/billing_checkouts/{id}(response only) - GET
/api/v1/billing_checkouts(response only) - POST
/api/v1/billing_checkouts/{id}/update(response only) - POST
/api/v1/billing_checkouts/{id}/cancel(response only)
Changes:
- Removed
total_billing_cyclesandremaining_billing_cyclesfrom the Subscription object, now replaced byduration. - Replaced
recurringandtotal_billing_cyclesparameters with a singledurationfield in Create/Update Subscription requests, allowing developers to explicitly define the subscription length. - Replaced
total_billing_cycleswithdurationin thesubscription_dataof the Billing Checkout resource and corresponding create request. - Renamed the
cancel_atfield toends_atin the Subscription model. - From this API version onward, changes above will be available generally; for earlier API versions, this feature is not enabled by default. Access is provided on a request basis.
- POST
-
Introduce a new simulation API to simulate auto-charge behaviors in the sandbox environment.
New endpoint:
- POST
/api/v1/simulation/billing/payment_sources/{id}/fail_next_autocharge
Changes:
- This API allows developers to simulate a failure of the next auto-charge attempt for a payment source. It is available only in the sandbox environment.
- POST
-
Introduced enhancements to Invoice APIs to support creating one-off invoices with automatic charging using existing Payment Sources.
Affected endpoints:
- POST
/api/v1/invoices/create(request and response) - POST
/api/v1/invoices/{id}/update(request and response) - GET
/api/v1/invoices/{id}(response only) - GET
/api/v1/invoices(response only) - POST
/api/v1/invoices/{id}/finalize(response only) - POST
/api/v1/invoices/{id}/mark_as_paid(response only) - POST
/api/v1/invoices/{id}/void(response only) - POST
/api/v1/invoices/{id}/add_line_items(response only) - POST
/api/v1/invoices/{id}/update_line_items(response only) - POST
/api/v1/invoices/{id}/delete_line_items(response only)
Changes:
- Added a new enum value
AUTO_CHARGEfor thecollection_methodfield. - Added a new
payment_source_idfield to enable automatic charging with an existing Payment Source.
- POST
-
Improved Invoice Line Item APIs to provide more detailed price information.
Affected endpoints:
- GET
/api/v1/invoices/{id}/line_items/{item_id}(response only) - GET
/api/v1/invoices/{id}/line_items(response only)
Changes:
- Added a
labelfield to the Invoice Line Item object to indicate what the charge is for. This is especially useful forGRADUATEDtiered prices, which may generate multiple Invoice Line Items.
- GET
-
Introduced
PAYMENTmode andSETUPmode to Billing Checkout.PAYMENTmode: collect a one-off payment and generate an invoice.SETUPmode: collect and save a payment method for future use as a Payment Source.
Affected endpoints:
- POST
/api/v1/billing_checkouts/create - GET
/api/v1/billing_checkouts/{id}(response only) - GET
/api/v1/billing_checkouts(response only) - POST
/api/v1/billing_checkouts/{id}/update(response only) - POST
/api/v1/billing_checkouts/{id}/cancel(response only)
Changes:
- Added a
modefield to specify the intended outcome of the Billing Checkout:SUBSCRIPTION,PAYMENT, orSETUP. - Added an
invoice_idfield to reference the invoice created upon completion inPAYMENTmode. - Added an
invoice_dataobject field to configure invoice creation settings when usingPAYMENTmode.
-
Updated Subscription and Invoice webhooks (refer to webhook event types for more details)
2025-06-30
-
This version includes major changes to the Transfers resources, notably relating to the new scheduled transfer experience for the pre-funding settlement model, and an update to the beneficiary schema for US ACH transfers.
-
Introduced a new
lock_rate_on_createfield to denote whether to lock the conversion rate for a scheduled transfer upon creation.Affected endpoints:
- POST
/api/v1/transfers/create, request and response - POST
/api/v1/transfers/validate, request only - GET
/api/v1/transfers/{id}, response only - GET
/api/v1/transfers, response only
Changes:
- Added a boolean
lock_rate_on_createfield to denote whether to lock the conversion rate for a scheduled transfer. This field should only be specified when a conversion is involved. The value can beTRUEorFALSE. If not specified, the default value isTRUE. - If
TRUE: The transfer is created with a confirmed conversion rate and prepayment. Details are provided in theconversionandprepaymentobjects. The remaining transfer amount will be deducted on the transfer date. - If
FALSE: The transfer is created without a confirmed conversion rate, and no funds are deducted at creation. The conversion rate will be confirmed and funds will be deducted on the transfer date. - From this API version onward, changes above will be available generally; for earlier API versions, this feature is not available.
- POST
-
Introduced new
conversionandprepaymentobjects.Affected endpoints:
- POST
/api/v1/transfers/create, response only - GET
/api/v1/transfers/{id}, response only - GET
/api/v1/transfers, response only
Changes:
- Added a new
prepaymentobject with the following details of the scheduled transfer prepayment. amount: The prepayment amount to be paid.currency: The prepayment currency.- Replaced
conversion_idwithconversionobject, which contains the following details of the underlying conversion of a transfer. rate: The rate of the conversion.currency_pair: The currency pair of the conversion.- From this API version onward, changes above will be available generally; for earlier API versions, changes above are not available.
- POST
-
Updated Transfer webhooks (refer to webhook payload examples for more details)
-
Introduced
bank_account_categoryfor US ACH transfers to specify bank account type.Affected endpoints:
- POST
/api/v1/beneficiaries/create, request and response - POST
/api/v1/beneficiaries/update/{id}, request and response - POST
/api/v1/beneficiaries/validate, request only - POST
/api/v1/beneficiary_api_schemas/generate, response only - POST
/api/v1/beneficiary_form_schemas/generate, response only - POST
/api/v1/transfers/create, request and response - POST
/api/v1/transfers/validate, request only - POST
/api/v1/transfers/{id}/confirm_funding, response only - POST
/api/v1/batch_transfers/{id}/add_items, request only - GET
/api/v1/beneficiaries, response only - GET
/api/v1/beneficiaries/{id}, response only - GET
/api/v1/transfers, response only - GET
/api/v1/transfers/{id}, response only - GET
/api/v1/batch_transfers/{id}/items, response only
Changes:
- Where
bank_country_codeis US,transfer_methodsis LOCAL,local_clearing_systemis ACH / NEXT_DAY_ACH andaccount_currencyis USD:bank_account_categoryis now required
- POST
-
Beneficiaries created using POST
/api/v1/beneficiaries/createon a previous API version will be compatible with this version by defaulting to CHECKING without updating to the new schema. However, to update an existing beneficiary by calling POST/api/v1/beneficiaries/update/{beneficiary_id}, you will need to follow the new schema. -
Introduced
account_typeunderus_bankobject to specify bank account type for US Linked AccountsAffected endpoints:
- POST
/api/v1/linked_accounts/create, request and response - GET
/api/v1/linked_accounts, response only - GET
/api/v1/linked_accounts/{id}, response only - POST
/api/v1/linked_accounts/{id}/verify_microdeposits, response only
Changes:
- Where
typeisUS_BANKandpreferred_verification_typeisMICRO_DEPOSIT:- account_type is now required.
- US Linked Accounts created using POST
/api/v1/linked_accounts/createon a previous API version will be compatible with this version by defaulting to CHECKING without updating to the new schema.
- POST
2025-06-16
-
This version includes major changes to Billing APIs via the following new resources:
- Billing Customers, Payment Sources, and Billing Transactions to better abstract the payment provider resources from the billing software resources.
- Billing Checkouts to create an Airwallex-hosted checkout page where customers can pay for items or save payment details for future use.
- Credit Notes to adjust the amount of a finalized invoice by refund.
Additionally, it introduces changes to the Subscriptions, Subscription Items, Invoices, and Invoice Items to provide enhanced features.
-
This version includes major changes to Billing APIs. It introduces new resources like Billing Customers, Payment Sources, and Billing Transactions to better abstract the payment provider resources from the billing software resources, and a new resources Billing Checkouts to create an Airwallex-hosted checkout page where customers can pay for items or save payment details for future use. Additionally, it introduces changes to the Subscriptions, Subscription Items, Invoices, and Invoice Items to provide enhanced features.
-
Introduced new Billing Customers resource – A new resource representing customers in Billing, separate from the Payment Acceptance customers. Billing Customers store customer data for billing purposes and link to invoices and subscriptions.
New endpoints:
- GET
/api/v1/billing_customers - POST
/api/v1/billing_customers/create - GET
/api/v1/billing_customers/{id} - POST
/api/v1/billing_customers/{id}/update
Changes:
- Replaced the use of
customer_id(Payment Acceptance Customer ID) withbilling_customer_idacross Billing API endpoints (e.g. in Subscriptions and Invoices APIs). - Billing Customer ID is now required when creating subscriptions or invoices, and is used to filter results when listing these resources.
- From this API version onward, changes above will be available generally; for earlier API versions, this feature is not enabled by default. Access is provided on a request basis.
- GET
-
Introduced Payment Source resource – A new resource for managing a customer’s saved funding source for billing. A Payment Source can be created from a verified payment consent and used for future charges in subscriptions or invoices.
New endpoints:
- GET
/api/v1/payment_sources - POST
/api/v1/payment_sources/create - GET
/api/v1/payment_sources/{id}
Changes:
- Payment Sources replace the direct use of Payment Consents in the Billing API. For example, subscription creation now uses a Payment Source ID instead of a Payment Consent ID.
- From this API version onward, changes above will be available generally; for earlier API versions, this feature is not enabled by default. Access is provided on a request basis.
- GET
-
Introduced Billing Transactions resource – A new read-only resource that records transactions related to invoices.
New endpoints:
- GET
/api/v1/billing_transactions - GET
/api/v1/billing_transactions/{id}
Changes:
- Added the Billing Transactions list and retrieve endpoints. Each Billing Transaction represents a financial transaction on an invoice.
- Billing Transaction objects include details such as the related invoice ID, transaction amount, currency, type of transaction, and status (e.g. completed or pending).
- These endpoints are read-only; transactions are created by the system, for instance, when an invoice is paid.
- From this API version onward, changes above will be available generally; for earlier API versions, this feature is not enabled by default. Access is provided on a request basis.
- GET
-
Introduced new Billing Checkouts resource – A new resource manages the setup and lifecycle of an Airwallex-hosted customer checkout experience, enabling customers to confirm and pay for line items or set up payment details for future transactions.
New endpoints:
- POST
/api/v1/billing_checkouts/create - GET
/api/v1/billing_checkouts/{id} - GET
/api/v1/billing_checkouts - POST
/api/v1/billing_checkouts/{id}/update - POST
/api/v1/billing_checkouts/{id}/cancel
- POST
-
Subscription API updates (collection methods and scheduling) – The Subscription endpoints have been enhanced to support multiple collection methods and flexible start times.
Affected endpoints:
- GET
/api/v1/subscriptions(request and response) - POST
/api/v1/subscriptions/create(request and response) - GET
/api/v1/subscriptions/{id}(response only) - POST
/api/v1/subscriptions/{id}/update(request and response) - GET
/api/v1/subscriptions/{id}/items/{item_id}(response only) - GET
/api/v1/subscriptions/{id}/items(response only)
Changes:
- Added a few new fields to Subscription resource and endpoint requests correspondingly:
- Added a new required field
collection_methodto specify how payments are collected. Supported values:AUTO_CHARGE(automatically charge a saved Payment Source each cycle),CHARGE_ON_CHECKOUT(generate an invoice for manual payment via hosted invoice page), orOUT_OF_BAND(payments handled outside of Airwallex). - Introduced
billing_customer_idin place of the old customer identifier. All subscriptions must reference a Billing Customer ID (see new Billing Customers resource). - Introduced
payment_source_id(required whencollection_method=AUTO_CHARGE) to indicate which Payment Source to charge every billing cycle (this replaces the previouspayment_consent_idfield). For manual invoice collection, addedlinked_payment_account_id(required whencollection_method=CHARGE_ON_CHECKOUT) to specify which account will be used as payment account. - Added optional fields
days_until_due(grace period from invoice issuance to due date, for manual payments; defaults to 0),default_tax_percent(default tax rate to apply to generated invoices), anddefault_invoice_template(to specify settings for generated invoices). These allow configuring invoice payment terms and appearance per subscription. - Added
starts_atto allow scheduling a subscription to begin at a future date/time. A subscription created with a future start time will now be in a newPENDINGstatus until it commences (or until a trial starts). - Introduced a new
PENDINGsubscription status (for not-yet-started subscriptions). The overall subscription status lifecycle remains the same for trials and payment failures (IN_TRIAL,ACTIVE,UNPAID,CANCELLED), with the addition ofPENDINGas a preliminary status. - Renamed some fields
current_period_start_atrenamed tocurrent_period_starts_at.current_period_end_atrenamed tocurrent_period_ends_at.trial_start_atrenamed totrial_starts_at.trial_end_atrenamed totrial_ends_at.
- Removed
request_idfrom the Subscription resource in the API responses.
- Added a new required field
- From this API version onward, changes above will be available generally; for earlier API versions, this feature is not enabled by default. Access is provided on a request basis.
- GET
-
Invoice API enhancements (one-off invoices & payment status) – You can now create invoices that are not generated from subscriptions (true one-off invoices), run them through a draft to finalise lifecycle, and your customer can pay online when the collection method is
CHARGE_ON_CHECKOUT. Invoice Item resource is now renamed to Invoice Line Item, and users can now add, update, or remove multiple line items on a draft one-off invoice through dedicated endpoints.New endpoints:
- POST
/api/v1/invoices/create - POST
/api/v1/invoices/{id}/update - POST
/api/v1/invoices/{id}/finalize - POST
/api/v1/invoices/{id}/void - POST
/api/v1/invoices/{id}/delete - POST
/api/v1/invoices/{id}/mark_as_paid - GET
/api/v1/invoices/{id}/line_items/{invoice_line_item_id} - GET
/api/v1/invoices/{id}/line_items - POST
/api/v1/invoices/{id}/add_line_items - POST
/api/v1/invoices/{id}/update_line_items - POST
/api/v1/invoices/{id}/delete_line_items
Removed endpoints:
- GET
/api/v1/invoices/{id}/items/{item_id} - GET
/api/v1/invoices/{id}/items
Affected endpoints:
- GET
/api/v1/invoices(request and response) - GET
/api/v1/invoices/{id}(response only) - POST
/api/v1/invoices/preview(request and response)
Changes:
- Invoices can now be created via API in a
DRAFTstate (using the new create endpoint). A draft invoice can be edited and must be explicitly finalized to issue the invoice. Once finalized, the invoice status changes toFINALIZED(which replaces the previous “Sent” concept). - You can now add, update, or remove multiple line items on a
DRAFTstate one-off invoice through Invoice Line Item endpoints. - It is now possible to delete an invoice that is in
DRAFTstatus. Deleting a draft removes the invoice record; this operation is only allowed for invoices that have not been finalized. - Introduced an endpoint to cancel a finalized invoice. A voided invoice moves to a
VOIDEDstatus, indicating it has been canceled and will not be collected. - The invoice object now has a refined
statusfield and a newpayment_statusfield. Invoice status may beDRAFT,FINALIZED, orVOIDED. Thepayment_statusfield indicates whether the invoice has been paid, with possible valuesUNPAIDorPAID. (An invoice that was formerly classified as “PAYMENT_FAILED” will now remainFINALIZEDwithpayment_status=UNPAIDafter all payment attempts.) - The query parameter
customer_idfor listing invoices has been replaced withbilling_customer_id. Additionally, the list/filter API for invoices now accepts astatusfilter (using the new status values) and apayment_statusfilter. The old invoice status valuesSENTandPAYMENT_FAILEDare no longer used; instead, clients should rely on the new status andpayment_statusfields. - Removed
period_start_atandperiod_end_aton Invoice resource. - Added new fields to Invoice resource for new features:
- Added
legal_entity_id,collection_method,payment_source_id,linked_account_id,paid_out_of_bandto Invoice resource for indicating payment information. - Added
hosted_url,pdf_urlto provide urls for hosted online payment and PDF download. - Added
numberandmemoto indicate the invoice number and memo. - Added
paid_at,finalized_at,voided_at,due_at,days_until_dueto indicate times of operation or events. - Added
days_until_dueto support a delay between finalizing invoice and due. - Added
total_tax_amount.
- Added
- From this API version onward, changes above will be available generally; for earlier API versions, this feature is not enabled by default. Access is provided on a request basis.
- POST
-
Introduced new Credit Notes resource – A new resource for issuing refunds for returned goods, correcting pricing or quantity errors, and handling overpayments or other discrepancies of a finalized invoice.
New endpoints:
- POST
/api/v1/credit_notes/create - GET
/api/v1/credit_notes/{id} - GET
/api/v1/credit_notes - POST
/api/v1/credit_notes/{id}/update - POST
/api/v1/credit_notes/{id}/finalize - POST
/api/v1/credit_notes/{id}/delete - POST
/api/v1/credit_notes/{id}/void
- POST
-
Introduced new Credit Note Line Items resource – A new resource for managing line items within credit notes. Credit note line items can be linked to invoice line items or be created independently.
New endpoints:
- GET
/api/v1/credit_notes/{id}/line_items/{line_item_id} - GET
/api/v1/credit_notes/{id}/line_items - POST
/api/v1/credit_notes/{id}/add_line_items - POST
/api/v1/credit_notes/{id}/update_line_items - POST
/api/v1/credit_notes/{id}/delete_line_items
- GET
-
Pricing model updates – The Price resource has new billing attributes and updated pricing model options.
Affected endpoints:
- GET
/api/v1/prices(response only) - POST
/api/v1/prices/create(request and response) - GET
/api/v1/prices/{id}(response only) - POST
/api/v1/prices/{id}/update(request and response)
Changes:
- Added a new field
billing_typefor recurring prices, indicating when the price is billed. Allowed values areIN_ADVANCE(bill at the start of each billing cycle) orIN_ARREARS(bill at the end of the cycle). This field appears in Price responses and can be set for recurring prices. - Updated the
pricing_modelenumeration toPER_UNIT,FLAT,GRADUATED, andVOLUME. The previously used model namesper_unit,volume,tieredandstairstephave been deprecated and consolidated under these new models. - Added
flat_amountas a field for FLAT pricing (specifies the flat charge amount). The fieldunit_amountremains for per-unit pricing and is now explicitly applicable only toPER_UNITmodels. Bothflat_amountandunit_amountare optional or required depending on the chosen pricing model. - Added
created_atandupdated_atfields to indicate creation and last updated time. - Removed
request_idfrom the Price resource in the endpoint responses, and removedrequest_idfrom the request of Update Price endpoint. - From this API version onward, changes above will be available generally; for earlier API versions, this feature is not enabled by default. Access is provided on a request basis.
- GET
-
Product update
Affected endpoints:
- POST
/api/v1/products/create(response only) - GET
/api/v1/products/{id}(response only) - POST
/api/v1/products/{id}/update(response only) - GET
/api/v1/products(response only)
Changes:
- Added
created_atandupdated_atfields to indicate creation and last updated time. - Removed
request_idfrom the Product resource in the API responses, and removedrequest_idfrom the request of update Product endpoint. - From this API version onward, changes above will be available generally; for earlier API versions, this feature is not enabled by default. Access is provided on a request basis.
- POST
-
Billing webhooks are updated based on the new life cycle of resources.
- Added new webhook events:
invoice.createdinvoice.finalizedinvoice.voidedinvoice.payment.paidsubscription.in_trialsubscription.activesubscription.unpaidsubscription.modifiedbilling_transaction.createdbilling_transaction.succeededbilling_transaction.cancelledbilling_checkout.createdbilling_checkout.cancelledbilling_checkout.completedcredit_note.createdcredit_note.finalizedcredit_note.voided
- Deprecated webhook events:
invoice.sentinvoice.paidinvoice.payment_failedinvoice.payment_attempt_failedsubscription.updated
- Added new webhook events:
2025-04-25
-
This version includes major changes to the Transfers, Beneficiaries, Global Accounts, and Deposits resources. The previously beta-released Wallet Transfers resource has been deprecated and replaced by the unified Transfers resource, which now supports both bank and wallet transfers.
-
Introduced a new Digital Wallet beneficiary type to Transfers and Beneficiaries under Payouts.
Affected endpoints:
- POST
/api/v1/transfers/create, request and response - POST
/api/v1/transfers/validate, request only - GET
/api/v1/transfers/{id}, response only - GET
/api/v1/transfers, response only - GET
/api/v1/beneficiaries, request and response - GET
/api/v1/beneficiaries/{id}, response only - POST
/api/v1/beneficiaries/create, request and response - POST
/api/v1/beneficiaries/{id}/update, request and response - POST
/api/v1/beneficiaries/validate, request only
Changes:
- Added a new field
typeunder thebeneficiaryobject, with possible values ofBANK_ACCOUNTorDIGITAL_WALLET - Added a new nested
digital_walletobject within thebeneficiaryobject when the beneficiary type is Digital Wallet. Required fields are as follows: account_name: account holder name of the beneficiary’s digital walletid_type: account identifier type of the beneficiary’s digital walletid_value: account identifier value of the beneficiary’s digital walletprovider: service provider of the beneficiary's digital wallet
- POST
-
Updated parameters according to Bank Account and Digital Wallet beneficiary types.
Affected endpoints:
- POST
/api/v1/beneficiary_api_schemas/generate, request and response - POST
/api/v1/beneficiary_form_schemas/generate, request and response
Changes:
- Added
typeto Bank Account request parameters - Added
providerandtypeto Digital Wallet request parameters - Newly added parameters are also returned in the
conditionobject in the response
- POST
-
Introduced a new interim status for in-progress Global Account creations to Global Accounts under Core Resources.
Affected endpoints:
- GET
/api/v1/global_accounts, response only - GET
/api/v1/global_accounts/{id}, response only - POST
/api/v1/global_accounts/{id}/close, response only - POST
/api/v1/global_accounts/{id}/update, response only - POST
/api/v1/global_accounts/create, response only
Changes:
- Added
PROCESSINGunder status in response body. Subscribe to Global Account status webhooks for subsequent changes
- GET
-
Introduced a new reason field for failed Global Account creations.
Affected endpoints:
- GET
/api/v1/global_accounts, response only - GET
/api/v1/global_accounts/{id}, response only - POST
/api/v1/global_accounts/{id}/update, response only
Changes:
- Added
failure_reasonto response body - Updated
INACTIVEtoFAILEDin response body
- GET
-
Introduced and updated reason fields for closed Global Accounts.
Affected endpoints:
- GET
/api/v1/global_accounts, response only - GET
/api/v1/global_accounts/{id}, response only - POST
/api/v1/global_accounts/{id}/close, response only - POST
/api/v1/global_accounts/{id}/update, response only
Changes:
- Added new
close_reasonfor closures initiated by the financial institution. - Updated descriptions and recommended next steps for other
close_reasonvalues.
- GET
-
Added new webhook events.
global_account.activeglobal_account.closedglobal_account.failed
-
Deprecated webhook event.
ga.new
-
Introduced new Digital Wallet Transfer deposit type and Aggregate Funds deposit type to Deposits under Core Resources.
Affected endpoint:
- GET
/api/v1/deposits/{id}, response only - GET
/api/v1/deposits, response only
Changes:
- Added new
typeofDIGITAL_WALLET_TRANSFERandAGGREGATE_FUNDS - Added a new nested
digital_walletobject within thepayerobject when the deposit type isDIGITAL_WALLET_TRANSFERorAGGREGATE_FUNDSwith the following fields: account_name: account name of the payer’s digital walletid_type: account identifier type of the payer’s digital walletid_value: account identifier value of the payer’s digital walletprovider: service provider of the payer’s digital wallet
- GET
-
Introduced a new Get supported financial institutions API endpoint to return supported beneficiary financial institutions for a provided transfer method.
New endpoint:
- POST
/api/v1/beneficiary_api_schemas/supported_financial_institutions
Changes:
- From this API version onward, this endpoint will be available generally. See details in this endpoint’s specifications below
- For earlier API versions, this feature is not enabled by default. Access is provided on a request basis
- POST
-
Updated the UI definitions in the form schema for bank-code-type fields (e.g.,
account_routing_value1,swift_code) under beneficiary bank details.Affected endpoint:
- POST
/api/v1/beneficiary_api_schemas/generate, response only
Changes:
- For bank-code-type fields, the
typeattribute has been updated from "INPUT" to "SELECT" or "DYNAMIC_SELECT" to suggest a dropdown UI element to select a bank - When the
typeis "SELECT", an array of labels and values will be returned underoptions - When the
typeis "DYNAMIC_SELECT", the full bank list cannot be retrieved all at once, and a set of API definitions and request parameters will be returned underdynamic_options, suggesting leveraging the Get supported financial institutions API to render the bank list. The following attributes will be included in this object:query_params: An array of request parameters to use in the new API endpoint with definitionsquery_params.name: The key of the request parameter in the new API endpointquery_params.pattern: Format requirement in regular expressionquery_params.value_of: The path to a field in this current APIquery_url: Relative URL of the new API endpoint
- From this API version onward, changes above will be available generally; for earlier API versions, this feature is not enabled by default. Access is provided on a request basis
- POST
-
Added a new
dispatch_infoobject under the Transfers resource. Only available for some transfer methods after the transfer is created.Affected endpoints:
- GET
/api/v1/transfers/{id}, response only - GET
/api/v1/transfers, response only
Changes:
dispatch_infowill be populated in the transfer resource and the webhook event bodies when available. The following fields will be included:external_reference: A reference ID to track a transfer after it's dispatched from Airwallexexternal_reference_type: The definition of theexternal_referencein the payment system
- From this API version onward, changes above will be available generally; for earlier API versions, this feature is not enabled by default. Access is provided on a request basis
- GET
-
Updated Transfer and Deposit webhooks (refer to webhook event types for more details)
-
Update transfer error code
request_id_duplicatetoduplicate_request_idin alignment with the latest Airwallex API convention
2025-02-14
-
Renamed the status
SUCCEEDEDtoSETTLEDunder Refund.Affected endpoints:
- GET
/api/v1/pa/refundsrequest and response - POST
/api/v1/pa/refunds/createresponse only - GET
/api/v1/pa/refunds/{id}response only
Affected Webhook:
- Renamed
refund.succeededtorefund.settled
- GET
-
Moved channel specific data to a unified
additional_infofield under PaymentIntent.Affected endpoints:
- POST
/api/v1/pa/payment_intents/createrequest and response - GET
/api/v1/pa/payment_intents/{id}response only - POST
/api/v1/pa/payment_intents/{id}/updaterequest and response - POST
/api/v1/pa/payment_intents/{id}/confirmresponse only - POST
/api/v1/pa/payment_intents/{id}/confirm_continueresponse only - POST
/api/v1/pa/payment_intents/{id}/captureresponse only - POST
/api/v1/pa/payment_intents/{id}/cancelresponse only - GET
/api/v1/pa/payment_intentsresponse only
Changes:
- Moved fields from
additional_infounder Customer to unifiedadditional_infounder PaymentIntent - Removed
travelers,itinerariesunderorder
- POST
-
Removed deprecated fields from API requests.
Affected endpoints:
- POST
/api/v1/pa/payment_intents/create - POST
/api/v1/pa/payment_consents/{id}/verify
Changes:
- Removed
payment_method_options.card.risk_controlfrom PaymentIntent Create Request - Removed
verification_options.card.risk_controlfrom PaymentConsent Verify Request
- POST
-
Removed deprecated fields from API responses.
Affected endpoints:
- GET
/api/v1/pa/payment_intents* - POST
/api/v1/pa/payment_intents/*
Changes:
- Removed deprecated fields from PaymentIntent:
payment_method_options.card.risk_controlbusiness_info.postcodeorder.supplier
- GET
-
Enhanced AVS result in API responses.
Affected endpoints:
- GET
/api/v1/pa/customers* - GET
/api/v1/pa/payment_attempts* - GET
/api/v1/pa/payment_consents* - POST/api/v1/pa/payment_consents/
- GET
/api/v1/pa/payment_intents* - POST
/api/v1/pa/payment_intents/{id}/cancel - POST
/api/v1/pa/payment_intents/{id}/capture - POST
/api/v1/pa/payment_intents/{id}/confirm_continue - POST
/api/v1/pa/payment_intents/{id}/confirm - POST
/api/v1/pa/payment_intents/{id}/update - GET
/api/v1/pa/payment_methods* - POST
/api/v1/pa/payment_methods/*
Changes:
- Removed two fields
card.avs_checkandcard.cvc_checkfrom PaymentMethod - Updated return values of two data fields in PaymentAttempt:
authentication_data.avs_result:Y/N/Utofully_matched/partially_matched/unmatched/no_response/not_attemptedauthentication_data.cvc_result:Y/N/Utomatched/unmatched/no_response/not_attempted
- GET
2024-09-27
-
This version introduces major changes to the Payments, Batch Transfers, Beneficiaries, and Transfers resources, notably relating to the renaming of the resources, as well as related endpoints, fields, error codes, and webhook events.
Affected endpoints:
- POST
/api/v1/payments/create→ POST/api/v1/transfers/create - POST
/api/v1/payments/validate→ POST/api/v1/transfers/validate - POST
/api/v1/payments/{id}/cancel→ POST/api/v1/transfers/{id}/cancel - POST
/api/v1/payments/{id}/confirm_funding→ POST/api/v1/transfers/{id}/confirm_funding - GET
/api/v1/payments/{id}→ GET/api/v1/transfers/{id} - GET
/api/v1/payments→ GET/api/v1/transfers - POST
/api/v1/beneficiaries/update/{id}→ POST/api/v1/beneficiaries/{id}/update - POST
/api/v1/beneficiaries/delete/{id}→ POST/api/v1/beneficiaries/{id}/delete - POST
/api/v1/transfers/create→ POST/api/v1/connected_account_transfers/create - GET
/api/v1/transfers/{id}→ GET/api/v1/connected_account_transfers/{id} - GET
/api/v1/transfers→ GET/api/v1/connected_account_transfers
Changes:
- Renamed "payments" to "transfers" in endpoint URL paths for Transfers resource, previously known as Payments resource in legacy API versions
- Renamed "transfer" to "connected_account_transfer" in endpoint URL paths for Connected Account Transfers resource, previously known as Transfers resource in legacy API versions
- POST
-
Modified field namings in requests and responses.
Affected endpoints:
- POST
/api/v1/transfers/create - POST
/api/v1/transfers/validate - POST
/api/v1/transfers/{id}/cancel - POST
/api/v1/transfers/{id}/confirm_funding - GET
/api/v1/transfers/{id} - GET
/api/v1/transfers - POST
/api/v1/batch_transfers/create - GET
/api/v1/batch_transfers/{id} - GET
/api/v1/batch_transfers - POST
/api/v1/batch_transfers/{id}/quote - POST
/api/v1/batch_transfers/{id}/submit - POST
/api/v1/batch_transfers/{id}/delete - POST
/api/v1/batch_transfers/{id}/add_items - POST
/api/v1/batch_transfers/{id}/delete_items - GET
/api/v1/batch_transfers/{id}/items - GET
/api/v1/beneficiaries - GET
/api/v1/beneficiaries/{id} - POST
/api/v1/beneficiaries/create - POST
/api/v1/beneficiaries/{id}/update - POST
/api/v1/beneficiaries/{id}/delete - POST
/api/v1/beneficiaries/validate - POST
/api/v1/beneficiary_api_schemas/generate - POST
/api/v1/beneficiary_form_schemas/generate - POST
/api/v1/simulation/transfers/{id}/transition
Changes:
- Renamed fields in requests and responses of Transfers endpoints
payment_id→idpayment_amount→transfer_amountpayment_currency→transfer_currencyunderlying_conversion_id→conversion_idpayment_date→transfer_datepayment_method→transfer_methodlast_updated_at→updated_at
- Renamed fields in requests and responses of Batch Transfers endpoints
payment_amount→transfer_amountpayment_currency→transfer_currencypayment_date→transfer_datepayment_method→transfer_method
- Renamed fields in requests and responses of Beneficiaries endpoints
beneficiary_id→idpayment_methods→transfer_methodspayment_reason→transfer_reason
- Renamed fields in requests and responses of Payers endpoints
payer_id→id
- POST
-
Modified pagination to align with the latest Airwallex API convention
Affected endpoint:
- GET
/api/v1/transfers
Changes:
- Replaced
page_numwithpageon request payload - Replaced
has_morewithpage_beforeandpage_afteron response payload
- GET
-
Updated Transfer, Batch Transfer, and Connected Account Transfer webhooks (refer to webhook event types for more details)
-
Updated Transfer, Batch Transfer, Beneficiary, and Payer error code format (refer to transfer error codes and batch transfer error codes for more details)
-
Supported HTTP status code 409 (Conflict) if a request with the same
request_idis currently being processedAffected endpoint:
- POST
/api/v1/transfers/create
- POST
2024-08-07
-
Introduced new versions of the Transaction Reconciliation Report and Balance Activity Report . The new version 1.1.0 will be the default
report_versionfor these reports.Affected endpoints:
- POST
/api/v1/finance/financial_reports/create, request and response
Changes:
- The default report version for the
BALANCE_ACTIVITY_REPORTandTRANSACTION_RECON_REPORTfinancial report types was changed to 1.1.0.
- POST
-
Modified request and response for create and get financial report(s) endpoints.
Affected endpoints:
- POST
/api/v1/finance/financial_reports/create, request and response - GET
/api/v1/finance/financial_reports/{id}, response - GET
/api/v1/finance/financial_reports/, response
Changes:
- Renamed fields on the create financial report request payload
timezonetotime_zonefrom_created_attofrom_dateto_created_attodate
- Renamed fields on the create and get financial report(s) response payloads
report_parameters.from_created_attoreport_parameters.from_datereport_parameters.to_created_at to report_parameters.to_date
- POST
-
Modified responses for Financial Transactions resources.
Affected endpoints:
- GET
/api/v1/financial_transactions, response - GET
/api/v1/financial_transactions/{id}, response
Changes:
- Update
currency_pairvalue to align with standard FX currency pair conventions - For payouts created after 2024-11-21, payout fees will now appear as separate line items to respective payouts
- Payouts for which the source currency and the payment currency are different will no longer generate
CONVERSION_SELLandCONVERSION_BUYfinancial transactions records
- GET
-
Modified response for Get balance history endpoint.
Affected endpoints:
- GET
/api/v1/balances/history, response
Changes:
- For payouts created after 2024-11-21, payout fees will now appear as separate line items to respective payouts
- GET
-
This version introduces major changes to the Global Accounts resource, notably relating to the opening and querying of Global Accounts due to:
-
Introduction of Multi-currency Global Accounts which can now receive funds in multiple currencies
-
Alignment to latest Airwallex API convention on pagination and URL naming
Affected endpoint:
- POST
/api/v1/global_accounts/createrequest only
Changes:
- Renamed payment_methods to transfer_method
- Moved currency and transfer_method under a new required_features object
Affected endpoints:
- POST
/api/v1/global_accounts/createresponse only - GET
/api/v1/global_accountsresponse only - GET
/api/v1/global_accounts/{id}response only - POST
/api/v1/global_accounts/{id}/closeresponse only - POST
/api/v1/global_accounts/{id}/updateresponse only
Changes:
- Renamed payment_methods to transfer_method
- Renamed clearing_system to local_clearing_system
- Removed capability object and moved transfer_methods and local_clearing_system under a new supported_features object, together with currency and routing_codes
- Replaced support_direct_debit by new type field under new supported_features object
- Added required_features object containing currency and transfer_method
Affected endpoint:
- GET
/api/v1/global_accounts
Changes:
- Replaced page_num with page on request payload
- Renamed currency to supported_features.currency on request payload
- Added required_features.currency to request payload
- Replaced has_more with page_before and page_after on response payload
- POST
-
Update existing Global Account endpoint URL updated from POST
/api/v1/global_accounts/update/{id}Affected endpoint:
- POST
/api/v1/global_accounts/{id}/update
- POST
-
This version also introduces major changes to the Deposits resource, notably relating to the responses and webhooks of deposits to include additional details such as remitter and fee information
Affected endpoints (Refer to direct debit for more details)
- GET
/api/v1/depositsresponse only - GET
/api/v1/deposits/{id}response only
Changes:
- Renamed
payer_nametonameunder newpayerobject, containing additional deposit information:bank_accountobject added which details payer bank account informationcountry_codeadded
- Added
provider_transaction_idto response body - Added
feeobject to response bodyamountaddedcurrencyadded
- Removed
sourceobject from response body, movingfunding_source_idandglobal_account_iddirectly under items - Renamed
deposit_idtoidin response body - Renamed
estimated_settlement_timetoestimated_settled_atin response body - Renamed
statement_reftoreferencein response body - Note that additional fields in the response are conditional based on the type of deposit and the data available from our banking partners. For example, the
payerobject is now only included for bank transfer deposits, but not for direct debit deposits (Refer to response body for more details)
- GET
-
Deposits webhook events now cover bank transfer deposits in addition to direct debit deposits, distinguished by modified
typefield to be eitherBANK_TRANSFERor,DIRECT_DEBIT -
Added new
deposit.pendingwebhook eventAffected webhook events (Refer to webhook event types for more details)
deposit.settleddeposit.rejecteddeposit.reversed
Payload Changes:
- Added
dataobject that includes all enriched details retrieved from GET/api/v1/depositsendpoints
-
This version also introduces major changes to the Transfers and Batch Transfers resource, notably relating to the responses and webhooks of transfers to include application fees for Platform Revenue Control.
Affected endpoints:
- POST
/api/v1/transfers/create, request and response - GET
/api/v1/transfers/{id}, response only - GET
/api/v1/transfers, response only - POST
/api/v1/batch_transfers/{{batch_id}}/add_items, request and response - GET
/api/v1/batch_transfers/{{batch_id}}/items, response only
Changes:
- Added
application_fee_optionsto request payload - Added
application_fee_optionsto response payload - Added
application_feesto response payload
- POST
2024-06-30
-
Replaced Retrieve an indicative MarketFX quote with Retrieve an indicative rate.
Affected endpoints:
- GET
/api/v1/marketfx/quote, removed
Replaced with:
- GET
/api/v1/fx/rates/current
- GET
-
Replaced Create a LockFX quote with Create a quote.
Affected endpoints:
- POST
/api/v1/lockfx/create, removed
Replaced with:
- POST
/api/v1/fx/quotes/create
- POST
-
Modified request and response for conversion create and get endpoints.
Affected endpoints:
- POST
/api/v1/fx/conversions/create, request and response - GET
/api/v1/fx/conversions/{conversion_id}, response only - GET
/api/v1/fx/conversions, response only
Changes:
- Removed
reasonfrom request payload - Removed
term_agreementfrom request payload - Added
application_fee_optionsto request payload - Added
funding_sourceto request payload - Added
metadatato request payload - Renamed
last_updated_attoupdated_atfrom response payload - Renamed
settlement_cutoff_timetosettlement_cutoff_atfrom response payload - Added
application_fee_optionsto response payload - Added
application_feesto response payload - Added
funding_sourceto response payload - Added
fundingto response payload
- POST
2024-06-14
-
Modified the
next_actionpayload of cardconfirmresponse.Affected endpoints:
- POST
/api/v1/pa/payment_intents/{id}/confirm, response only
Changes:
- Removed
stagefromnext_action.
- POST
-
Modified the
three_dsandtypepayload of cardconfirm_continuerequest.Affected endpoints:
- POST
/api/v1/pa/payment_intents/{id}/confirm_continue, request only
Changes:
- Removed
three_dsfrom request payload - Removed
3ds_continue,3ds_check_enrollment,3ds_validatefromtype.
- POST
2024-04-30
-
This version introduces major changes to the Payments and Beneficiaries resources, notably relating to the payment status lifecycle (including corresponding API endpoints/webhook events), and required fields for the beneficiary object.
-
Added
PAIDto payout statuses beyondSENTfor better visibility after it has been dispatched by Airwallex for the following endpoints (refer to payout statuses for details):- GET
/api/v1/payments, response only - GET
/api/v1/payments/{payment_id}, response only - POST
/api/v1/payments/create, response only
- GET
-
Updated payment webhooks (refer to payout webhook for details).
- Add
payment.paid
- Add
-
For both beneficiaries and payments endpoints, beneficiary name and address parameters are no longer relevant for certain payout scenarios (see detailed conditions below). Impacted endpoints:
- POST
/api/v1/beneficiaries/create - POST
/api/v1/beneficiaries/update/{id} - POST
/api/v1/beneficiaries/validate - POST
/api/v1/payments/create - POST
/api/v1/payments/validate - POST
/api/v1/payments/retry/{id} - GET
/api/v1/beneficiaries - GET
/api/v1/beneficiaries/{id} - GET
/api/v1/payments - GET
/api/v1/payments/{id} - POST
/api/v1/beneficiary_form_schemas/generate - POST
/api/v1/batch_transfers/{id}/add_items
- POST
-
When a parameter is not relevant, values specified in requests will be ignored, and NOT validated, saved, or returned. For existing resources created with names and addresses under previous API versions:
-
Under this and all future API versions, beneficiary names and addresses under the conditions defined above will NOT be returned in any responses or modifiable through the beneficiaries/update endpoint, since they have become irrelevant.
-
Under all previous API versions except 2017-01-01, these parameters (as defined above) will be Optional, and are still validated, saved, and returned as before.
Changes:
- For ALL beneficiaries and payments except for US Paper Checks , the following parameters will NOT be relevant in requests nor returned in responses:
beneficiary.first_namebeneficiary.last_namebeneficiary.company_name
- For ALL beneficiaries and payments except for US Paper Checks , the following parameters will NOT be relevant in requests nor returned in responses:
-
For domestic payout scenarios in which the beneficiary
bank_country_codeis the same as the onboarding entity country/region, the following beneficiary address parameters will NOT be relevant for requests nor returned in responses:beneficiary.address.country_codebeneficiary.address.statebeneficiary.address.citybeneficiary.address.street_addressbeneficiary.address.postcode
-
Applicable scenarios by onboarding entity are as follows:
- Airwallex Hong Kong
beneficiary.bank_details.bank_country_code= HKbeneficiary.bank_details.account_currency= HKD or CNYpayment_method= LOCALbeneficiary.bank_details.local_clearing_system= FPS or ACH
- Airwallex Australia
beneficiary.bank_details.bank_country_code= AUbeneficiary.bank_details.account_currency= AUDpayment_method= LOCAL
- Airwallex Lithuania/Netherlands
beneficiary.bank_details.bank_country_codeis one of AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LI,LT,LU,LV,MC,MQ,MT,NL,NO,PL,PM,PT,RO,SE,SI,SK,SM,YTbeneficiary.bank_details.account_currency= EURpayment_method= LOCAL
- Airwallex New Zealand
beneficiary.bank_details.bank_country_code= NZbeneficiary.bank_details.account_currency= NZDpayment_method= LOCAL
- Airwallex Singapore
beneficiary.bank_details.bank_country_code= SGbeneficiary.bank_details.account_currency= SGDpayment_method= LOCALbeneficiary.bank_details.local_clearing_system= FAST or GIRO
- Airwallex UK
beneficiary.bank_details.bank_country_code= GBbeneficiary.bank_details.account_currency= GBPpayment_method= LOCALbeneficiary.bank_details.local_clearing_system= FASTER_PAYMENTS
- Airwallex US (does not apply to the MTL licensing model; please check with your Account Manager or Customer Service for eligibility)
beneficiary.bank_details.bank_country_code= USbeneficiary.bank_details.account_currency= USDpayment_method= LOCALbeneficiary.bank_details.local_clearing_system= ACH
- For other customers onboarded with Airwallex's other entities, the address requirements remain the same
- Airwallex Hong Kong
2024-04-04
-
Exposed new failed card transactions with transaction failure reasons through the Issuing Transactions APIs.
-
Updated the names of some existing card transaction failure reasons for clarity.
Affected endpoints:
- GET
/api/v1/issuing/transactions, response only - GET
/api/v1/issuing/transactions/{id}, response only
- GET
Refer to transaction failure reasons for details
2024-03-31
-
Please note, this API version is incompatible with any Airwallex Business Account Products such as "Borderless Cards" or "Expense Management" via Airwallex web or mobile applications. If you're using any of these products, please use API version 2024-02-22. Contact your account manager for more information and to verify compatibility.
-
Revamps the Card and Cardholder experience.
Affected endpoints:
- POST
/api/v1/issuing/cardholders/create, request and response - GET
/api/v1/issuing/cardholders, response only - GET
/api/v1/issuing/cardholders/{id}, response only - POST
/api/v1/issuing/cardholders/{id}/update, request and response - POST
/api/v1/issuing/cards/create, request and response - GET
/api/v1/issuing/cards/{id}, response only - POST
/api/v1/issuing/cards/{id}/update, request and response - GET
/api/v1/issuing/cards, response only
Changes:
- Added
typecardholder attribute, valid values areDELEGATEandINDIVIDUAL - Moved cardholder attribute
addressintoindividualobject - Added card attributes
brand,program(an object containingpurpose,typeandsub_type),is_personalizedandadditional_cardholder_ids - Removed card attribute
issue_to - Removed card attribute
type
- POST
2024-02-22
-
With a subscribed webhook version greater than or equal to
2024-02-22, the naming convention of all webhook payloads will be unified assnake_case. -
Renamed payment method flows and modified the
next_actionpayloads.Affected endpoints:
- POST
/api/v1/pa/payment_consents/{id}/verify, request and response - POST
/api/v1/pa/payment_intents/{id}/confirm, request and response - POST
/api/v1/pa/payment_intents/*, response only - GET
/api/v1/pa/payment_intents*, response only - GET
/api/v1/pa/payment_attempts*, response only
Changes:
- Renamed payment method flows for the following payment methods:
alipaycn,alipayhk,dana,tng,gcash,truemoney,rabbit_line_pay,kakaopay,wechatpay mwebtomobile_webinapptomobile_appwebqrtoqrcodejsapitoofficial_account(applicable towechatpayonly)miniprogtomini_program- Modified
next_actionfromredirecttorender_qrcodefor theqrcodeflow. Affected payment methods:alipaycn,alipayhk,dana,tng,gcash,truemoney,rabbit_line_pay,kakaopay
- POST
-
Split the Payment Consent status from
PENDING_VERIFICATIONtoREQUIRES_PAYMENT_METHODandREQUIRES_CUSTOMER_ACTION.Affected endpoints:
- POST
/api/v1/pa/payment_consents/*, response only - GET
/api/v1/pa/payment_consents*, response only
Added webhooks for the Payment Consent resource:
payment_consent.requires_payment_methodpayment_consent.requires_customer_action
- POST
-
Reorganized fields under
payment_methodandpayment_method_options.Affected endpoints:
- POST
/api/v1/pa/payment_intents/{id}/confirm, request only
Changes:
- Replaced
payment_consent_reference.idwithpayment_consent_id - Moved
cvcfrompayment_consent_referencetopayment_method.card - Moved
cryptogram,three_ds,external_three_dsfrompayment_method_options.cardtopayment_method.card - Moved
verification_methodfrompayment_method_options.*_direct_debittopayment_method.*_direct_debit
- POST
-
Reorganized fields under
payment_methodandverification_options.Affected endpoints:
- POST
/api/v1/pa/payment_consents/{id}/verify, request only
Changes:
- Moved
cryptogram,three_ds_action,cvc,external_three_dsfromverification_options.cardtopayment_method.card - Moved
methodfromverification_options.*_direct_debittopayment_method.*_direct_debitand renamed it toverification_method - Moved
os_typeandflowfromverification_options.*topayment_method.*. Affected payment methods:alipaycn,alipayhk,dana,tng,gcash,truemoney,rabbit_line_pay,kakaopay - Moved
ip_address,flow,open_idfromverification_options.wechatpaytopayment_method.wechatpay
- POST
2024-01-31
-
This version introduces Batch Transfers resource and major changes to the Payments resource, notably relating to the payment status lifecycle, corresponding API endpoints and webhook events.
-
Updated payout statuses for better visibility on the state of the payment for the following endpoints (refer to payout statuses for further details):
- GET
/api/v1/payments, response only - GET
/api/v1/payments/{payment_id}, response only - POST
/api/v1/payments/create, response only
- GET
-
Introduced the following endpoint to confirm funding for payments under the post-funding settlement model (refer to fund deduction for further details):
-
POST
/api/v1/payments/confirm_funding/{payment_id}* Deprecated the following endpoint: -
POST
/api/v1/payments/retry/{payment_id}* Addedfundingobject with additional funding information to the following endpoints: -
GET
/api/v1/payments -
GET
/api/v1/payments/{payment_id} -
POST
/api/v1/payments/create
Changes:
- The
fundingobject contains parsable information about funding of the payment:deposit_type: Type of direct debit deposit created to fund the payment (with standard or accelerated settlement time)failure_reason: Error code in the event of a rejected direct debit depositfunding_source_id: The unique ID of the Linked Account used to fund the paymentstatus: Funding status of this payment (refer to funding statuses for further details)
-
-
Added
batch_transfer_idfor payments created via batch transfer to the following endpoints:- GET
/api/v1/payments, response only - GET
/api/v1/payments/{payment_id}, response only
- GET
-
Added
remarksfor including additional payment information (not passed to the beneficiary) to the following endpoints:- GET
/api/v1/payments, response only - GET
/api/v1/payments/{payment_id}, response only - POST
/api/v1/payments/create, request and response - POST
/api/v1/payments/validate, request only
- GET
-
Updated payment error codes (refer to payout error codes for details)
-
Updated payment failure reasons (refer to failure reasons for details):
-
Add a new failure reason
90502: TM suspended -
Under post-funding workflow,
payment_datewill remain unchanged to reflect the original specified date for overdue payments. The date when the payment is sent will be returned indispatch_date. This change is applicable to the following endpoints:- GET
/api/v1/payments, response only - GET
/api/v1/payments/{payment_id}, response only
- GET
-
Updated payment webhooks (refer to payout webhook for details):
- Add
payment.scheduled - Add
payment.funding.requires_funding_confirmation - Add
payment.funding.scheduled - Add
payment.funding.processing - Add
payment.funding.funded - Add
payment.funding.reversed - Add
payment.funding.failed - Add
payment.overdue - Add
payment.processing - Remove
payment.new - Remove
payment.pending_funds - Remove
payment.in_review - Remove
payment.ready_for_dispatch - Remove
payment.suspended - Remove
payment.retried - Update
payment.rejected to payment.approval_rejected - Update
payment.recalled to payment.approval_recalled - Update
payment.blocked to payment.approval_blocked - Update
payment.dispatched to payment.sent
- Add
2023-10-01
-
Payment Acceptance notification webhook changes. The payload of new webhooks are aligned with PaymentDispute and different from the removed Dispute webhooks.
- Add
payment_dispute.requires_response - Add
payment_dispute.expired - Add
payment_dispute.accepted - Add
payment_dispute.challenged - Add
payment_dispute.reversed - Add
payment_dispute.pending_decision - Add
payment_dispute.pending_closure - Add
payment_dispute.won - Add
payment_dispute.lost - Remove
dispute.rfi_received_by_merchant - Remove
dispute.rfi_responded_by_merchant - Remove
dispute.pre_chargeback_received_by_merchant - Remove
dispute.pre_chargeback_accepted - Remove
dispute.dispute_received_by_merchant - Remove
dispute.dispute_responded_by_merchant - Remove
dispute.pre_arbitration_received_by_merchant - Remove
dispute.arbitration_escalate_received_by_merchant - Remove
dispute.accepted - Remove
dispute.lost - Remove
dispute.won - Remove
dispute.dispute_reversed
- Add
-
Added an optional field
store_detailstoaccount_detailsin the requests and responses of the following endpoints:- GET
/api/v1/accounts/{id}, response only - GET
/api/v1/accounts, response only - GET
/api/v1/account, response only - POST
/api/v1/accounts/create, request and response - POST
/api/v1/accounts/{id}/update, request and response - POST
/api/v1/accounts/{id}/submit, response only - POST
/api/v1/account/amendments/create, request and response - GET
/api/v1/account/amendments/{amendment_id}, response only
- GET
2023-08-31
-
Added
country_codeandlanguagefields to create a Linked Account authentication.Affected endpoints:
- POST
/api/v1/linked_accounts/auth, request only - POST
/api/v1/linked_accounts/{id}/auth, request only
- POST
-
Added
request_idto create a Linked Account for idempotency check. Calling Create a Linked Account via Open Banking verification with the same details as an existing Linked Account will create a new Linked Account, rather than deleting the existing one.Affected endpoints:
- POST
/api/v1/linked_accounts/create, request only
- POST
-
Replaced Delete a Linked Account with Suspend a Linked Account. After a Linked Account has been suspended, it can still be queried by calling Get a Linked Account by ID. Calling Create a Linked Account via micro-deposit verification with the same details as a suspended Linked Account will replace said suspended Linked Account, rather than generating a new one.
Affected endpoints:
-
POST
/api/v1/linked_accounts/{id}/deleteNew endpoints: -
POST
/api/v1/linked_accounts/{id}/suspend
-
2023-06-30
-
This version introduces major changes to the request and response for creating, updating, submitting, retrieving Accounts of
legal_entity_type = INDIVIDUAL.Accounts of
legal_entity_type = INDIVIDUALin the UK and EU region are now supported with several new backing fields. For better consistency, the validation rules and data structures ofindividual_detailshave been aligned withbusiness_person_details.account_usagefor accounts oflegal_entity_type = INDIVIDUALis renewed for better risk rating. Also, a new identification type -TAX_IDis added to support US citizens and residents.Impacted endpoints:
- GET
/api/v1/account, response only - GET
/api/v1/accounts, response only - GET
/api/v1/accounts/{id}, response only - POST
/api/v1/accounts/create, request and response - POST
/api/v1/accounts/{id}/update, request and response - POST
/api/v1/accounts/{id}/submit, request and response
Changes:
- Added new fields to support individual onboarding in the UK region:
account_details.individual_details.occupationaccount_details.individual_details.other_namesaccount_details.individual_details.employeraccount_details.individual_details.estimated_monthly_income
- Added new field
account_details.individual_details.account_usage, root levelaccount_usageis removed. - Renewed allowed values of some fields in the
account_usagefor better risk rating:account_details.individual_details.account_usage.card_usageaccount_details.individual_details.account_usage.collection_fromaccount_details.individual_details.account_usage.payout_to
- Added new fields in the
account_usage:account_details.individual_details.account_usage.product_reference
- Added new identification type
TAX_IDwith new fields of theIdentificationobject:tax_id.numbertax_id.type
- Renamed fields of the
Identificationobject:drivers_license.license_numbertodrivers_license.numberpassport.passport_numbertopassport.numberpersonal_id.id_numbertopersonal_id.number
- Simplified attachment tag options:
account_details.individual_details.attachments.individual_documents.tag
- Added new consent for collecting and processing the biometrics data:
customer_agreements.agreed_to_biometrics_consent
- Removed
account_details.individual_details.user_id_on_platform, and the removed fields is replaced byidentifier. - Other renamed fields:
account_details.individual_details.addresstoaccount_details.individual_details.residential_addressaccount_details.individual_details.address_englishtoaccount_details.individual_details.residential_address_englishaccount_details.individual_details.photo_file_idtoaccount_details.individual_details.live_selfie_file_idaccount_details.individual_details.primary_identificationtoaccount_details.individual_details.identifications.primaryaccount_details.individual_details.secondary_identificationtoaccount_details.individual_details.identifications.secondary
- Other new fields:
account_details.individual_details.middle_name_englishaccount_details.individual_details.other_namesaccount_details.individual_details.account_usage.expected_monthly_transaction_volume.currency
- Other removed fields:
account_details.individual_details.reason_for_duplicate_account
- GET
-
Updated the success response from
OKto"OK"for the following endpoints:- POST
/api/v1/beneficiaries/validate, response only - POST
/api/v1/payers/validate, response only - POST
/api/v1/payments/validate, response only - POST
/api/v1/payments/cancel, response only
- POST
2023-06-15
-
This version introduces major changes to the request and response for creating, updating, submitting, retrieving Accounts.
Notable change relates to removal of field-level validations linked to
business_address,business_structure, andnationalityofbusiness_person_details. Removal of validations provides greater flexibility in meeting dynamic regulatory needs of each jurisdiction.Impacted endpoints:
- GET
/api/v1/account, response only - GET
/api/v1/accounts, response only - GET
/api/v1/accounts/{id}, response only - POST
/api/v1/accounts/create, request and response - POST
/api/v1/accounts/{id}/update, request and response - POST
/api/v1/accounts/{id}/submit, request and response
Changes:
- Removed field-level validations linked to
business_address,business_structure, andnationalityofbusiness_person_details. Submitted accounts now use unified validation rules for all accounts oflegal_entity_type = BUSINESS - Consolidated business persons information
account_details.authorised_person_details,account_details.beneficial_owners,account_details.controlling_person_details,account_details.director_details,account_details.legal_rep_detailsshould be passed in new fieldaccount_details.business_person_detailswithaccount_details.business_person_details.rolesspecified- Primary and secondary identification of business person now supported, old fields
supplementary_identification_numberandsupplementary_identification_typeshould be passed inaccount_details.business_person_details.identifications.secondary - Consolidated business identifiers
- Added new fields
account_details.business_details.business_identifiers, which support most of identification for the business account_details.business_details.business_registration_number,account_details.business_details.tax_idandaccount_details.business_details.vat_numbersall move toaccount_details.business_details.business_identifiers- Update industry category API, new field
account_details.business_details.industry_category_codeuses new industry category codes. See in Reference Data - Added new field
account_details.business_details.account_usage, root levelaccount_usageis not used by business account - Add new fields:
account_details.business_person_detailsaccount_details.business_details.account_usageaccount_details.business_details.business_identifiersaccount_details.business_details.industry_category_codeaccount_details.trustee_details.business_details.business_person_detailsaccount_details.trustee_details.business_details.business_name_tradingaccount_details.trustee_details.business_details.business_identifiersaccount_details.trustee_details.business_details.industry_category_code
- Remove fields:
account_details.authorised_person_detailsaccount_details.beneficial_ownersaccount_details.controlling_person_detailsaccount_details.director_detailsaccount_details.legal_rep_detailsaccount_details.business_details.business_registration_numberaccount_details.business_details.industry_categoryaccount_details.business_details.industry_category_level3account_details.business_details.industry_sub_categoryaccount_details.business_details.tax_idaccount_details.business_details.vat_numbersaccount_details.business_details.trust_nameaccount_details.trustee_details.business_details.beneficial_ownersaccount_details.trustee_details.business_details.director_detailsaccount_details.trustee_details.business_details.business_registration_numberaccount_details.trustee_details.business_details.industry_categoryaccount_details.trustee_details.business_details.industry_category_level3account_details.trustee_details.business_details.industry_sub_category
- Rename fields:
account_details.business_details.addresstoaccount_details.business_details.registration_addressaccount_details.business_details.address_englishtoaccount_details.business_details.registration_address_englishaccount_details.trustee_details.business_details.addresstoaccount_details.trustee_details.business_details.registration_addressaccount_details.trustee_details.business_details.address_englishtoaccount_details.trustee_details.business_details.registration_address_english
- GET
2023-04-15
-
Updated request and response for creating, updating and validating a beneficiary:
- POST
/api/v1/beneficiaries/create - POST
/api/v1/beneficiaries/update/{beneficiary_id} - POST
/api/v1/beneficiaries/validate
- POST
-
Updated request, response, and error codes for creating, validating and retrying a payment:
- POST
/api/v1/payments/create - POST
/api/v1/payments/validate - POST
/api/v1/payments/retry/{payment_id}
- POST
-
Updated response and error codes when requesting an existing beneficiary or payment:
- GET
/api/v1/beneficiaries - GET
/api/v1/beneficiaries/{beneficiary_id} - GET
/api/v1/payments - GET
/api/v1/payments/{payment_id}
- GET
-
Updated form schemas for CA, HK, IN, JP, MA, MX, NZ, AR, PE and all countries which require the iban field:
- POST
/api/v1/beneficiary_api_schemas/generate - POST
/api/v1/beneficiary_form_schemas/generate
- POST
-
Removed update a payment:
- POST
/api/v1/payments/update/{payment_id}
- POST
Changes:
bank_nameis no longer required unlesspayment_methodsis LOCAL andbank_country_codeis CN.bank_namewill still be returned in the response, based on a mapping of your submitted bank details.swift_codeis no longer required when creating a beneficiary or a new payment, in all scenarios where iban is required. This includes ifbank_country_codeis one of AD, AE, AL, AT, AZ, BA, BE, BG, BH, BL, BY, CH, CY, CZ, DE, DK, DO, EE, ES, FI, FR, FO, GB, GE, GF, GG, GI, GL, GR, GT, HR, HU, IC, IE, IL, IM, IN, IS, IT, JE, JO, KW, KZ, LB, LC, LI, LT, LU, LV, MC, MD, MF, MK, MQ, MR, MT, MU, NC, NL, NO, PK, PL, PM, PS, PT, QA, RE, RO, RS, SA, SC, SE, SI, SK, SM, TL, TN, TR, VG, XK, TF, WF, YT; and whenpayment_methodsis LOCAL, andaccount_currencyis EGP.account_routing_type1andaccount_routing_value1are no longer required when creating a beneficiary or a new payment wherepayment_methodsis LOCAL, andaccount_currencyis MAD, MXN, ARS, or PEN.- Where
payment_methodsis LOCAL andaccount_currencyis JPY:account_routing_type1is now defined asbank_codeaccount_routing_type2is now defined asbranch_codeaccount_routing_value2is now requiredbank_account_categoryis now required
- Where
payment_methodsis LOCAL andaccount_currencyis CAD:account_routing_type1is now defined asinstitution_numberaccount_routing_type2is now defined astransit_numberaccount_routing_value2is now required
- Added error codes 082-089. Refer to the Payouts Product Docs for all potential error codes and descriptions
Beneficiaries created using POST /api/v1/beneficiaries/create on a previous API version will be compatible with this version without updating to the new schema. However, to update an existing beneficiary by calling POST /api/v1/beneficiaries/update/{beneficiary_id}, you will need to follow the new schema.
-
A new object failure_details has been added to the Deposit resource. Affected endpoints:
- GET
/api/v1/deposits, response only - GET
/api/v1/deposits/{id}, response only
Changes:
- Refer to the Product Docs for all potential error codes and descriptions.
- GET
2022-12-13
-
Updated success response from an empty body to
OKfor the following endpoints:- POST
/api/v1/beneficiaries/validate, response only - POST
/api/v1/payers/validate, response only - POST
/api/v1/payments/validate, response only - POST
/api/v1/payments/cancel, response only
- POST
-
Updated the error response structure to be parsable for the following endpoints:
- POST
/api/v1/beneficiaries/validate, response only - POST
/api/v1/beneficiaries/create, response only - POST
/api/v1/beneficiaries/update/{beneficiary_id}, response only - POST
/api/v1/payers/validate, response only - POST
/api/v1/payers/create, response only - POST
/api/v1/payers/update/{payer_id}, response only - POST
/api/v1/payments/validate, response only - POST
/api/v1/payments/create, response only - POST
/api/v1/payments/update/{payment_id}, response only - POST
/api/v1/payments/cancel, response only - POST
/api/v1/payments/retry, response only
Changes:
- Refreshed the error codes, which includes renaming, splitting, merging and retiring previous error codes
- Removed
messageanddescriptionfrom the response. Refer to the Payouts Product Docs for all potential error codes and descriptions - Added
paramsobject with parsable information where applicable, e.g. payment amount limit, amount limit currency - Replaced
sourcein the error response of previous API version witherrorsin this version. Theerrorsobject containssourceandcodefields, as well as theparamsobject (if applicable) that returns parsable details based on the specific error - For a field validation error where code is
validation_failed, the response contains anerrorsobject that can return a list ofsource,codeandparamsfields/objects corresponding to all the schema validation errors identified in the request: source: Specific field within the request that has failed schema validationcode: Unique numeric identifier of the specific validation error encounteredparams: Additional parsable information related to the specific validation error where applicable, e.g. minimum and maximum character length
- POST
-
For a general error where code is not
validation_failed, theerrorsobject will be empty -
A new endpoint can be used to close a Global Account:
- POST
/api/v1/global_accounts/{id}/close
- POST
-
A new field
close_reasonhas been added to the Global Account resource. Affected endpoints:- GET
/api/v1/global_accounts, response only - POST
/api/v1/global_accounts/update/{id}, response only - GET
/api/v1/global_accounts/{id}, response only
- GET
-
A new endpoint can be used to cancel a direct debit payout under the Direct Debit resource:
- POST
/api/v1/direct_debits/{transaction_id}/cancel
- POST
-
A new field
mandate_idhas been added to the Direct Debit resource. Affected endpoints:- GET
/api/v1/direct_debits, response only - GET
/api/v1/direct_debits/{transaction_id}, response only
- GET
-
New endpoints that can be used to manage direct debit payout mandates under the Global Account resource:
- GET
/api/v1/global_accounts/{global_account_id}/mandates/{id} - GET
/api/v1/global_accounts/{global_account_id}/mandates - POST
/api/v1/global_accounts/{global_account_id}/mandates/{id}/cancel
- GET
-
A new field
mandate.direct_debit_deposithas been added to the Linked Account resource. Affected endpoints:- GET
/api/v1/linked_accounts, response only - GET
/api/v1/linked_accounts/{id}, response only - POST
/api/v1/linked_accounts/create, response only - POST
/api/v1/linked_accounts/{id}/verify_microdeposits, response only
- GET
-
A new field
preferred_referencehas been added to the request parametermandateunder the Linked Account resource. Affected endpoints:- POST
/api/v1/linked_accounts/create, request only - POST
/api/v1/linked_accounts/{id}/mandate, request only
- POST
-
Fields of Direct Debit mandate resource have been updated, under the Linked Account resource. Affected endpoints:
- GET
/api/v1/linked_accounts/{id}/mandate, response only - POST
/api/v1/linked_accounts/{id}/mandate, response only
Changes:
- The values of field
statusshould be: ACTIVE, INACTIVE, PROCESSING - A new field
referencehas been added - A new object field
addresshas been added, includingaddress.country_code,address.state,address.suburb,address.postcode,address.address_line1,address.address_line2
- GET
-
A new optional field
deposit_conversion_currencyhas been added to the Global Account resource. Affected endpoints:- POST
/api/v1/global_accounts/update/{id} - POST
/api/v1/global_accounts/create - GET
/api/v1/global_accounts, response only - GET
/api/v1/global_accounts/{id}, response only - POST
/api/v1/global_accounts/{id}/close, response only
- POST
2022-11-14
-
Added transaction type to balance history endpoint Changed PAYMENT source transaction type to PAYOUT for balance history endpoint Changed description for Transfer Debit DEPOSIT_SPLIT subtype for balance history endpoint
-
GET
/api/v1/balance/history
2022-11-11
- PaymentConsent
create/updaterequests will no longer take thepayment_methodpayload. Impacted endpoints:- POST
/api/v1/pa/payment_consents/create, request only - POST
/api/v1/pa/payment_consents/{id}/update, request only
- POST
Instead, the user should provide the payment_method payload directly in the PaymentConsent verify request or the PaymentIntent confirm request (with a PENDING_VERIFICATION PaymentConsent):
-
POST
/api/v1/pa/payment_consents/{id}/verify -
POST
/api/v1/pa/payment_intents/{id}/confirm* When verifying a PaymentConsent initiated bycustomer, if an existingVERIFIEDPaymentConsent already references the provided card or bank account number, the request will be declined withresource_already_existsto avoid generating multiple identical PaymentConsents, which might confuse the shopper during return payment. Impacted endpoints:- POST
/api/v1/pa/payment_consents/{id}/verify* Theid,status,created_at, andupdated_atof thepayment_methodpayload will only be available if the corresponding PaymentMethod resource exists. Therefore, for a one-off payment, these fields will benullin the API response. Impacted endpoints: - POST
/api/v1/pa/payment_intents/{id}/confirm, response only - POST
/api/v1/pa/payment_intents/{id}/confirm_continue, response only - GET
/api/v1/pa/payment_intents/{id}, response only - GET
/api/v1/pa/payment_attempts/{id}, response only - GET
/api/v1/pa/payment_attempts, response only
- POST
-
Next action type in a response from PaymentIntent and PaymentConsent related APIs will be
redirect_iframewithGETnext action method, when 3DS authentication is required. Also there will be no need to passacs_responseinconfirm_continuerequest whenredirect_iframeaction is completed. Impacted endpoints:- GET
/api/v1/pa/payment_intents/{id}, response only - POST
/api/v1/pa/payment_intents/{id}/confirm, response only - POST
/api/v1/pa/payment_intents/{id}/confirm_continue, response only - GET
/api/v1/pa/payment_consents/{id}, response only - POST
/api/v1/pa/payment_consents/{id}/verify, response only
- GET
-
The error codes returned from the PaymentLink APIs are changed to standard text codes (previously digits). In addition, the timestamp format of PaymentLinks API responses is now standardized to
2022-11-11T12:12:12+0000. Impacted endpoints: -
POST
/api/v1/pa/payment_links/create, response only -
POST
/api/v1/pa/payment_links/{id}/update, response only -
GET
/api/v1/pa/payment_links/{id}, response only -
POST
/api/v1/pa/payment_links/{id}/notify_shopper, response only -
POST
/api/v1/pa/payment_links/{id}/activate, response only -
POST
/api/v1/pa/payment_links/{id}/delete, response only -
GET
/api/v1/pa/payment_links, response only
2022-10-14
-
New possible value
FAILEDadded for the status of a Scale charge. Affected endpoints: -
GET
/api/v1/charges, response only -
GET
/api/v1/charges/{id}, response only -
New possible values added for the status of a Scale transfer. Previously existing statuses:
NEWandSETTLED. Newly added statuses:PENDING,FAILED, andSUSPENDED. Affected endpoints: -
GET
/api/v1/transfers, response only -
GET
/api/v1/transfers/{id}, response only
2022-10-10
-
When calling the following endpoint for an account for a business located in the United States:
-
POST
/api/v1/accounts/{id}/submit* The following previously optional fields are now required:account_details.business_details.business_address.address_line1account_details.business_details.business_address.country_codeaccount_details.business_details.business_address.postcodeaccount_details.business_details.business_address.stateaccount_details.business_details.business_address.suburbaccount_details.business_details.business_registration_numberaccount_details.business_details.business_structureaccount_details.business_details.description_of_goods_or_servicesaccount_details.business_details.tax_id.numberaccount_details.business_details.tax_id.typeaccount_details.beneficial_owners.address.address_line1account_details.beneficial_owners.address.country_codeaccount_details.beneficial_owners.address.postcodeaccount_details.beneficial_owners.address.stateaccount_details.beneficial_owners.address.suburbaccount_details.beneficial_owners.attachmentsmust include one ofPASSPORTorDRIVERS_LICENSE_FRONTandDRIVERS_LICENSE_BACKaccount_details.beneficial_owners.date_of_birthaccount_details.beneficial_owners.first_nameaccount_details.beneficial_owners.last_nameaccount_details.beneficial_owners.identification_numberaccount_details.beneficial_owners.identification_type
-
At least one director or controlling person (a new field) is required, and if included the following previously optional fields are required:
account_details.director_details.address.address_line1account_details.director_details.address.country_codeaccount_details.director_details.address.postcodeaccount_details.director_details.address.stateaccount_details.director_details.address.suburbaccount_details.director_details.attachmentsmust include one ofPASSPORTorDRIVERS_LICENSE_FRONTandDRIVERS_LICENSE_BACKaccount_details.director_details.date_of_birthaccount_details.director_details.first_nameaccount_details.director_details.last_nameaccount_details.director_details.identification_numberaccount_details.director_details.identification_typeaccount_details.controlling_person_details.address.address_line1(new field)account_details.controlling_person_details.address.country_code(new field)account_details.controlling_person_details.address.postcode(new field)account_details.controlling_person_details.address.state(new field)account_details.controlling_person_details.address.suburb(new field)account_details.controlling_person_details.attachmentsmust include one ofPASSPORTorDRIVERS_LICENSE_FRONTandDRIVERS_LICENSE_BACKaccount_details.controlling_person_details.date_of_birth(new field)account_details.controlling_person_details.first_name(new field)account_details.controlling_person_details.last_name(new field)account_details.controlling_person_details.identification_number(new field)account_details.controlling_person_details.identification_type(new field)account_details.controlling_person_details.job_title(new field)account_details.controlling_person_details.nationality(new field)
-
The following previously required fields are now optional:
account_usage.card_usageaccount_usage.collection_country_codesaccount_usage.collection_fromaccount_usage.expected_monthly_transaction_volume.amountaccount_usage.payout_country_codesaccount_usage.payout_to
-
The following new fields are required for those with US nationality:
account_details.beneficial_owners.supplementary_identification_typemust be one ofSSNorITINaccount_details.beneficial_owners.supplementary_identification_numbermust be 9 digitsaccount_details.director_details.supplementary_identification_typemust be one ofSSNorITINaccount_details.director_details.supplementary_identification_numbermust be 9 digits
-
The following new fields are optional:
account_details.authorised_person_details.supplementary_identification_typeaccount_details.authorised_person_details.supplementary_identification_numberaccount_details.legal_rep_details.supplementary_identification_typeaccount_details.legal_rep_details.supplementary_identification_number
-
All addresses with a US country code require a two-letter abbreviation for
state. Impacted fields:account_details.business_details.business_address.stateaccount_details.beneficial_owners.address.stateaccount_details.controlling_person_details.address.stateaccount_details.director_details.address.stateaccount_details.legal_rep_details.address.stateaccount_details.trustee_details.business_details.address.stateaccount_details.trustee_details.individual_details.address.state
-
Add supplementary_identification_type and supplementary_identification_number to authorised_person_details, beneficial_owners, director_details, and legal_rep_details. Impacted endpoints:
- GET
/api/v1/account - GET
/api/v1/accounts - POST
/api/v1/accounts/create - GET
/api/v1/accounts/{id} - POST
/api/v1/accounts/{id}/submit - POST
/api/v1/accounts/{id}/update
- GET
2022-10-04
-
Changed Financial Transaction responses from
camelCasetosnake_case. Affected endpoints:- GET
/api/v1/financial_transactions - GET
/api/v1/financial_transactions/{id}
- GET
2022-09-09
-
Enhanced the beneficiary schema definitions for supported payout capabilities to be available based on the account attributes, such as business registration region, industry category.
-
Added example fields that can be used to help end users understand what to enter for each field.
-
Updated flight time and transfer limit to be parsable fields:
-
Replaced the sub field
processing_timewithflight_timeunder fieldpayment_methodoptions withminandmaxjson nodes -
Replaced the sub field
payment_limittotransfer_limitunder fieldpayment_methodoptions withminandmaxjson nodes (Note thatmaxnode will be hidden if there is no transfer limit)Affected endpoints:
- POST
/api/v1/beneficiary_form_schemas/generate, response only
- POST
2022-02-16
-
Enrich and re-construct the schema of Global Account detail to return the necessary information. Affected endpoints:
- GET
/api/v1/global_accounts, response only - GET
/api/v1/global_accounts/{id}, response only - POST
/api/v1/global_accounts/create, response only - POST
/api/v1/global_accounts/update/{id}, response only
- GET
-
Extend the Global Account transaction status, the possible values can be one of 'PENDING', 'SETTLED', 'REJECTED', 'CANCELLED' Affected endpoints:
- GET
/api/v1/global_accounts/{id}/transactions, response only
- GET
-
Lastly, this endpoint is deprecated:
- GET
/api/v1/reference/settlement_accounts
- GET
2021-11-25
- Use new
redirect_formnext_actiontype for 3DS flow.
2021-10-11
-
Scale accounts now onboarded to respective local Airwallex entity based on the created account's business address country code. Validation rules for account submission no longer driven by the Owning entity of the account creator. Affected endpoint:
-
POST
/api/v1/accounts/{id}/submit
2021-08-06
-
Remove
pci-subdomain prefix - the standard subdomain is now pci-compliant. Affected endpoints:/api/v1/pa/api/v1/issuing/api/v1/financial_transactions
-
Rename Financial Transactions endpoints and add support for
on-behalf-ofheader- **GET
/api/v1/pa/financial/transactions**-> GET/api/v1/financial_transactions - GET
/api/v1/pa/financial/transactions/{id}-> GET/api/v1/financial_transactions/{id}
- **GET
-
Rename Refund status
PROCESSINGtoACCEPTED. Impacted endpoints are:- GET
/api/v1/pa/refunds* - POST
/api/v1/pa/refunds/create
- GET
-
Move
billinginsidecard(previously both at the same level underpayment_method). Impacted endpoints are:- GET
/api/v1/pa/payment_intents/{id} - POST
/api/v1/pa/payment_intents/confirm - GET
/api/v1/pa/payment_attempts* - GET
/api/v1/pa/customers/{id} - POST
/api/v1/pa/customers/{id}/add_payment_method - POST
/api/v1/pa/customers/{id}/remove_payment_method - GET
/api/v1/pa/payment_methods* - POST
/api/v1/pa/payment_methods*
- GET
-
Remove
supplementary_amountfrom PaymentIntent. Also deprecatecustomer_payment_methodsandcustomer_payment_consentsfrom PaymentIntent create response. Impacted endpoints are:- GET
/api/v1/pa/payment_intents* - POST
/api/v1/pa/payment_intents/create
- GET
-
Payment Acceptance notification webhook changes
- Rename
payment_intent.payment_method_requiredtopayment_intent.requires_payment_method - Rename
payment_intent.capture_requiredtopayment_intent.requires_capture - Rename
payment_intent.customer_action_requiredtopayment_intent.requires_customer_action - Rename
refund.processingtorefund.accepted - Deprecate
payment_method.creation_failed - Deprecate
payment_method.update_failed - Deprecate
payment_method.attachment_failed - Deprecate
payment_method.detachment_failed - Deprecate
payment_method.disable_failed - Deprecate
customer.creation_failed - Deprecate
customer.update_failed
- Rename
-
Payment Acceptance error code changes
- Rename
service_unavailabletointernal_error - Rename
state_invalid_for_operationtoinvalid_status_for_operation - Rename
processor_declinedtoprovider_declined - Rename
processor_unavailabletoprovider_unavailable
- Rename
2021-07-01
-
Business structure
SELF_MANAGED_SUPER_FUNDis now supported for Australian businesses, and the following new fields have been added to the account resource:-
account_details.trustee_detailsAffected endpoints:
- GET
/api/v1/account, response only - GET
/api/v1/accounts, response only - GET
/api/v1/accounts/{id}, response only - POST
/api/v1/accounts/create, request and response - POST
/api/v1/accounts/{id}/update, request and response - POST
/api/v1/accounts/{id}/submit, response only - POST
/api/v1/accounts/{id}/terms_and_conditions/agree, response only
- GET
-
-
For Australian business accounts, the following fields are now required:
account_details.authorised_person_details.first_nameaccount_details.authorised_person_details.last_nameaccount_usage
And for Australian business accounts, the following fields are no longer required:
account_details.beneficial_owners.identification_numberaccount_details.beneficial_owners.identification_typeaccount_details.beneficial_owners.attachments.identity_files
Affected endpoints:
- POST
/api/v1/accounts/{id}/submit
-
New endpoints for platform manage Scale Connect invitation links:
- POST
/api/v1/accounts/invitation_links/create: Creates an Account Link object that includes an Airwallex hosted url for the end user to accept a scale connect invitation sent by the platform account. - GET
/api/v1/accounts/invitation_links/{id}: Get an Account Link by link Id.
- POST
Affected versions: all
-
Added the following endpoint to retrieve a tree of options for
industry_category,industry_sub_category, andindustry_category_level3:- GET
/api/v1/reference/industry_categories
Added the following fields:
account_details.business_details.description_of_goods_and_servicesaccount_details.business_details.description_of_industryaccount_details.business_details.industry_category_level3
Affected endpoints:
- GET
/api/v1/account, response only - GET
/api/v1/accounts, response only - GET
/api/v1/accounts/{id}, response only - POST
/api/v1/accounts/create, request and response - POST
/api/v1/accounts/{id}/update, request and response - POST
/api/v1/accounts/{id}/submit, response only - POST
/api/v1/accounts/{id}/terms_and_conditions/agree, response only
- GET
Affected versions: all
2021-02-28
-
For HK business accounts, the following fields are no longer required:
account_details.business_details.business_nameaccount_details.business_details.business_registration_numberaccount_details.business_details.address.stateaccount_details.business_details.address.suburbaccount_details.business_details.address.address_line1date_of_birth,first_name,first_name_english,last_name,last_name_english,identification_numberunderaccount_details.director_detailsandaccount_details.beneficial_ownersif the individual's identity documents have HK nationality.
-
For CN business accounts, the following fields are no longer required:
account_details.business_details.business_structure
Impacted urls are:
- POST
/api/v1/accounts/{id}/submit
-
Added new optional field for business accounts: account_usage. Impacted urls are:
- GET
/api/v1/account - GET
/api/v1/accounts - GET
/api/v1/accounts/{id} - POST
/api/v1/accounts/create - POST
/api/v1/accounts/{id}/update - POST
/api/v1/accounts/{id}/submit
- GET
-
Added new option to
statusfield:ACTION_REQUIRED, and created a new web hook for when an account goes into this status.When the account is in this status, check the
requirementsfield for further details on the actions required.The new status can appear in responses to the following endpoints:
- GET
/api/v1/account, response only - GET
/api/v1/accounts, response only - GET
/api/v1/accounts/{id}, response only - POST
/api/v1/accounts/create, response only - POST
/api/v1/accounts/{id}/update, response only - POST
/api/v1/accounts/{id}/submit, response only
- GET
-
Agreement to terms and conditions is not required for account submission, only for account activation. An account which passes review without customer_agreements.agreed_to_terms_and_conditions = true will have a status of ACTION_REQUIRED. It will also have the following new fields:
next_action.type = "agreement_to_terms_and_conditions_required"requirements.agreement_to_terms_and_conditions_required.endpoint = "/api/v1/accounts/{id}/terms_and_conditions/agree"requirements.agreement_to_terms_and_conditions_required.method = "POST"requirements.agreement_to_terms_and_conditions_required.message = "Account has passed review. To activate the account, please agree to the terms and conditions by calling the endpoint."
A new endpoint can be used to agree to terms and conditions:
- POST
/api/v1/accounts/{id}/terms_and_conditions/agree
2020-12-06
-
Improved the error responses for payment validation and creation, so that validation errors are easier to parse. This field has also been added to the response:
- POST
/api/v1/payments/create: response only - POST
/api/v1/payments/validate: response only - POST
/api/v1/payments/update/{payment_id}: response only
- POST
-
Added POST
/api/v1/beneficiary_api_schemas/generate, a new endpoint that enables users to obtain required fields and associated validation rules. -
Added POST
/api/v1/beneficiary_form_schemas/generate, a new endpoint that provides UI definitions for users to create a beneficiary form that can change dynamically with the payment field requirement change made by Airwallex.
2020-11-08
-
Individual accounts are now supported, and the following new fields have been added to the account resource:
account_details.individual_details, only used for individual accountsaccount_details.legal_entity_type, can be set toBUSINESSorINDIVIDUAL, defaults toBUSINESSaccount_usagecustomer_agreementsprimary_contact.mobile
-
This field has also been added to the response:
requirements, currently only used for individual accounts
-
In addition, these fields have been eliminated for business accounts, replaced by similar fields in the
new customer_agreementsfield:- Removed:
account_details.business_details.agreed_to_terms - Added:
customer_agreements.agreed_to_terms_and_conditions - Removed:
account_details.business_details.opt_in_for_marketing - Added:
customer_agreements.opt_in_for_marketing
- Removed:
-
These changes apply to the following endpoints:
- GET
/api/v1/account, response only - GET
/api/v1/accounts, response only - GET
/api/v1/accounts/{id}, response only - POST
/api/v1/accounts/create, request and response - POST
/api/v1/accounts/{id}/update, request and response - POST
/api/v1/accounts/{id}/submit, response only
- GET
-
Lastly, this endpoint is deprecated:
- POST
/api/v1/accounts/{id}/clone
- POST
2020-09-28
-
Enhanced card creation and updating to take into account cardholder details and verification requirements.
-
POST
/api/v1/cards/create:- The
name_on_cardfield has been deprecated. - When
issue_tois set to ORGANISATION, the business's name will be used as the name on card. - When
issue_tois set to INDIVIDUAL, thecardholder_idfield is required and the cardholder's name will be used as the name on card. - The
primary_contact_detailsfield is no longer required. These details may be set only whenissue_tois set to ORGANISATION. - Added
primary_contact_details.email. - Removed
primary_contact_details.date_of_birth. - Added validation for
primary_contact_details.mobile_number
- The
-
POST
/api/v1/cards/{id}/update:- Added the ability to update primary contact details for expense cards.
-
2020-04-30
-
Renamed Payment Attempt statuses
-
PENDINGtoAUTHENTICATION_REDIRECTED -
SUCCEEDEDtoCAPTURE_REQUESTED -
VOIDEDtoCANCELLED -
PROCESSINGtoRECEIVED -
REDIRECT_AUTHENTICATIONtoAUTHENTICATION_REDIRECTED -
REQUESTED_CAPTUREtoCAPTURE_REQUESTEDImpacted urls are:
- /api/v1/pa/payment_intents/
- /api/v1/pa/payment_attempts/
-
2019-09-09
-
Updated validation failed error response of the following endpoints for greater integration contract clarity. Full validation error details will no longer be returned from
create/update, and should instead be obtained by calling the relevantvalidateendpoint prior to submission. Specifically: for errors with codepayment_schema_validation_failed,detailsfield has been removed, andsourceandmessagewill now reflect the first validation error. -
POST
/api/v1/beneficiaries/createPOST/api/v1/beneficiaries/update/{beneficiary_id}POST/api/v1/payers/createPOST/api/v1/payers/update/{payer_id}POST/api/v1/payments/createPOST/api/v1/payments/update/{payment_id}Removed
detailsfield from error responses of all other endpoints, for increased contract clarity. The contents of this field did not add any value beyond what's already insourceandmessage, and was not documented accurately or usefully. A more useful details field will likely be introduced in the future. -
/api/v1/ (all endpoints)
- Enhancement of validation rules and requirement of fields for Account create/update/submit endpoints for UK and AU entity
-
POST
/api/v1/accounts/createand POST/api/v1/accounts/{id}/updatehave revised submission requirements:- Added new fields:
account_details.beneficial_owners.addressfor specifying beneficial owners address information. - Added new fields:
account_details.director_details.addressfor specifying director personal address information. - Added new fields:
account_details.legal_rep_details.addressfor specifying legal rep personal address information. - Added new fields:
account_details.business_details.as_trustee,account_details.business_details.trust_namefor specifying acting in capacity as a trustee. - Added new fields:
account_details.business_details.vat_numbersfor specifying Value Added Tax (VAT) in a particular state. - Added new object:
account_details.authorised_person_detailsfor specifying person purporting to act information specific to AU entity. - Updated fields
account_details.business_details.industry_category,account_details.business_details.industry_sub_category,account_details.business_details.purpose.
- Added new fields:
-
POST
/api/v1/accounts/{id}/submit- Updated validation rules for fields for UK and AU entity, (some previously optional fields are now conditionally required for submission).
- Updated validation rules for the category of industry.
- Updated validation rules for sub industry category with enumeration.
- Updated validation rules for the purpose with enumeration.
2017-01-01
This is the initial version of Airwallex API.