Skip to main content

Payout Management

Programmatically send money from your Wonder Wallet to bank accounts via FPS, RTGS, or SWIFT. Register a payee once with their bank details, then create payout requests — one-off or scheduled — to transfer funds. Track each transfer through its full lifecycle via webhook callbacks.

Workflow

A payout always starts with a payee. Register it once, then reference its ID in every transfer.

  1. Call create payee with the recipient's bank details and transfer method. The response returns a payee.id(UUID).
  2. Call create payout request for a transfer.
  3. Call retrieve a payout request by payout_requests.id for full payout details, including current transfer_status, and you can receive the webhook on each transfer status change, And need to configure your webhook destination in Wonder dashboard first. Then Wonder will send the webhook to your webhook destination that you configured.

Payee

A payee is the recipient of funds. Register their bank details and transfer method once, then reference their ID in every payout request.

FieldRequiredDescription
TypeYesBusiness or People.Determines whether company_name (Business) or date_of_birth (People + FPS) is required.
NicknameYesDisplay name in the Wonder App. Max 50 characters.
EmailYesPayee email address. Max 100 characters.
Phone_country_codeYesCountry calling code (e.g. +852).
Phone_numberYesPhone number.
Company_nameNoRequired when type = Business. Max 120 characters.
Payout_category_nameYesPayout purpose: Related Company Transfer, Capital Investment, or Office Supplies.
CountryYesPayee's country code (e.g. HK).
CurrencyYesCurrency of the receiving account (e.g. HKD, USD).
Transfer_methodYesHK FPS - Account Number, HK FPS - Mobile, HK FPS - Email, HK FPS - FPS ID, RTGS, or SWIFT.
Date_of_birthNoRequired when transfer_method is FPS and type = People. ISO date format (2000-10-24).

Transfer methods

Wonder supports transfers to both local and abroad.

Transfer MethodTypeCurrencySpeedNotes
FPSExternalHKD/CNYMinutes to hoursHong Kong Faster Payment System. Supports transfers via account_number, mobile_number, e-mail, or FPS-ID.
RTGSExternalHKD/CNY/USDT+1Real Time Gross Settlement. Typically used for larger-value bank transfers in Hong Kong.
SWIFTExternalAny supported currency1-3 business daysInternational wire transfers. Requires SWIFT/BIC code and account details.
info

Choose one transfer method: Only populate one transfer_method for one payee and one payout request.

Payout request

FieldRequiredDescription
Payee_idYesID returned by the Create Payee API.
CurrencyYesWhich Wonder Wallet currency to deduct from(e.g. HKD, USD).
AmountYesTransfer amount(e.g. 1000.00).
Reference_idNoYour system's unique ID. Max 80 characters.
RemarkNoNote sent to the payee's bank. Max 120 characters.
Schedule_atNoScheduled transfer time in ISO 8601 UTC format (e.g. 2025-11-29T15:30:00Z). Omitting this executes the transfer immediately.

Transfer status

StatusDescription
InitiatedRequest created; not yet submitted to the bank network.
Processing transferRequest is being processed by the bank or payment network.
SettledTransfer completed successfully. Funds have reached the payee.
ReversedTransfer was cancelled — either manually rejected or by the system for internal reasons.
RefundedBank rejected the transfer after it was sent. An additional pay-in is generated to return the funds to your wallet.
TerminatedRequest permanently stopped before processing.
info

Reversed vs Refunded

Reversed: The transfer never reached the bank network. Funds return directly to your wallet.

Refunded: The bank received the funds but rejected the transfer. An additional pay-in transaction is created to restore the balance.

Payout webhook

Wonder sends real-time webhooks to your webhook destination that you configured on Wonder dashboard at every stage of a payout's lifecycle. Use these webhook to track transfers without polling.

ActionWhen it trrigers
Payout_request.createdA payout request is successfully submitted.
Payout_request.processing transferRequest is being processed by the bank or payment network.
Payout_request.settledThe transfer completed. Funds have reached the payee's bank account.
Payout_request.reversedThe transfer was reversed by the system for internal reasons. Funds return to your wallet.
Payout_request.refundedThe bank received the funds but rejected the transfer. An additional pay-in transaction is created to restore your wallet balance.

The webhook format for payout request

{
"payout_request": {
"id": "1a2b3c4d-1111-2222-3333-444455556666",
"reference_id": "INV-2026-0001",
"payee_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"amount": "100.50",
"currency": "HKD",
"fee_amount": "1.50",
"fee_currency": "HKD",
"remark": "Invoice payment",
"transfer_method": "HK FPS - Account Number",
"transfer_status": "Settled",
"schedule_at": null,
"error_code": "",
"error_message": "",
"settled_at": "2026-07-22T04:05:00Z",
"reversed_at": null,
"refunded_at": null,
"cancelled_at": null,
"created_at": "2026-07-22T04:00:00Z",
"updated_at": "2026-07-22T04:05:00Z"
}
}

Create payee

Register a recipient with their bank details and transfer method. Returns a payee.id (UUID) that you reference in every payout request. Payees persist — create once, reuse indefinitely.

Get a payee

Retrieve a payee's full details — including bank account information and transfer method — by payee_id.

Delete a payee

Soft-delete a payee — sets deleted_at without permanently removing the record.

Create a payout request

Initiate a transfer by referencing a payee.id and other required fields. Optionally set schedule_at for a future transfer.

Get a payout request

Retrieve a payout request's full details and the linked payee information.

Cancel a scheduled payout request

Cancel a payout that hasn't been executed yet. Once cancelled, the transfer will not proceed.