Skip to main content
Move funds between your application’s balance and your users’ balances, or between two users.
“Requirement: Your application must be a public app.”

Quick Start

Send $10 from a user to your application:
Send $10 from your application to a user:

Authentication

Transfers support two authentication methods. The method you choose determines who the sender is.

Bearer Token

Use a user OAuth token obtained via generateUserAccessToken or through the OAuth refresh flow. The token must include the MAKE_PAYOUT_TRANSFER_SEND scope.

Basic Auth

Use your application’s Api Key.

Input

CreateTransferInput

“Only one of bankCardId, bankAccountId, or paypalVaultId can be specified per request. If none is provided, the transfer draws from the sender’s spend account (and rewards when useRewardsBalance is true). External funding sources are not available with Basic Auth. Prepayment / gift-card balance is not an input on this mutation.”
📘 See Add Expense Details for full details on uploading attachments and working with memos and categories.

TransferDirection

Identify the recipient by account ID or by the external reference ID you assigned when creating the user. Provide one or the other, not both.
“The recipient must be a registered user of your application.”

Response


Examples

Collect payment from a user (Bearer)

No destination needed — defaults to your application. Optionally include bankCardId, bankAccountId, or paypalVaultId to fund from an external source instead of the user’s cash balance. Pass useRewardsBalance: true to include the user’s rewards balance; see Fund account transfers with rewards.

Disburse funds to a user (Basic Auth)

Use externalReferenceId instead of accountId to identify the recipient by the ID you assigned.

Transfer between two users (Bearer)

Fund with rewards (Bearer)

Cash is taken from the sender’s spend account first. Rewards cover the remainder. See Fund account transfers with rewards.

Success response


Idempotency

Every request must include a unique idempotencyKey (a string you generate). If the same key is sent more than once, the API returns the result of the original request without creating a duplicate transfer. Keys are valid for 10 minutes.

Errors

Errors follow the standard GraphQL error format:

Common Error