88 Endpoints · OpenAPI JSON
Alle Endpunkte außer POST /v1/auth/login, /forgot-password und /setup-password erfordern Authorization: Bearer <API-Key oder Session-Token>. Fehlercodes: 400 Validierung · 401 Nicht authentifiziert · 403 Kein Scope · 404 Nicht gefunden · 409 Konflikt
Journal
GET /v1/accounts
GET/v1/accounts
Query — limit, offset
Response — accounts, total, offset, limit
POST /v1/accounts
POST/v1/accounts
Body — number, name, type, category, report_group
Response — number, name, type, category, report_group, is_system
GET /v1/accounts//entries
GET/v1/accounts//entries
Query — startDate, endDate, limit
Response — entries, balance
GET /v1/accounts/search
GET/v1/accounts/search
Query — q, type
Response — accounts
POST /v1/bookings
POST/v1/bookings
Body — booking_date, description, lines, skip_duplicate_check, adjustment_period, fx, external_reference, custom_metadata, document_id
Response — intent_id, event_count
POST /v1/bookings/opening-balances
POST/v1/bookings/opening-balances
Body — booking_date, balances
Response — intent_id, event_count, total_debit, total_credit
POST /v1/documents
POST/v1/documents
Body — file
Response — id, mime_type, original_name
GET /v1/documents//file
GET/v1/documents//file
Response — Binäre Datei mit Content-Type (z. B. application/pdf) und Content-Disposition: attachment; filename="originalname.pdf".
GET /v1/documents//preview
GET/v1/documents//preview
Response — Binäre Datei mit Content-Type (z. B. application/pdf) und Content-Disposition: inline; filename="originalname.pdf".
GET /v1/journal
GET/v1/journal
Query — account, startDate, endDate, search, externalReference, limit
Response — entries
GET /v1/journal/
GET/v1/journal/
Response — intent_id, entries, summary, linked_intents, metadata
POST /v1/journal/reverse
POST/v1/journal/reverse
Body — intent_id, reason, posting_mode
Response — reversal_intent_id, original_intent_id, event_count
Bank
GET /v1/bank-accounts
GET/v1/bank-accounts
Response — (array)
POST /v1/bank-accounts
POST/v1/bank-accounts
Body — name, iban, bic, account_number, currency
Response — angelegtes Bankkonto.
GET /v1/bank-accounts/
GET/v1/bank-accounts/
Response — Bankkonto inkl. tx_count, unreconciled_count und last_tx_date.
PUT /v1/bank-accounts/
PUT/v1/bank-accounts/
Body — name
Response — aktualisiertes Bankkonto.
GET /v1/bank-accounts//reconciliation
GET/v1/bank-accounts//reconciliation
Response — Side-by-Side-Ansicht mit offenen vs. abgestimmten Transaktionen und aktuellem Buchungsstand. ledger.amount / unmatched_ledger.amount sind in currency, zusätzlich wird base_amount in base_currency zurückgegeben.
POST /v1/bank-accounts//upload
POST/v1/bank-accounts//upload
Body — multipart/form-data
Response — gleiche Struktur wie JSON-Import.
GET /v1/bank-accounts/balance-history
GET/v1/bank-accounts/balance-history
Query — days
Response — history, currentBalance, startBalance
GET /v1/bank-transactions
GET/v1/bank-transactions
Query — bank_account_id, start_date, end_date, search, status, limit, offset
Response — transactions, total
POST /v1/bank-transactions
POST/v1/bank-transactions
Body — bank_account_id, transactions
Response — batch_id, total_rows, imported, skipped_duplicates, errors
GET /v1/bank-transactions/
GET/v1/bank-transactions/
Response — transaction
POST /v1/bank-transactions//dismiss
POST/v1/bank-transactions//dismiss
Response — ok
GET /v1/bank-transactions//evidence
GET/v1/bank-transactions//evidence
Response — evidence
PUT /v1/bank-transactions//evidence
PUT/v1/bank-transactions//evidence
Body — evidence_type, title, note, document_id, metadata
Response — gespeicherter Belegnachweis.
POST /v1/bank-transactions//reconcile
POST/v1/bank-transactions//reconcile
Body — intent_id, candidate_kind, open_item_account
Response — ok, mode, intent_id
POST /v1/bank-transactions//unmatch
POST/v1/bank-transactions//unmatch
Response — Ergebnis der Aufhebung.
POST /v1/bank-transactions/batch-reconcile
POST/v1/bank-transactions/batch-reconcile
Body — pairs
Response — reconciled, errors
POST /v1/bank-transactions/import-file
POST/v1/bank-transactions/import-file
Body — multipart/form-data
Response — gleiche Struktur wie JSON-Import (batch_id, imported, skipped_duplicates).
GET /v1/bank-transactions/suggestions
GET/v1/bank-transactions/suggestions
Query — bank_account_id
Response — (array)
GET /v1/bank-transactions/unreconciled-count
GET/v1/bank-transactions/unreconciled-count
Response — count
Receivables
GET /v1/customers
GET/v1/customers
Query — search, is_active, limit, offset
Response — (array)
POST /v1/customers
POST/v1/customers
Body — name, tax_id, vat_id, iban, bic, address, default_account, notes
Response — angelegter Debitor.
DELETE /v1/customers/
DELETE/v1/customers/
Response — deaktivierter Debitor.
GET /v1/customers/
GET/v1/customers/
Response — Debitor inkl. open_amount.
PUT /v1/customers/
PUT/v1/customers/
Body — name, tax_id, vat_id, iban, bic, address, default_account, notes
Response — aktualisierter Debitor.
GET /v1/outgoing-invoices
GET/v1/outgoing-invoices
Query — customer_id, status, type, start_date, end_date, limit, offset
Response — (array)
POST /v1/outgoing-invoices
POST/v1/outgoing-invoices
Body — customer_id, document_id, invoice_number, invoice_date, due_date, total_net, total_tax, total_gross, currency, type, intent_id, notes, lines
Response — id
GET /v1/outgoing-invoices/
GET/v1/outgoing-invoices/
Response — Ausgangsrechnung inkl. status, remaining_amount und lines-Array.
PATCH /v1/outgoing-invoices/
PATCH/v1/outgoing-invoices/
Body — intent_id, notes, due_date
Response — aktualisierte Ausgangsrechnung.
GET /v1/outgoing-invoices/open-items
GET/v1/outgoing-invoices/open-items
Response — (array)
Payables
GET /v1/payment-runs
GET/v1/payment-runs
Query — status, limit, offset
Response — (array)
POST /v1/payment-runs
POST/v1/payment-runs
Body — bank_account_id, execution_date, invoice_ids, label
Response — id, status, total_amount, invoice_count, items
GET /v1/payment-runs/
GET/v1/payment-runs/
Response — id, status, items
POST /v1/payment-runs//approve
POST/v1/payment-runs//approve
Response — Zahlungslauf genehmigen
POST /v1/payment-runs//cancel
POST/v1/payment-runs//cancel
Response — Zahlungslauf stornieren
POST /v1/payment-runs//complete
POST/v1/payment-runs//complete
Response — Zahlungslauf abschließen
POST /v1/payment-runs//export
POST/v1/payment-runs//export
Response — run, sepa_xml, message_id, number_of_transactions, control_sum
GET /v1/payment-runs/eligible-invoices
GET/v1/payment-runs/eligible-invoices
Response — (array)
Periods
GET /v1/periods
GET/v1/periods
Response — (array)
POST /v1/periods//lock
POST/v1/periods//lock
Response — request_id, period, status, created_at, message
POST /v1/periods//lock//approve
POST/v1/periods//lock//approve
Response — period, period_number, status, locked_by, locked_at, closing_hash, request_id, approved_by
POST /v1/periods//lock//cancel
POST/v1/periods//lock//cancel
Response — ok, request_id, status
GET /v1/periods//lock/status
GET/v1/periods//lock/status
Response — has_pending_request, request_id, requested_by, created_at
POST /v1/periods//reopen
POST/v1/periods//reopen
Response — period, period_number, status
POST /v1/periods//soft-lock
POST/v1/periods//soft-lock
Response — period, period_number, status, locked_by, locked_at
Reports
GET /v1/reports
GET/v1/reports
Query — type, startDate, endDate
Response — (array)
GET /v1/reports/datev-export
GET/v1/reports/datev-export
Query — startDate, endDate
Response — DATEV-Export erzeugen
GET /v1/reports/monthly-revenue-expenses
GET/v1/reports/monthly-revenue-expenses
Response — (array)
Weitere Endpunkte
POST /v1/bank-match-groups
POST/v1/bank-match-groups
Body — bank_transaction_ids, allocations, adjustments
Response — ok, match_group_id, intent_id, mode
POST /v1/bank-match-groups//unmatch
POST/v1/bank-match-groups//unmatch
Response — ok
POST /v1/contact
POST/v1/contact
Body — name, email, message, _honeypot
Response — ok
GET /v1/inbox
GET/v1/inbox
Query — status, limit, offset
Response — (array)
GET /v1/inbox/
GET/v1/inbox/
Response — id, document_id, status, ocr_extraction, ocr_raw, vendor_match, compliance_check, source_email, source_subject, original_name, created_at
POST /v1/inbox//confirm
POST/v1/inbox//confirm
Response — confirmed, inbox_id
POST /v1/inbox//reject
POST/v1/inbox//reject
Body — reason
Response — rejected, inbox_id
GET /v1/inbox/address
GET/v1/inbox/address
Response — inbox_address
GET /v1/invoice-review-cases
GET/v1/invoice-review-cases
Query — queue_state, limit, offset
Response — Array von Review-Faellen mit Queue-State, normalisiertem Rechnungsobjekt, Kreditoren-Kandidaten und eventuellen Buchungsfehlern.
GET /v1/invoice-review-cases/
GET/v1/invoice-review-cases/
Response — Review-Fall-Objekt.
PATCH /v1/invoice-review-cases/
PATCH/v1/invoice-review-cases/
Body — vendor_id, normalized_invoice
Response — Aktualisierter Review-Fall.
POST /v1/invoice-review-cases//approve
POST/v1/invoice-review-cases//approve
Response — reviewCaseId, intentId, invoiceId
POST /v1/invoice-review-cases//reject
POST/v1/invoice-review-cases//reject
Body — reason
Response — Aktualisierter Review-Fall mit queue_state = "rejected".
GET /v1/invoices
GET/v1/invoices
Query — vendor_id, status, start_date, end_date, limit, offset
Response — (array)
POST /v1/invoices
POST/v1/invoices
Body — vendor_id, document_id, invoice_number, invoice_date, due_date, total_net, total_tax, total_gross, currency, intent_id, notes, lines
Response — id
GET /v1/invoices/
GET/v1/invoices/
Response — Rechnung inkl. status, remaining_amount und lines-Array.
PATCH /v1/invoices/
PATCH/v1/invoices/
Body — intent_id, notes, due_date
Response — aktualisierte Rechnung.
GET /v1/invoices/open-items
GET/v1/invoices/open-items
Response — (array)
POST /v1/ocr/extract
POST/v1/ocr/extract
Response — vendor_name, vendor_vat_id, vendor_iban, vendor_address, invoice_number, invoice_date, due_date, total_net, total_tax, total_gross, currency, line_items, payment_terms, reference_text, raw_markdown
GET /v1/payables/ingestion-log
GET/v1/payables/ingestion-log
Query — limit, offset, outcome
Response — (array)
GET /v1/tax-codes
GET/v1/tax-codes
Query — include_inactive
Response — tax_codes
POST /v1/tax-codes
POST/v1/tax-codes
Body — code, label, description, rate, vat_account, self_assess_account
Response — code, label, description, rate, vat_account, self_assess_account, is_system, is_active
DELETE /v1/tax-codes/
DELETE/v1/tax-codes/
Response — code, is_active
PATCH /v1/tax-codes/
PATCH/v1/tax-codes/
Body — label, description, rate, vat_account, self_assess_account, is_active
Response — code, label, is_active
GET /v1/vendors
GET/v1/vendors
Query — search, is_active, limit, offset
Response — (array)
POST /v1/vendors
POST/v1/vendors
Body — name, tax_id, vat_id, iban, bic, address, default_account, notes
Response — angelegter Kreditor.
DELETE /v1/vendors/
DELETE/v1/vendors/
Response — deaktivierter Kreditor.
GET /v1/vendors/
GET/v1/vendors/
Response — Kreditor inkl. open_amount.
PUT /v1/vendors/
PUT/v1/vendors/
Body — name, tax_id, vat_id, iban, bic, address, default_account, notes
Response — aktualisierter Kreditor.