Skip to content

Integration

Local automation API

When your invoice data already exists somewhere else, it should not be retyped. The local automation API exposes outgoing documents, incoming receipts, payments and master data as an HTTP interface — on this computer only, and only while Billance is running.

App view – screenshot follows at release

At a glance

Address
http://127.0.0.1:47115/api/integration/v1
Access
Programs on the same computer only
Auth
Bearer token
Contract
OpenAPI 3.1

What the API is — and what it is not

The automation API is a local HTTP server that Billance starts on your computer. It manages outgoing documents and incoming receipts, payments and master data, and it can validate or read e-invoices. It is not a cloud endpoint and not a ready-made connector for a particular ERP vendor but a technical interface for your own scripts, workflows and local business software.

Access is deliberately narrow: the server listens on 127.0.0.1, so only programs on the same computer reach it. Devices on the LAN, cloud services and browser applications cannot access it directly — browsers are intentionally given no CORS clearance. Every business request needs the bearer token Billance shows in the settings; without a token only the root path and the OpenAPI specification are reachable.

The contract is shipped rather than described: the settings hold a searchable endpoint overview with parameters, example payloads and copyable cURL commands, and <BASE-URL>/openapi.json serves the OpenAPI 3.1 specification for tools and generated clients. Always use the specification of your installed version so your client matches the app’s actual contract.

Connected in five steps

  1. Enable the API

    Turn the local server on under Settings → Integrations.

  2. Set the port

    Keep the default port 47115 or pick a free port between 1024 and 65535 if another program occupies it.

  3. Copy base URL and token

    Both go into your automation tool; the token belongs in a secret store, never in source code, a repository or logs.

  4. Test the connection

    A call to /health with the authorization header returns the status, API and app version and the available capabilities.

  5. Explore the endpoints

    The endpoint overview in the settings and the OpenAPI specification show parameters, example payloads and cURL commands.

What the API covers

  • Create outgoing documents

    POST /invoices with documentType and complete formData — the form model mirrors the app’s editor.

  • All seven document types

    invoice, offer, confirmation, delivery_note, credit_note, recurring and reminder are available.

  • Generate and export

    POST /invoices/{id}/generate uses the same templates, fonts, payment profiles and e-invoice rules as the interface; the export returns PDF, ZUGFeRD, XRechnung, UBL or JSON.

  • Status changes with clear errors

    finalize for the first transition, status for the rest; disallowed changes return 409 with the stable code invalid_status_transition.

  • Payments calculated for you

    Payments go to /invoices/{id}/payments; Billance derives paid amount, remaining balance, status and discount itself.

  • Maintain master data

    /recipients and /products offer list, create, update and delete access; writes always apply to the active company profile.

  • Receipts and attachments

    /receipts manages supplier invoices; original files are uploaded as base64 — PDF, PNG, JPEG, WebP, HEIC, TIFF and XML up to 50 MB.

  • Validate and read e-invoices

    POST /import/validate checks PDF or XML files, POST /import/einvoice additionally returns structured invoice data — neither creates a document automatically.

  • Errors under RFC 7807

    Responses arrive as application/problem+json with a stable code you can evaluate instead of parsing text.

Token, boundaries and error codes

The token grants access to your local Billance data. The boundaries are drawn narrowly to match — and the token deserves to be handled accordingly.

401 · unauthorized

Meaning
The token is missing or invalid.

403 · premium_required

Meaning
Premium access is not available.

404 · not_found

Meaning
The resource or the local original file is missing.

409 · profile_not_active, receipt_locked, invalid_status_transition

Meaning
A business conflict or a lock on finalized data.

413 / 415 / 422

Meaning
payload_too_large, unsupported_media_type or validation_failed — request, file type or data invalid.

429 · rate_limited

Meaning
More than 120 requests within one minute.

Never store the token in source code, repositories or logs. After renewing it, the old token becomes invalid immediately and every client has to be updated.

What makes an integration hold up

A handful of rules decide whether a connection still works after the second update.

  • Read before every PUT

    PUT /invoices/{id} replaces the form data entirely. Read the current draft first and send it back completely so unknown or later added fields are preserved.

  • Store IDs in the source system

    That way your software finds a document again after a restart instead of creating it a second time.

  • Read first after a timeout

    Check with GET whether the write already arrived before repeating it.

  • Handle conflicts deliberately

    A 409 is a business statement — a lock on finalized data, say — and not a reason to simply retry.

  • Limit concurrency

    After a 429, continue with backoff instead of sending at the same rate.

  • Use only formData

    New integrations use formData exclusively; data is only a deprecated compatibility alias.

For LAN, cloud or mobile access you need your own secured intermediary layer with authentication, encryption, permissions and a data protection concept.

Where the API runs

The automation API is a feature of the desktop application, because it needs a local server on your machine.

In the desktop app

You find it under Settings → Integrations → Local automation API. There you switch the server on, choose the port, copy base URL and token, run the connection test and search the endpoint overview with its example payloads and cURL commands.

In the mobile app

The mobile app has no local server: a phone is not a permanently reachable workstation, and an open port would be the wrong tool there. The data created through the API reaches your mobile devices through encrypted cloud synchronisation.

Free or Premium

On the free plan

The local automation API is not part of the free plan.

With Billance Premium

With Premium you get the local server, every endpoint and the OpenAPI specification — with no per-call cost.

Without Premium access the API answers with 403 premium_required rather than quietly doing nothing.

Frequently asked questions about the automation API

No. The server runs exclusively on your computer and listens on 127.0.0.1. Devices on the network, cloud services and browser applications cannot access it directly; browsers are intentionally given no CORS clearance.

Read on

Step by step in the help centre

The help articles walk through the same workflow as an instruction – every field, every button, every special case.

Ready for e‑invoices?

Start with Billance and create your first e-invoices in just a few minutes.