Skip to main content
POST
/
transfers
Create Transfer
curl --request POST \
  --url https://{defaultHost}/transfers \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "origin_id": "<string>",
  "amount": 123,
  "destination_id": "<string>",
  "currency": "usd",
  "idempotence_key": "<string>",
  "notes": "<string>",
  "metadata": {},
  "expires_at": "2023-11-07T05:31:56Z",
  "redeemable_count": 123
}
'
{
  "id": "<string>",
  "amount": 123,
  "currency": "<string>",
  "created_at": "2023-11-07T05:31:56Z",
  "origin_ledger_account_id": "<string>",
  "destination_ledger_account_id": "<string>",
  "origin": {
    "typename": "Company",
    "id": "<string>",
    "route": "<string>",
    "title": "<string>"
  },
  "destination": {
    "typename": "Company",
    "id": "<string>",
    "route": "<string>",
    "title": "<string>"
  },
  "fee_amount": 123,
  "notes": "<string>",
  "metadata": {}
}

Authorizations

Authorization
string
header
required

An account API key, account scoped JWT, app API key, or user OAuth token.

Headers

Api-Version-Date
string<date>

Pins the request to a dated API version.

Example:

"2026-07-01"

Body

application/json
origin_id
string
required

The account sending the funds. A user ID (user_xxx), account ID (biz_xxx), or ledger account ID (ldgr_xxx).

amount
number
required

The amount to move, in the transfer currency. For example 25.00.

type
enum<string>

The kind of money movement. Defaults to ledger.

Available options:
ledger,
wallet_send,
claim_link
destination_id
string

The recipient. Required for ledger and wallet_send (a user_/biz_/ldgr_ ID, or — for sends — an email). Omit for claim_link.

currency
string

Currency, such as usd. Required for ledger transfers.

Example:

"usd"

idempotence_key
string | null

Ledger transfers only. A unique key to prevent duplicate transfers.

notes
string | null

Ledger transfers only. A short note describing the transfer.

metadata
object

Ledger transfers only. Custom key-value pairs attached to the transfer. Max 50 keys, 100 chars per key, 500 chars per string value.

expires_at
string<date-time> | null

claim_link only. Link expiry as an ISO 8601 timestamp. Defaults to 24 hours from creation.

redeemable_count
integer

claim_link only. How many different users can claim the link. Defaults to 1.

Response

money movement created

A transfer of credit between two ledger accounts.

id
string
required

Transfer ID.

amount
number
required

Transfer amount.

currency
string
required

Transfer currency.

created_at
string<date-time>
required

When the transfer was created.

origin_ledger_account_id
string
required

Source ledger account ID.

destination_ledger_account_id
string
required

Destination ledger account ID.

origin
Company · object
required

Account or user sending funds.

destination
Company · object
required

Account or user receiving funds.

fee_amount
number | null

Fee charged for the transfer.

notes
string | null

Transfer note.

metadata
object

Custom metadata attached to the transfer.