Airwallex logo

Offboardings

Copy for LLMView as Markdown

The Offboarding API allows platforms to programmatically submit offboarding requests for connected accounts and query the status of submitted offboardings.

Create an offboarding raises an Airwallex Operations-owned offboarding case for account closure. It differs from Suspend account, which temporarily suspends an account and can be reversed with Reactivate account. You can create an offboarding for a connected account that is not already closed or pending closure. Create Offboarding is not limited to ACTIVE accounts. While an offboarding is in progress (PENDING), the connected account status does not change. After it completes successfully (COMPLETED), the account enters pending closure and the connected account status returned by the client API is SUSPENDED on all API versions. After a 30-day grace period the account is permanently closed; from API version 2026-08-21 that surfaces as CLOSED (earlier versions continue to return SUSPENDED). If multiple connected accounts share the same client legal entity, you cannot create an offboarding for another account under that legal entity until the existing offboarding request is completed. Balance handling during offboarding is managed by Airwallex operations and is not available through this API.

Endpoints
POST /api/v1/accounts/{account_id}/offboardings/create
GET /api/v1/accounts/{account_id}/offboardings/{id}
GET /api/v1/accounts/{account_id}/offboardings

Create an Offboarding

POST /api/v1/accounts/{account_id}/offboardings/create

Submit an offboarding request for a connected account. This creates an Airwallex Operations-owned offboarding case; it does not replace operations handling of the closure workflow.

You can create an offboarding for a connected account that is not already closed or pending closure. Create Offboarding is not limited to ACTIVE accounts. While the offboarding case is PENDING, the connected account status does not change. After the offboarding completes successfully (COMPLETED), the account enters pending closure and the connected account status returned by the client API is SUSPENDED on all API versions. After a 30-day grace period the account is permanently closed; from API version 2026-08-21 that surfaces as CLOSED (earlier versions continue to return SUSPENDED).

If multiple connected accounts share the same client legal entity, you cannot create an offboarding for another account under that legal entity until the existing offboarding request is completed.

Use this endpoint for official account closure. To temporarily disable an account, use Suspend account instead. Balance handling during offboarding is managed by Airwallex operations and is not available through this API.

Path parameters
account_idrequiredstring

The account ID of the connected account to offboard.

Request body
reason_coderequiredstring

Reason code for offboarding the connected account. Possible values:

  • COMMERCIAL_DECISION: Account closure due to a commercial factors, such as account inactivity, low profitability, or other business-strategy reasons.

  • INCOMPLETE_ONBOARDING_KYC: The account holder signed up but did not complete KYC within specific timeframe.

  • COMPANY_DISSOLVED_OR_LIQUIDATING: The associated company has been dissolved or entered liquidation.

  • POLICY_VIOLATION: Offboarding due to a breach of the Acceptable Use Policy or Terms of Service. This includes operating an unsupported business model (e.g., prohibited industry, unsupported country) or actively misusing the account (e.g., personal use, circumvention of controls).

  • FRAUDULENT_ACTIVITY: Offboarding due to evidence of fraud. Some examples: application fraud (stolen/fake identity), merchant fraud, payment fraud, or card testing.

  • SANCTIONS_EXPOSURE: Offboarding due to a confirmed sanctions link or exposure, violating global sanctions policies.

  • SUSPECTED_MONEY_LAUNDERING_OR_TERRORIST_FINANCING: Offboarding due to suspicion of Money Laundering (ML), Terrorist Financing (TF), or other serious financial crimes, based on transaction patterns, unclear source of funds/wealth, or links to illicit activities (e.g., human trafficking, shell companies).

  • REPUTATIONAL_RISK_OR_ADVERSE_MEDIA: Offboarding due to negative public information (adverse media) or other factors that pose a significant reputational risk to Airwallex, even if not directly linked to a confirmed financial crime.

  • NOT_COMPLY_WITH_ONGOING_REVIEWS: Offboarding due to repeated failure to respond to Risk and Compliance-related Requests for Information (RFI) or Customer Due Diligence (CDD) reviews regarding their account activity.

  • LINKAGE_TO_HIGH_RISK_CLIENT: Offboarding due to a confirmed connection (e.g., shared ownership, validated linked devices) to another entity that has been flagged or offboarded for high-risk activity, such as fraud or financial crime.

  • OTHER: Client initiated closure or other reason if not listed above.

commentstring

Optional comment providing additional context for the offboarding request.

Response body - 201 Created
commentstring

Optional comment specified in the request

created_atstring

The time when this case was created

idstring

A unique ID of the offboarding case

reason_codestring

Reason for the offboarding specified in the request

statusstring

Status of the offboarding case. One of: PENDING, COMPLETED, CANCELLED. While an offboarding is PENDING, the connected account status does not change. After the offboarding is COMPLETED, the account enters pending closure and the client API returns SUSPENDED on all API versions. After a 30-day grace period the account is permanently closed (CLOSED from API version 2026-08-21; SUSPENDED on earlier versions).

updated_atstring

The time when this case was last updated

Errors
Error statusDescription
400

Possible errors: invalid_argument, bad_request, operation_failed

POST /api/v1/accounts/{account_id}/offboardings/create
$curl --request POST \
> --url 'https://api.sandbox.airwallex.com/api/v1/accounts/account_id/offboardings/create' \
> --header 'Authorization: Bearer <token>' \
> --header 'Content-Type: application/json' \
> --data '{
> "comment": "Account no longer needed",
> "reason_code": "OTHER"
>}'
Response (201 Created)
1{
2 "comment": "Account no longer needed",
3 "created_at": "2026-03-24T10:00:00+0000",
4 "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
5 "reason_code": "OTHER",
6 "status": "PENDING",
7 "updated_at": "2026-04-10T12:00:00+0000"
8}
Was this section helpful?

Retrieve an Offboarding

GET /api/v1/accounts/{account_id}/offboardings/{id}

Retrieve details of a specific offboarding by its unique ID.

Path parameters
account_idrequiredstring

The account ID of the connected account.

idrequiredstring

The unique ID of the offboarding case.

Response body - 200 OK
commentstring

Optional comment specified in the request

created_atstring

The time when this case was created

idstring

A unique ID of the offboarding case

reason_codestring

Reason for the offboarding specified in the request

statusstring

Status of the offboarding case. One of: PENDING, COMPLETED, CANCELLED. While an offboarding is PENDING, the connected account status does not change. After the offboarding is COMPLETED, the account enters pending closure and the client API returns SUSPENDED on all API versions. After a 30-day grace period the account is permanently closed (CLOSED from API version 2026-08-21; SUSPENDED on earlier versions).

updated_atstring

The time when this case was last updated

Errors
Error statusDescription
400

Possible errors: invalid_argument, bad_request, operation_failed

404

Possible errors: not_found

GET /api/v1/accounts/{account_id}/offboardings/{id}
$curl --request GET \
> --url 'https://api.sandbox.airwallex.com/api/v1/accounts/account_id/offboardings/offboarding_id' \
> --header 'Authorization: Bearer <token>' \
> --header 'Content-Type: application/json'
Response (200 OK)
1{
2 "comment": "Account no longer needed",
3 "created_at": "2026-03-24T10:00:00+0000",
4 "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
5 "reason_code": "OTHER",
6 "status": "PENDING",
7 "updated_at": "2026-04-10T12:00:00+0000"
8}
Was this section helpful?

List all Offboardings

GET /api/v1/accounts/{account_id}/offboardings

Retrieve a paginated list of offboardings for a connected account.

Path parameters
account_idrequiredstring

The account ID of the connected account to list offboardings for.

Query parameters
from_created_atstring

The start date of created_at in ISO8601 format (inclusive).

pagestring

A bookmark for use in pagination to retrieve the next or previous page of results.

page_sizeinteger

Number of results per page. Default 100, min 10, max 200.

statusstring

Status of offboarding request.

CANCELLED
COMPLETED
PENDING
to_created_atstring

The end date of created_at in ISO8601 format (inclusive).

Response body - 200 OK
itemsarray

Paged results.

items.commentstring

Optional comment specified in the request

items.created_atstring

The time when this case was created

items.idstring

A unique ID of the offboarding case

items.reason_codestring

Reason for the offboarding specified in the request

items.statusstring

Status of the offboarding case. One of: PENDING, COMPLETED, CANCELLED. While an offboarding is PENDING, the connected account status does not change. After the offboarding is COMPLETED, the account enters pending closure and the client API returns SUSPENDED on all API versions. After a 30-day grace period the account is permanently closed (CLOSED from API version 2026-08-21; SUSPENDED on earlier versions).

items.updated_atstring

The time when this case was last updated

page_afterstring

The page bookmark used for search the item after the result.

page_beforestring

The page bookmark used for search the item before the result.

Errors
Error statusDescription
400

Possible errors: invalid_argument, bad_request, operation_failed

GET /api/v1/accounts/{account_id}/offboardings
$curl --request GET \
> --url 'https://api.sandbox.airwallex.com/api/v1/accounts/account_id/offboardings' \
> --header 'Authorization: Bearer <token>' \
> --header 'Content-Type: application/json'
Response (200 OK)
1{
2 "items": [
3 {
4 "comment": "Account no longer needed",
5 "created_at": "2026-03-24T10:00:00+0000",
6 "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
7 "reason_code": "OTHER",
8 "status": "PENDING",
9 "updated_at": "2026-04-10T12:00:00+0000"
10 }
11 ],
12 "page_after": "<string>",
13 "page_before": "<string>"
14}
Was this section helpful?