Workflows
End-to-end walkthroughs of the Stabiso API: the exact requests and the answers, in the order a
client makes them, with the business meaning of each step. They run from the same starting point,
the demo organization (Demo AG CH01, Swiss, CHF; Demo GmbH DE01, German, EUR; January to August
2026 closed, September open), so you can follow them against a demo deployment or a local server
(uv run erp seed-demo).
Every example on these pages is executed by CI (except the onboarding page, which says why)
against that organization and must answer what the page shows, so what you read is what the API does. How that works, and how to add an example, is
explained in the API documentation index. Start with
getting started for the address, a key and the scopes, and with
conventions for idempotency keys, ETag, errors and approvals.
| Workflow | What it covers |
|---|---|
| Post a journal entry and have it approved | A person posts; an agent's entry waits for approval; four eyes between two people; idempotent retries; reversal |
| Change the approval policy | Read the decision table with its ETag, replace it with If-Match, 412 on a stale version, the effect of a new rule, history and reset |
| Invoice a customer, send a QR-bill, receive the payment | Customer, VAT-determined invoice, QR-bill (JSON and SVG), receipt, aging, voiding a draft with If-Match, XRechnung |
| Issue and send an invoice | The invoice PDF in the customer's language with the Swiss QR-bill, the German ZUGFeRD / Factur-X hybrid, sending by e-mail (idempotent, with a sent log), and what is and is not verified |
| Customers and vendors | A new vendor starts as a draft; activation by a second person; bank-detail changes wait for approval; payment blockers |
| Receive a vendor bill as an e-invoice | Check an XRechnung, receive it as a draft bill, why a new vendor's bill waits for a second person, submit a bill of a known vendor |
| From a bill to a payment file | Vendor bill, payment proposal with cash discount, payment run, pain.001 export |
| Purchase to pay: order, receipt, matching, variance, payment | Purchase order approved by a second person, partial receipt, 3-way and 2-way matching, payment block, variance approval, tolerances, cancel |
| Import a bank statement and reconcile it | camt.053 upload, automatic matching, manual match, posting fees, ignore and reopen |
| File a Swiss VAT return | Compute the quarter, boxes and their lines, adjustments, the eCH-0217 file, finalise and settle |
| File German VAT and the Zusammenfassende Meldung | UStVA by month, ZM, finalise |
| Register an asset, depreciate it, dispose of it | Assets and tax books, depreciation run, deferred tax, disposal |
| Close a period | Checklist, FX revaluation, close, a posting into a closed period, reopen |
| Reference data sources | Which reference data the organization needs and whether it arrives |
| Onboard a new customer | The platform operator provisions the organization, its first people sign in, the existing books are imported from CSV or Excel (customers, vendors, accounts, opening balances, open items; dry run, all or nothing, the clearing account at zero), the first invoice. Not run by CI (it needs a platform key): test_platform.py and test_imports.py run every step |
Every page ends with links to the operations it uses in the generated reference.