Skip to content

Create Transfer Endpoint

POST
/api/v1/budget/transfers
curl --request POST \
--url https://example.com/api/v1/budget/transfers \
--header 'Content-Type: application/json' \
--data '{ "from_account_id": 1, "to_account_id": 1, "transaction_date": "2026-04-15", "amount": 1, "received_amount": 1, "description": "example" }'

Create a transfer: an expense leg on the source account and an income leg on the destination, linked under one group id. Across currencies received_amount is required.

Media typeapplication/json
TransferCreate
object
from_account_id
required
From Account Id
integer
to_account_id
required
To Account Id
integer
transaction_date
required
Transaction Date
string format: date
amount
required
Any of:
number
> 0
received_amount
Any of:
number
> 0
description
Any of:
string
<= 2000 characters

Example generated

{
"from_account_id": 1,
"to_account_id": 1,
"transaction_date": "2026-04-15",
"amount": 1,
"received_amount": 1,
"description": "example"
}

Successful Response

Media typeapplication/json
TransferOut

A transfer pair, expense leg first. transfer_group_id is null after an unlink.

object
transfer_group_id
required
Any of:
string
legs
required
Legs
Array<object>
TransactionOut
object
id
required
Id
integer
user_id
required
User Id
integer
account_id
required
Any of:
integer
amount
required
Amount
string
transaction_type
required
Transaction Type
string
legacy_category
required
Any of:
string
category_id
required
Any of:
integer
subcategory_id
required
Any of:
integer
description
required
Any of:
string
suggested_label
required
Any of:
string
suggested_label_user_set
required
Suggested Label User Set
boolean
transaction_date
required
Transaction Date
string format: date
planned_transaction_id
required
Any of:
integer
occurrence_period
required
Any of:
string format: date
status
required
Status
string
Allowed values: pending cleared reconciled
reconcile_id
required
Any of:
integer
transfer_group_id
Any of:
string
transfer_peer
Any of:
TransferPeerOut

The other leg of a transfer, as seen from one leg.

object
id
required
Id
integer
account_id
required
Any of:
integer
amount
required
Amount
string
tag_ids
required
Tag Ids
Array<integer>
splits
Splits
Array<object>
default:
SplitLineOut
object
category_id
required
Category Id
integer
subcategory_id
required
Any of:
integer
amount
required
Amount
string
created_at
required
Created At
string format: date-time
updated_at
required
Updated At
string format: date-time
running_balance
Any of:
string
drift
Any of:
string
drift_snapshot_date
Any of:
string format: date
payee_id
Any of:
integer
payee
Any of:
PayeeRef

The payee a transaction points at.

object
id
required
Id
integer
name
required
Name
string

Example

{
"legs": [
{
"status": "pending",
"splits": []
}
]
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object

Example generated

{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}