Concepts
Reports#
platformReport(company, input) for profit_loss, balance_sheet, trial_balance, vat_position (needs a taxFilingId), cashflow, aged_receivables, aged_payables, kpis, general_ledger and forecast. Amounts are in minor units. profit_loss and balance_sheet return lines (amountMinor in the normal sign, signedMinor debit-positive) and totals; compare: previous_period | previous_year adds compareMinor. general_ledger is paged with offset and limit. platformReportDocument renders a report as XLSX or PDF (profit and loss, balance sheet, cash flow, forecast, aged reports). PDFs use the company's report document layout (your preset or the company's own), like payslips and annual accounts.
Documents#
companyDocument(company, kind, object, params) renders on demand. The answer has a downloadUrl that works for 15 minutes without a token (GET /v2/platform/files/<token>), and files are kept 24 hours.
| Kind | object | params | Module |
|---|---|---|---|
sales_invoice_pdf, sales_invoice_ubl, credit_note_pdf | invoice (id or externalId) | sales_invoices | |
quote_pdf, reminder_pdf | quote / reminder | quotes / reminders | |
purchase_invoice_original | purchase invoice | documentId (optional) | purchase_invoices |
receipt_original | bank transaction (id or externalId) | documentId (one of booking.receipt.documentIds) | banking |
tax_filing_pdf | filing (id) | tax_filings | |
tax_filing_receipt | submitted filing (id); JSON with the reference and the authority's status messages | tax_filings | |
annual_accounts_pdf | financial year (id), or none | financialYear | annual_accounts |
payslip_pdf, year_document_pdf | payslip / year document (id) | payroll | |
report_pdf, report_xlsx | the PlatformReportInput fields | the report's | |
xaf | financialYear or from/to, version (4.0 default, 3.2) |
Every kind also needs data_export. A transaction without a receipt answers NOT_ATTACHED; a draft filing has no receipt (UNSUPPORTED_OPERATION). audit_log is not a company document: use requestAuditLogExport.
The audit file#
requestXafExport(company, financialYear, version) writes an Auditfile Financieel in the background: XAF 4.0 by default (the only version the Belastingdienst accepts from 1 January 2027), version: "3.2" for receivers that still need it. The run's document carries the link when it is ready, and export.ready is sent. Invoice lines carry their VAT (vat: code, percentage, amount) and the relation (custSupID, the relation id without hyphens); the VAT codes used are listed in vatCodes. The 4.0 output is validated against the official XSD; 3.2 follows the official field order but is not validated.
Scheduled exports#
createPlatformExportDestinationwith an S3 (or S3-compatibleendpoint, such as GCS interoperability, OVH or MinIO) bucket and keys, or an Azure container SAS URL. FinBaze writes_finbaze_check/<time>.txtto prove it can; credentials are encrypted and never returned.createPlatformExportSchedulewithdatasets,format(parquet,csv,ndjson), acron(at most once an hour) andtimezone.runPlatformExportNow(key, companies)queues a run, optionally for some of the schedule's companies only (companies; the manifest lists them incompanyFilter, and the other companies' next run still carries their changes);platformExportRunshows it.
Datasets: journal_lines, trial_balance (snapshots), and bank_transactions, sales_invoices, sales_invoice_lines, purchase_invoices, purchase_invoice_lines, relations, custom_records, record_effects, vat_returns (only what changed since the last run, with op = upsert or delete). vat_returns holds the NL and UK VAT returns: period, status, reference, amount_due_minor and the boxes as computed or filed. Every row has company_id, company_external_id and exported_at. A run writes the data files first, then _manifest.json, then an empty _SUCCESS: a folder without _SUCCESS is incomplete.
What happened to a bank transaction#
bankTransactionBookings(company, externalIds) (at most 100) returns the status (unbooked, suggested, booked, needs_review), the counterpart, the ledger legs, the VAT code, the invoice's VAT (vatAmountMinor), the receipt status and its documents, what FinBaze proposes for an unbooked transaction (suggestion: counterpart, ledger, confidence) and why it needs a person (reviewReason: policy_review_required, awaiting_document, amount_difference, low_confidence). The same object is booking on MonetaryAccountPayment. The events bank_transaction.booked, .unbooked, .needs_receipt and .needs_review tell you when one changes.