Airwallex actions
Reference for the Airwallex actions and trigger: the API key connection, each action id, the four registered event names, settings and an example.
The Airwallex block reads balances, financial transactions, payment intents and deposits, and the Airwallex trigger starts a workflow on a payment or deposit event. For the plain-language guide, see Airwallex.
When to use it
Use the actions for read-only cash reporting and reconciliation. Use the trigger to react when a payment attempt is paid or settled, or a deposit is pending or settled. The block has no write actions.
Connection
- Provider id:
airwallex. API key connection, not a sign-in. - The connect form takes three values, all required: Client ID, Account ID and API key. Over the API,
POST /api/v1/connections/airwallex/api-keytakes them asclientId,externalAccountIdand the key (see Connections API). - The Account ID is stored as the connection's external account id. Inbound events are routed to the connection whose external account id equals the event's
account_id. - Pin an account with
config.connection. Without it, the step uses the company's default Airwallex connection.
Actions
| Action id | Studio label | What it does |
|---|---|---|
airwallex.listTransactions | List Transactions | List financial transactions, filtered by created date, currency and status. |
airwallex.getBalance | Get Balance | Read the current balance of each currency. |
airwallex.listPaymentIntents | List Payment Intents | List payment intents, filtered by created date, currency and status. |
airwallex.listDeposits | List Deposits | List deposits, filtered by created date, currency and status. |
Settings
| Field | Studio label | Type | Used by | Required for |
|---|---|---|---|---|
connection | Airwallex Account | string (connection id) | All | Optional. Without it the step uses the company default connection for this system |
from_created_at | From Date | string | listTransactions, listPaymentIntents, listDeposits | |
to_created_at | To Date | string | listTransactions, listPaymentIntents, listDeposits | |
currency | Currency | string | listTransactions, listPaymentIntents, listDeposits | |
status | Status | string | listTransactions, listPaymentIntents, listDeposits | |
page_num | Page Number | number | listTransactions, listPaymentIntents, listDeposits | |
page_size | Page Size | number | listTransactions, listPaymentIntents, listDeposits |
from_created_at and to_created_at are ISO 8601 date-times. All filters are optional; getBalance takes none.
Output
A step's output is the Airwallex API response as is, for example {{steps.list_deposits.items}} for a list. getBalance returns the list of currency balances.
Trigger
Block type airwallex_trigger, trigger config type airwallex_event. The event is stored in selectedTriggerId, not eventKind.
| Event name | Studio label |
|---|---|
payment_attempt.paid | Payment Attempt Paid |
payment_attempt.settled | Payment Attempt Settled |
deposit.settled | Deposit Settled |
deposit.pending | Deposit Pending |
These are the only Airwallex events the handler registers. A trigger matches when selectedTriggerId equals the event name. The optional filter uses MongoDB-style operators against the event's data.object, for example {"currency": {"$in": ["USD", "EUR"]}}.
The trigger block declares these outputs: event (the full payload), eventType, data (the event's data.object), accountId and occurredAt.
At run time the event reaches the workflow as run input, under input.webhookEvent:
| Path | Meaning |
|---|---|
{{input.webhookEvent.eventType}} | The event name, such as deposit.settled |
{{input.webhookEvent.payload.data.<field>}} | A field of the event's data.object, such as amount or currency |
{{input.webhookEvent.payload.externalAccountId}} | The Airwallex account_id |
{{input.webhookEvent.payload.occurredAt}} | The event's created_at |
{{input.webhookEvent.payload.raw}} | The original Airwallex event |
Delivery and signatures
- Events arrive at
POST /webhooks/airwallexon the API host. - Each request is verified with HMAC-SHA256 over
x-timestampplus the raw body, compared with the hexx-signatureheader. A timestamp more than 300 seconds from the server clock is rejected. - Subscriptions are configured in the Airwallex dashboard. Loopfour does not register them per connection.
Example
Every morning, read yesterday's settled deposits in USD.
{
"name": "Daily Airwallex deposits",
"trigger": { "type": "schedule", "cron": "0 7 * * *", "timezone": "America/Los_Angeles" },
"steps": [
{
"id": "list_deposits",
"type": "action",
"name": "List settled deposits",
"action": "airwallex.listDeposits",
"config": {
"from_created_at": "2026-11-10T00:00:00Z",
"to_created_at": "2026-11-11T00:00:00Z",
"currency": "USD",
"status": "SETTLED",
"page_size": 100
}
}
]
}A workflow started by the trigger instead uses:
{ "type": "airwallex_event", "selectedTriggerId": "deposit.settled", "filter": { "currency": { "$eq": "USD" } } }Live catalog
GET /api/v1/blocks/airwallexreturns the actions and fields;GET /api/v1/blocks/airwallex_triggerreturns the trigger block.GET /api/v1/blocks/airwallex/actions/<operation>/examplesreturns stored examples where they exist.
Errors and limits
- An Airwallex API error fails the step.
- A missing connection fails the step with
connectionId is required. - Unsigned, mis-signed or stale event deliveries are rejected and start no run.
Integration action reference
Reference for integration actions: how action names are formed, how a step selects one, and how to list the live catalog from the API.
Attio actions
Reference for the Attio actions: the sign-in connection, each action id, the fields each executor reads, the record output and a complete example.
Loopfour