Skip to content

One document in, the registration back

How it works

Your software sends one document to Tallio. Tallio issues it through the licensed provider the business already uses, and the provider stays the legal issuer.

POST /api/v1/documents/preview
curl "$TALLIO_API_URL/api/v1/documents/preview" \
  -H "Authorization: Bearer $TALLIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d @document.json

One provider per document

The flow

How a document reaches AADE and how the registration comes back
  1. Your software sends one document to Tallio.
  2. Tallio routes it to exactly one provider: the one the business already uses.
  3. The provider signs it, transmits it to myDATA and keeps the legal archive.
  4. AADE assigns the MARK. Tallio returns it with the QR code, and fetches the PDF from the provider when you ask.

What happens after you call the API

Step by step

Each document has one status at a time. Read it whenever you like, or wait for the webhook.

  1. You send the document

    With a key that makes retries safe. Tallio checks and classifies it at once, and answers that it is pending.

  2. Tallio queues it for the merchant’s provider

    Each document goes to exactly one provider. Sending it through another provider makes a new document.

  3. The provider issues it

    Your provider signs the document and transmits it to the tax authority; Tallio connects and returns the result.

  4. The registration comes back

    Tallio keeps the registration number and the QR link, and tells your software by webhook.

  5. You fetch the PDF when you need it

    Tallio asks the provider for it on demand. The provider keeps the legal archive.

What you build against

The pieces

One document model for every provider

One document

Invoices, receipts and credit notes share one shape. Tallio translates it for each provider.

document (excerpt)
{
  "type": "1.1",
  "issue_date": "2026-10-10",
  "currency": "EUR",
  "customer": { "name": "Kafeneio Lemonia IKE", "tax_id": { "country": "GR", "code": "666666662" } },
  "lines": [
    { "description": "Olive oil, bulk", "quantity": "1.5", "unit_price": 1000, "vat_category": "reduced" }
  ],
  "totals": { "net": 2500, "vat": 435, "gross": 2935 }
}

Check it before you issue

Preview

A preview checks and classifies a document without issuing it, and lists anything the merchant should confirm.

POST /api/v1/documents/preview (excerpt)
{
  "type": "1.1",
  "totals": {
    "net": 2500,
    "vat": 435,
    "gross": 2935
  },
  "classification": {
    "source": "default",
    "warnings": [
      "No income classification on line 2; …"
    ]
  }
}

Know when the registration arrives

Webhooks

Tallio sends an event when a document is created, issued, rejected or fails, each signed so you can check it came from Tallio.

document.issued (excerpt)
{
  "id": "evt_02y9O8s1a8ymJqpmAy0nLe",
  "type": "document.issued",
  "created": "2026-10-11T09:30:02.000Z",
  "data": {
    "object": {
      "id": "doc_02y9O8rhJKVUXRvojdffcz",
      "status": "issued",
      "mark": "900000000000001",
      "qr_url": "https://sandbox.tallio.invalid/qr/900000000000001"
    }
  }
}

Let an agent preview documents

MCP

An MCP server, in development, lets AI agents preview documents. Issuing stays a call to the API.

tools/call
{
  "method": "tools/call",
  "params": {
    "name": "preview_document",
    "arguments": { "type": "1.1", "issue_date": "2026-10-10", … }
  }
}

Where a document stands

Status

Every state a document can be in, as the API reference describes it.

Document statuses and stages
StatusStageMeaning
pendingqueuedWaiting to be sent.
pendingsubmittingBeing sent to the provider.
pendingawaiting_markThe provider accepted it, MARK not yet assigned.
pendingreconcilingThe outcome of a send is unknown and is being checked with the provider before any resend.
issuedNoneHas a MARK.
rejectedNoneThe provider or AADE refused it.
failedNoneTallio could not deliver it to the provider.

The provider stays the legal issuer

Important

Your provider signs each document, transmits it to the tax authority and keeps the legal archive; Tallio connects your software to it and returns the result. Direct myDATA is used only when a merchant connects their own myDATA credentials.

Common questions

Questions

No. Tallio is the connector, never the provider of record. On the provider route, the licensed provider the business already uses is the legal issuer: it signs each document, transmits it to AADE’s myDATA and keeps the legal archive. On the direct myDATA route (planned), the business transmits under its own AADE credentials and AADE keeps the record. Either way, Tallio returns the MARK.

No. Each document is routed to exactly one provider and gets one MARK. A document that is already issued is never sent again: a mistake is corrected with a credit note that references the original MARK.

The document’s status becomes rejected, and the error carries the provider’s own answer next to Tallio’s, so you can show the merchant exactly what to fix.

Yes. Send it again with the same idempotency key and Tallio returns the first document instead of creating a second one.

Tallio keeps document metadata, such as the status and the MARK, and holds no fiscal archive: the provider keeps the legal record, and Tallio fetches the PDF from the provider when you ask for it. For support, the full request and response are kept encrypted, with personal data redacted, and deleted after 90 days.

Issue your first test document

Early access comes with a sandbox key, so you can send test documents before any provider is connected.