Skip to main content
POST
Progress a waiting transfer

What this endpoint does

Releases an on-ramp transfer waiting at awaiting_client_action on a client-gated route so it converts at the live rate at the moment of the call and is delivered like any other funding.

When to use it

Call it once you have decided to accept a payment that arrived on a route with clientGate enabled. Send an empty body.

Before you call

Use a secret API key with transfer write access and pass a transfer owned by this tenant account. A request made from a console session also needs a recent second-factor confirmation. The customer must still be entitled for on-ramp (403 entitlement_lapsed otherwise; a refund is still available).

Money and balance effect

Converts the full landed AUD at the live rate struck when you progress, then sends the stablecoin to the route’s destination. Nothing is converted before you call this.

States and completion

The transfer re-enters screening and continues through the normal states to completed. A repeat call after it has taken effect returns 200 with the current state. A transfer that is not waiting returns 409 transfer_not_awaiting_client_action; 409 client_gate_decision_taken means a refund was already chosen; 409 refund_in_progress, refund_may_have_executed, refund_recall_ambiguous, or refund_evidence_unverifiable mean an earlier refund attempt must be settled first.

Safe retries

Send a unique Idempotency-Key. If the response is lost, retry with the same key, or read the transfer first. 409 client_gate_busy and client_gate_window_unavailable mean another action on the transfer is in progress — retry shortly. Read Activity and history for the complete workflow.

Authorizations

Authorization
string
header
required

Send the same Wayex API key as Authorization: Bearer <key>.

Headers

Idempotency-Key
string
required

A unique key for this logical action. Reuse the same key and identical payload when retrying after an unknown response.

Required string length: 8 - 255

Path Parameters

id
string
required

Body

application/json

The body is of type object.

Response

The transfer after the decision.

id
string
required

Unique identifier for this transfer.

Minimum string length: 1
counterpartyId
string
required

The client account (counterparty) this transfer belongs to. For API callers this is always your own account id.

Minimum string length: 1
customerId
string
required

The customer this transfer is for.

Minimum string length: 1
status
enum<string>
required

Current lifecycle status. State advances asynchronously, so treat this as the source of truth.

Available options:
created,
validated,
screening,
fx_executed,
completed,
awaiting_deposit,
deposit_detected,
deposit_confirming,
deposit_cleared,
sweeping,
onforwarding,
payout_instructed,
payout_held,
payout_settled,
awaiting_payin,
payin_cleared,
disbursing,
sending,
send_confirming,
pooled,
awaiting_client_action,
refunding,
on_hold,
frozen,
failed,
cancelled,
returned,
expired,
reversing,
reversed
sourceDepositInstructions
object
required
references
object
required
timeline
object[]
required

Ordered history of the states this transfer passed through, with timestamps.

createdAt
string<date-time>
required

When the transfer was created (ISO 8601).

updatedAt
string<date-time>
required

When the transfer was last updated (ISO 8601).

type
enum<string>
required
Available options:
offramp
source
object
required
destination
object
required
destinationAmount
string
required

Net AUD the customer receives as a decimal string; set once the conversion executes ("0" before).

Pattern: ^\d+(\.\d+)?$
destinationCurrency
enum<string>
required
Available options:
AUD
routeId
string

The payment route whose funding spawned this transfer.

Minimum string length: 1
quoteId
string

Reference to the live price struck at funding; absent until the conversion executes.

Minimum string length: 1
metadata
object
developerFee
object

Your developer fee withheld from this conversion (AUD). Present once the conversion executes; omitted on a returned, reversing or reversed transfer.

exchangeRate
string

Destination units per one source unit the conversion executed at, excluding your developer fee. Present once the conversion executes.

Pattern: ^\d+(\.\d+)?$