Skip to main content
A Transfer represents a requested movement of funds through a connected bank account. It is a write-side API object, unlike a Transaction, which is an observed bank record after the fact. Transfer access is subject to your API key scopes, the connected bank’s capabilities, and the delegated user’s bank-side permissions.
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 with POST /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:
External 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

Use GET /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 is failed, returned, or cancelled, failureReason may include:
  • insufficient_funds
  • invalid_destination
  • unsupported_transfer_type
  • provider_rejected
  • provider_unavailable
  • timed_out
  • unknown

Endpoints

Create transfer

List transfers

Get transfer

Retry transfer

Required scopes