Source-of-truth order
- The current resource returned by its
GETendpoint is authoritative for workflow state. - Wallet movements are authoritative for recorded balance changes.
- Webhooks tell you when to fetch those resources; they are not an ordered ledger.
- Console activity is a human-readable view over the same records.
References to store
Generate the idempotency key before the first submission and persist it with your command. A new
network attempt is not a new business action.
Search operations
Use the consolidated operation search for payout, conversion, and withdrawal queues. It can also recover an operation by the stableexternalReference after a create response is lost.
kind, status, externalReference, from, and to. Date filters are ISO 8601
timestamps with an offset. When hasMore is true, pass nextCursor unchanged as cursor while
keeping the other filters identical. Cursors are opaque and must not be decoded, edited, or reused
with a different filter set.
Common operation states
Every UI and integration message should answer three questions: what happened, whether the funds are
spendable, and who acts next. Unknown must never be rendered as zero or failed.
Search and export transactions
The transaction search starts from immutable wallet movements, then adds the linked operation kind, status, and external reference where available. It excludes beneficiary bank details and saved wallet addresses.nextCursor in the same way as operation search. For a finance export, use the same
filters without a cursor:
transaction_export_too_large, narrow the date
range or other filters and retry. The CSV is a point-in-time record of wallet effects; a linked
operation in accepted, held, or submitted is still not externally settled.
Consume webhooks safely
Treasury emits resource updates including:treasury.wallet.updatedtreasury.payin.updatedtreasury.deposit.updatedtreasury.payout.updatedtreasury.withdrawal.updatedtreasury.conversion.updated
POST /v1/webhooks.
1
Verify the signature
Calculate HMAC-SHA256 over the exact raw body using the signing secret and compare it to
X-Wayex-Signature in constant time.2
Deduplicate
Store
eventId. If it has already been processed, acknowledge the delivery without applying it
again.3
Acknowledge quickly
Return a
2xx, then process the event asynchronously in your own system.4
Fetch current state
Use the resource type and ID to call the relevant
GET. Do not assume delivery order.Daily account reconciliation
For each tenant account and asset:reserved, incoming funds still in pending, and external settlement references separately.
Lost-response example
If a payout request times out after submission:- Do not generate another idempotency key.
- Retry the identical request with the original key.
- If the response remains unknown, search operations by the original external reference.
- Read its reservation and status.
- Create a new payout only after the first operation is conclusively absent or terminal and safe to retry.
Go-live checks
- Run fund, pay, convert, withdraw, return, and failure cases against the correct tenant account.
- Prove a credential from one account cannot read or spend another.
- Reconcile gross, fee, net credit, source debit, reservation, and closing balance.
- Exercise duplicate and out-of-order webhook delivery.
- Retry each value-changing request after a simulated lost response.
- Confirm your operators understand
acceptedversus external settlement.

