Pricing Blog API docs
Log in Get started
API-first

The Invonio API

Every screen in Invonio — web and mobile — is built on this exact API. There is no separate "integration tier": what you can do by hand, you can automate.

Quickstart

Register, authenticate, create an invoice

curl https://invonio.talivio.com/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Max Mustermann",
    "email": "[email protected]",
    "password": "a-strong-password",
    "password_confirmation": "a-strong-password",
    "terms": true,
    "device_name": "integration-server"
  }'
# => { "token": "1|abcdef...", "user": { "has_subscription": false, ... } }

curl https://invonio.talivio.com/api/v1/invoices \
  -H "Authorization: Bearer 1|abcdef..." \
  -H "Content-Type: application/json" \
  -X POST -d '{
    "number": "RE-2026-0001",
    "issue_date": "2026-07-09",
    "buyer_name": "Kunde GmbH",
    "buyer_address_line1": "Musterstraße 1",
    "buyer_postal_code": "10115",
    "buyer_city": "Berlin",
    "buyer_country_code": "DE",
    "lines": [
      { "name": "Consulting", "quantity": 5, "unit_price": 150, "vat_rate": 19, "unit_code": "HUR" }
    ]
  }'

A new account can register, set up a business, and receive e-invoices for free — no card required. A card is only needed to issue your own: /invoices endpoints return 402 until a subscription is active (see Billing below).

Reference

Resources

Auth

POST /auth/register, POST /auth/login, POST /auth/logout — Sanctum bearer tokens, one per device/integration.

Billing

GET /billing, POST /billing/checkout, GET /billing/portal — subscription status and Stripe-hosted URLs.

Business

GET/PUT /business — the seller profile stamped on every invoice you issue.

Invoices

GET/POST /invoices, plus per-invoice /document, /send, /duplicate, /credit-note, /validate. Full CRUD; a sent invoice is locked (immutable, as required by law) — duplicate or issue a credit note instead.

Incoming invoices

GET /incoming, POST /incoming (upload PDF/XML), /download — the same parser behind the inbox screen.

Stats & channels

GET /stats (dashboard summary), GET /channels (available send channels — email is always on; Peppol and the France PDP channel appear once configured).

Details

Conventions

Send Authorization: Bearer {token} on every request after registering or logging in. Tokens are per-device/integration and can be revoked individually from Settings → API tokens in the web app, or by calling POST /auth/logout.
Only the invoice-issuing endpoints (/invoices/*, /channels, /peppol/verify-recipient) require an active subscription — a 402 means the token is valid but the account isn't subscribed yet. Everything else, including /business, /incoming, and /stats, is free. Call POST /billing/checkout to get a Stripe Checkout URL.
GET /invoices/{id}/document?format= accepts zugferd-en16931 (Factur-X PDF, the default), xrechnung-cii, xrechnung-ubl, or peppol-bis (all XML).
Auth endpoints are throttled to 10 requests/minute per IP. Other endpoints are not separately throttled beyond normal abuse protection.
/openapi.yaml — a complete OpenAPI 3.0 document you can import into Postman, Insomnia, or any code generator.

Building on top of Invonio?

Every paid plan includes the full API. The Business tier is the same product billed monthly — built for API-first, high-volume use.