Skip to Content
API ReferenceTransactions

Transactions

Endpoints for managing transactions.


List Transactions

GET /api/v2/bff/expenses

Returns a paginated list of transactions alongside all active categories (used by the expenses page).

Query Parameters (all optional):

ParameterTypeDescription
startYYYY-MM-DDFilter from this date (inclusive)
endYYYY-MM-DDFilter to this date (inclusive)
category_idintegerFilter by category
transaction_type"income" | "expense"Filter by type
pageintegerPage number (default: 1)
page_sizeintegerItems per page (default: 20, max: 100)

Response 200 OK:

{ "transactions": { "items": [ { "id": "uuid", "amount": "42.50", "date": "2026-04-13", "establishment": "Supermercado Extra", "description": "Weekly groceries", "category_id": 1, "category": "Alimentação", "tax_id": "12.345.678/0001-99", "entry_type": "image", "transaction_type": "expense", "payment_method": "debit", "confidence": 0.97, "created_at": "2026-04-13T10:00:00Z" } ], "total": 42, "page": 1, "page_size": 20 }, "categories": [ { "id": 1, "name": "Alimentação", "is_active": true } ] }

Create Transaction

POST /api/v2/transactions

Request Body:

FieldTypeRequiredDescription
amountdecimalYesPositive value, max 999999.99
category_idintegerYesMust reference an existing category
payment_method"credit" | "debit"YesPayment method
dateYYYY-MM-DDNoDefaults to today if omitted
transaction_type"income" | "expense"NoDefault: "expense"
entry_typestringNoDefault: "text"
establishmentstringNoMerchant name
descriptionstringNoFree-text description
tax_idstringNoCNPJ/CPF

Response 201 Created: Full Expense object (see response shape in List Transactions above).


Update Transaction

PUT /api/v2/transactions/{id}

All fields are optional — send only what changes.

Request Body: Same fields as Create, all optional.

Response 200 OK: Updated Expense object.

Response 404 Not Found: Transaction does not exist.


Delete Transaction

DELETE /api/v2/transactions/{id}

Response 204 No Content: Transaction deleted.

Response 404 Not Found: Transaction does not exist.

Last updated on