All external transfers require end-user approval in the bank portal. Waycore initiates the bank-side flow, then the transfer moves to
pending_bank_approval until the end user completes approval. Internal transfer approval requirements depend on the bank, account setup, and delegated-user permissions.Supported rails
The requested rail is sent as
transferType. For external transfers, the destination account identity is described separately by destination.paymentIdentifier.scheme, such as us_ach, uk_sort_code_account_number, ca_eft, au_bsb_account_number, or iban.
Creating transfers
Create transfers withPOST /v1/transfers. The endpoint returns 202 Accepted with a Transfer object.
Use an Idempotency-Key header when creating or retrying a transfer so retries are safe. If the same request is replayed, Waycore may return the original response with Idempotent-Replayed: true. If the same idempotency key is reused with a materially different request, the API returns 409 Conflict.
Internal transfer request:
Transfer lifecycle
requestedAmount is the amount requested by the caller. executedAmount is populated once the actual amount sent is known.
Listing and retrying
UseGET /v1/transfers to list transfers ordered by createdAt desc, id desc. You can filter by status, accountId, createdAtFrom, and createdAtTo, and paginate with cursor.
Use GET /v1/transfers/{id} to retrieve the latest known state for one transfer.
Use POST /v1/transfers/{id}/retry to retry a failed or retryable transfer. Retry requests support the same Idempotency-Key header as create requests. A retry returns 202 Accepted with the updated transfer.
If a transfer is not retryable, the API returns 409 Conflict.
Failure reasons
When a transfer isfailed, returned, or cancelled, failureReason may include:
insufficient_fundsinvalid_destinationunsupported_transfer_typeprovider_rejectedprovider_unavailabletimed_outunknown