Μετάβαση στο περιεχόμενο
Μενού τεκμηρίωσης: Stores

Stores

Orders a shop sends from its store, and the documents they become.

Η αναφορά API είναι διαθέσιμη μόνο στα αγγλικά, όπως και το API.

Σε αυτή τη σελίδα

Send a shop order #

POST /api/v1/store_orders

Sends a shop order (a WooCommerce order, say), paid or not. Tallio maps a paid one to a document, issues it through the merchant's connection in the key's mode (the sandbox for a test key without one) and keeps its state; an unpaid one is kept and skipped as order_not_paid (a later resend answers that row). Read it back with GET /store_orders/{id}. One store order per merchant, mode, platform and order: sending an order Tallio already holds answers that store order (200) and maps nothing again, whatever the key. Use a key per order, such as woo:{site}:order:{id}. A store key acts on its own merchant only.

  • Bearer API key
  • Idempotency-Key required

Header parameters

idempotency-keystringrequired

A key you choose (1-255 printable ASCII characters, e.g. a UUID) that makes a create request safe to retry: the same key with the same body returns the first result instead of creating a second document.

1 to 255 characters

Show patternHide pattern^[\x21-\x7E]+$

Request body

merchantstringrequired

The merchant whose store the order is from (mer_…).

Show patternHide pattern^mer_[0-9A-Za-z]{22}$
orderobjectrequired

The order as the platform holds it (StoreOrderSnapshot); Tallio maps it, never the store.

Show nested fields (19)Hide nested fields (19)
platformstringrequired

The platform the order comes from. Not shopify: the Shopify app issues through its own path until it moves onto store orders, so one order is never issued twice.

One of: woocommerce

testbooleanrequired

A test order (a test gateway or test mode): never a fiscal document.

currencystringrequired

ISO 4217 currency of every amount.

Show patternHide pattern^[A-Z]{3}$
prices_include_taxbooleanrequired

The store's prices are entered with tax included.

tax_roundingstringrequired

How the platform rounded tax: "line" per line, or "subtotal" once per rate over the order (refused with tax_rounding_unsupported until supported).

One of: line, subtotal

totalstringrequired

The order's total, tax included, at the same moment as its lines: after edits, less anything already refunded from the lines. It equals what the lines, shipping and fees add up to with their tax; an order where they differ is refused, never corrected.

Show patternHide pattern^\d{1,13}(\.\d{1,2})?$
linesobject[]required

The products, in the order's order, at the moment total describes.

Up to 1000 items

Each item: A product line.

Show nested fields (8)Hide nested fields (8)
external_idstring | nullrequired

The platform's id of the line, which refunds name; null when the platform gave none.

1 to 64 characters

namestringrequired

The product's name as sold, variation included (Shopify: title - variant).

Up to 1000 characters

skustring

The SKU; describes the line when it has no name.

Up to 200 characters

product_idstring

The platform's product id; describes the line when nothing else does.

Up to 64 characters

quantitystringrequired

Units on the order at the moment the snapshot describes (after edits, less units already refunded); 0 for a line edited or refunded away.

Show patternHide pattern^\d{1,9}(\.\d{1,6})?$
totalstringrequired

The line's net amount after discounts, tax excluded.

Show patternHide pattern^-?\d{1,13}(\.\d{1,10})?$
taxesobject[]required

The line's tax, one share per rate; empty when it is untaxed.

Up to 10 items

Each item: One rate's share of a line's tax.

Show nested fields (3)Hide nested fields (3)
rate_idstringrequired

The platform's id of the tax rate (WooCommerce: the key of the line's taxes; Shopify: the rate).

1 to 64 characters

rate_percentstringrequired

The rate in percent as text, up to 10 decimals: "24", "5.5". A compound rate is never sent.

Show patternHide pattern^\d{1,3}(\.\d{1,10})?$
amountstringrequired

The tax at this rate, unrounded when the platform stores it so; negative only on a negative (discount) line, whose tax WooCommerce stores negative too.

Show patternHide pattern^-?\d{1,13}(\.\d{1,10})?$
gift_cardbooleanrequired

The line sells a gift card, which is not a sale of goods.

shipping_linesobject[]required

The shipping charged after discounts, at the moment total describes.

Up to 1000 items

Each item: A shipping line, one unit.

Show nested fields (4)Hide nested fields (4)
external_idstring | nullrequired

The platform's id of the line, which refunds name; null when the platform gave none.

1 to 64 characters

namestringrequired

The shipping's name as the order shows it.

Up to 1000 characters

totalstringrequired

The shipping's net amount after discounts, tax excluded.

Show patternHide pattern^-?\d{1,13}(\.\d{1,10})?$
taxesobject[]required

The shipping's tax, one share per rate; empty when it is untaxed.

Up to 10 items

Each item: One rate's share of a line's tax.

Show nested fields (3)Hide nested fields (3)
rate_idstringrequired

The platform's id of the tax rate (WooCommerce: the key of the line's taxes; Shopify: the rate).

1 to 64 characters

rate_percentstringrequired

The rate in percent as text, up to 10 decimals: "24", "5.5". A compound rate is never sent.

Show patternHide pattern^\d{1,3}(\.\d{1,10})?$
amountstringrequired

The tax at this rate, unrounded when the platform stores it so; negative only on a negative (discount) line, whose tax WooCommerce stores negative too.

Show patternHide pattern^-?\d{1,13}(\.\d{1,10})?$
fee_linesobject[]required

Other charges, such as a cash-on-delivery fee, at the moment total describes.

Up to 1000 items

Each item: A fee line, one unit.

Show nested fields (4)Hide nested fields (4)
external_idstring | nullrequired

The platform's id of the line, which refunds name; null when the platform gave none.

1 to 64 characters

namestringrequired

The fee's name as the order shows it.

Up to 1000 characters

totalstringrequired

The fee's net amount after discounts, tax excluded.

Show patternHide pattern^-?\d{1,13}(\.\d{1,10})?$
taxesobject[]required

The fee's tax, one share per rate; empty when it is untaxed.

Up to 10 items

Each item: One rate's share of a line's tax.

Show nested fields (3)Hide nested fields (3)
rate_idstringrequired

The platform's id of the tax rate (WooCommerce: the key of the line's taxes; Shopify: the rate).

1 to 64 characters

rate_percentstringrequired

The rate in percent as text, up to 10 decimals: "24", "5.5". A compound rate is never sent.

Show patternHide pattern^\d{1,3}(\.\d{1,10})?$
amountstringrequired

The tax at this rate, unrounded when the platform stores it so; negative only on a negative (discount) line, whose tax WooCommerce stores negative too.

Show patternHide pattern^-?\d{1,13}(\.\d{1,10})?$
couponsobject[]required

The coupons used, for display only: their discounts are already in the lines' totals.

Up to 1000 items

Each item: A coupon.

Show nested fields (1)Hide nested fields (1)
codestringrequired

The coupon code.

Up to 200 characters

billingobject

The billing address: it names and locates an invoice's buyer.

Show nested fields (8)Hide nested fields (8)
countrystring

ISO 3166-1 alpha-2 country code.

Show patternHide pattern^[A-Z]{2}$
address_1string

Street and number.

Up to 500 characters

citystring

City.

Up to 200 characters

postcodestring

Postal code.

Up to 50 characters

companystring

Company name.

Up to 500 characters

namestring

The billing person's full name, when the platform keeps one.

Up to 500 characters

first_namestring

First name.

Up to 200 characters

last_namestring

Last name.

Up to 200 characters

shippingobject

The shipping address; the sale is taxed in its country, else the billing country.

Show nested fields (4)Hide nested fields (4)
countrystring

ISO 3166-1 alpha-2 country code.

Show patternHide pattern^[A-Z]{2}$
address_1string

Street and number.

Up to 500 characters

citystring

City.

Up to 200 characters

postcodestring

Postal code.

Up to 50 characters

payment_gatewaysobject[]required

The gateways that took the payment; one for most orders.

Up to 10 items

Each item: A payment gateway the order was paid through.

Show nested fields (2)Hide nested fields (2)
idstringrequired

The gateway's id (WooCommerce: cod, bacs, stripe; Shopify: its gateway name).

1 to 200 characters

titlestringrequired

The gateway's name as the buyer saw it.

Up to 200 characters

invoice_requestobject

What the checkout captured of a buyer's request for an invoice. A platform that captures each field once sends one value each; Shopify's cart attributes may repeat.

Show nested fields (3)Hide nested fields (3)
requestedstring[]required

Every value the checkout captured for "I need an invoice" ("true", "yes", "false"); distinct values disagree, and no invoice is guessed.

Up to 10 items

Each item: Up to 200 characters

vat_numbersstring[]required

Every value the checkout captured for the buyer's VAT number (ΑΦΜ, SIREN, SIRET or EU VAT number); distinct values disagree, and no invoice is guessed.

Up to 10 items

Each item: Up to 200 characters

company_namesstring[]required

Every value the checkout captured for the buyer's company name; distinct values disagree, and no invoice is guessed.

Up to 10 items

Each item: Up to 200 characters

platform_versionstringrequired

The platform's version ("11.2.1"), logged, never branched on.

1 to 50 characters

external_idstringrequired

The platform's order id.

1 to 64 characters

numberstringrequired

The order number the merchant knows it by ("1042", "#1042").

1 to 64 characters

created_atstringrequired

When the order was placed.

Format: date-time

paid_atstring | nullrequired

When it was paid; null while unpaid.

Format: date-time

Request

JSON
{
  "merchant": "mer_02y9O8rh7F50tGi0QcWRrx",
  "order": {
    "platform": "woocommerce",
    "test": false,
    "currency": "EUR",
    "prices_include_tax": false,
    "tax_rounding": "line",
    "total": "81.41",
    "lines": [],
    "shipping_lines": [],
    "fee_lines": [],
    "coupons": [],
    "payment_gateways": [],
    "platform_version": "string",
    "external_id": "string",
    "number": "string",
    "created_at": "2026-10-11T09:30:00.000Z",
    "paid_at": "2026-10-11T09:31:00.000Z"
  }
}
Responses
StatusDescription
200The store order Tallio already held for this order.
201The store order, pending. A replay returns the first answer.
4XX, 5XXAn error: see Errors below.

Response body · 200

dataobjectrequired

A shop order sent to Tallio, and the document it became.

Show nested fields (12)Hide nested fields (12)
idstringrequired

Id of the store order (ord_…).

Show patternHide pattern^ord_[0-9A-Za-z]{22}$
objectstringrequired

Always "store_order".

Always store_order

merchantstringrequired

Id of the merchant (mer_…).

Show patternHide pattern^mer_[0-9A-Za-z]{22}$
modestringrequired

live for an order sent with a live key, test for a test key.

One of: live, test

platformstringrequired

The platform the order comes from.

One of: shopify, woocommerce

external_idstringrequired

The platform's id of the order.

1 to 64 characters

numberstringrequired

The order number the merchant and the buyer see.

statusstringrequired

pending (received, not yet mapped), skipped (it maps to no document: see reason), sent (its document was created and is on its way to the provider), issued (the document was issued), failed (the document was rejected, failed or cancelled, or Tallio could not create it: see reason).

One of: pending, skipped, sent, issued, failed

reasonstring | nullrequired

Why the order is skipped or failed, as a machine code; null otherwise.

detailstring | nullrequired

The reason in a sentence for the merchant; null when there is no reason.

documentobject | nullrequired

The document issued for the order, once one was created; null before.

Show nested fields (34)Hide nested fields (34)
idstringrequired

Id of the document (doc_…).

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
objectstringrequired

Always "document".

Always document

merchantstringrequired

Id of the merchant (mer_…).

Show patternHide pattern^mer_[0-9A-Za-z]{22}$
modestringrequired

live for a document created with a live key, test for a test key.

One of: live, test

providerstringrequired

The licensed e-invoicing provider (a Greek provider, direct myDATA, a French plateforme agréée, Chorus Pro for a French public-sector buyer, or Tallio's sandbox) that issues the document.

One of: sandbox, mydata, wrapp, impact, epsilon, softone, prosvasis, superpdp, choruspro, b2brouter, oxygen

regimestringrequired

Tax regime the document is issued under, by country: GR (Greece, myDATA) or FR (France, e-invoicing through a plateforme agréée).

One of: GR, FR · Default: GR

typestringrequired

Document type, by regime: an AADE myDATA type in GR (e.g. 1.1), a UNTDID 1001 code in FR (e.g. 380).

One of: 380, 381, 384, 386, 1.1, 2.1, 5.1, 5.2, 11.1, 11.2, 11.4

numberstring | nullrequired

The document's number: in FR the number you assigned (set once issued). In GR the provider's number in its series (e.g. ΕΑΛΠ-1), null until it assigns one: a display label, not unique, so identify a document by its id.

Default: null

statusstringrequired

Where the document stands: pending (Tallio accepted it; not yet issued, see stage), issued (the tax system accepted it; in Greece it has a MARK), rejected (the provider or the tax system refused it), failed (Tallio could not deliver it to the provider), cancelled (withdrawn before it was sent, or cancelled in myDATA after issue: see mydata.cancellation_mark).

One of: pending, issued, rejected, failed, cancelled

stagestring | nullrequired

Where a pending document is (queued, submitting, awaiting_confirmation, reconciling); null unless status is pending.

One of: queued, submitting, awaiting_confirmation, reconciling

issue_datestringrequired

Issue date, YYYY-MM-DD.

Format: date

currencystringrequired

ISO 4217 currency of the amounts: EUR in GR, any in FR.

Show patternHide pattern^[A-Z]{3}$
netintegerrequired

Sum of the lines' net amounts, in minor units, at most 1000000000000000.

From 0 to 1000000000000000

vatintegerrequired

Sum of the lines' VAT, each line rounded half up to the minor unit, in minor units, at most 1000000000000000.

From 0 to 1000000000000000

grossintegerrequired

net + vat, in minor units, at most 1250000000000000.

From 0 to 1250000000000000

provider_referencestring | nullrequired

The provider's own reference for the document, once it has taken it; null before.

mydataobject | nullrequired

myDATA's identity of the document: an object in GR, null in any other regime.

Show nested fields (4)Hide nested fields (4)
markstring | nullrequired

MARK (AADE registration number) once issued, as a digit string; null before. A cancelled document keeps the MARK it was issued with (null when it was withdrawn before it was sent).

Show patternHide pattern^[1-9]\d{0,18}$
uidstring | nullrequired

myDATA uid: the SHA-1 (40 upper-case hex digits) AADE derives from the document's identifiers; null until known.

Show patternHide pattern^[0-9A-F]{40}$
qr_urlstring | nullrequired

URL the document's QR code points to; null until the provider returns one.

Format: uri

cancellation_markstring | nullrequired

The MARK of the cancellation in myDATA, once an issued document is cancelled; null otherwise.

Show patternHide pattern^[1-9]\d{0,18}$
ctcobject | nullrequired

The French e-invoicing platform's identity of the document: an object in FR, null in any other regime.

Show nested fields (2)Hide nested fields (2)
platform_idstring | nullrequired

The plateforme agréée carrying the document (sandbox in test mode); null until it has taken it.

flow_idstring | nullrequired

The platform's id of the flow that carried the document; null until it reports one.

lifecycleobject | nullrequired

The tax regime's status for the document once sent (FR); null in GR and before the platform reports one.

Default: null

Show nested fields (3)Hide nested fields (3)
keystringrequired

Where the document is after issue, in GOBL's bill.Status keys.

One of: issued, acknowledged, processing, querying, rejected, accepted, paid, error, other

codestringrequired

The regime's own status code, e.g. 200 (Déposée) or 213 (Rejetée) in France.

1 to 20 characters

atstringrequired

When the regime's platform reported this status.

Format: date-time

errorobject | nullrequired

Why the document was rejected or failed; null otherwise.

Show nested fields (6)Hide nested fields (6)
codestringrequired

Stable machine-readable error code. Branch on this, never on message.

One of: validation_failed, unauthorized, not_found, idempotency_conflict, idempotency_in_progress, already_exists, invalid_state, connection_not_disconnected, merchant_archived, cursor_not_listed, payload_too_large, unsupported_media_type, rate_limited, too_many_pending_erasures, forbidden, restricted_key, vendor_suspended, subscription_required, not_supported, regime_mismatch, supplier_mismatch, connection_unavailable, provider_credentials_invalid, provider_rejected, balance_exceeded, credit_required, provider_unavailable, pdf_not_ready, service_unavailable, internal_error

messagestringrequired

Tallio's own explanation, safe to show to a developer; the provider's words are in provider_message.

provider_codestring | nullrequired

The provider's own error code, or null when the error did not come from a provider.

provider_messagestring | nullrequired

The provider's own error message, verbatim, or null when the error did not come from a provider. On a document or connection it is removed (null), like provider_raw, once the retention window ends or by a data-subject erasure.

retryablebooleanrequired

True when the same request may succeed if sent again later.

provider_rawany

The provider's error response body as received, or a TruncatedProviderRaw marker when it exceeds 4096 bytes of JSON. Never holds request headers, credentials or the request payload.

classificationobjectrequired

How the document was classified for myDATA.

Show nested fields (2)Hide nested fields (2)
sourcestringrequired

default when any line took Tallio's default, else override when any line took the merchant's override, else line.

One of: line, override, default

warningsstring[]required

What to check before issuing, e.g. that defaults were applied.

external_referencestring | nullrequired

Your own reference for the document, or null.

Default: null

metadataobjectrequired

Up to 50 key-value pairs of your own (keys up to 40 characters, values up to 500). Do not put personal data in it.

Default: {}

Show nested fields (1)Hide nested fields (1)
{key}string

A value, up to 500 characters.

1 to 40 characters

original_documentstring | nullrequired

For a credit note made from a Tallio document: that document (doc_…). Null otherwise.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
replacesstring | nullrequired

The rejected or failed document this one was issued to replace, or null.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
correctsstring | nullrequired

The issued document this one corrects, or null.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
replaced_bystring | nullrequired

The document created to replace this rejected or failed one, the live one if there were several; null otherwise.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
corrected_bystring | nullrequired

The document made to correct this one (POST /documents/{id}/correct), the latest if there were several; null otherwise.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
credit_notesstring[]required

Credit notes made from this document, oldest first, at most 100.

Up to 100 items · Default: []

Each item: Id of the document (doc_…).

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
amount_creditedobjectrequired

What credit notes made from this document take, pending ones included. Zero when there are none.

Default: {"net":0,"gross":0}

Show nested fields (2)Hide nested fields (2)
netintegerrequired

Net amount credited, in cents.

From 0 to 9007199254740991

grossintegerrequired

Gross amount credited, in cents.

From 0 to 9007199254740991

timelineobject[]required

The document's events, oldest first, at most 100.

Up to 100 items

Each item: One event in a document's history. GET /events/{id} returns the full Event.

Show nested fields (3)Hide nested fields (3)
idstringrequired

Id of the event (evt_…).

Show patternHide pattern^evt_[0-9A-Za-z]{22}$
typestringrequired

What happened: document.created (Tallio accepted a document), document.issued (the tax system accepted it; in Greece it has a MARK), document.rejected (the provider or the tax system refused it), document.failed (Tallio could not deliver it), merchant.created (a merchant was created), connection.created (a merchant was connected to a provider), connection.verified (the provider accepted its credentials), connection.invalid (the provider refused them), connection.disconnected (it was disconnected), connect_session.completed (a merchant connected through a hosted connect link), webhook_endpoint.disabled (Tallio disabled an endpoint failing for days), document.retried (a failed document was queued to be sent again), document.credited (a credit note made from the document was issued), document.cancelled (the document was withdrawn or cancelled), document.corrected (a corrected document was made to replace it), document.replaced (a new document was created to replace a rejected or failed one), connection.deleted (a disconnected connection was deleted from the merchant's list), merchant.archived (a merchant was archived: it issues nothing new) and merchant.unarchived (an archived merchant was restored).

One of: document.created, document.issued, document.rejected, document.failed, merchant.created, connection.created, connection.verified, connection.invalid, connection.disconnected, connect_session.completed, webhook_endpoint.disabled, document.retried, document.credited, document.cancelled, document.corrected, document.replaced, connection.deleted, merchant.archived, merchant.unarchived

createdstringrequired

When the event happened.

Format: date-time

issued_atstring | nullrequired

When the document was issued (the tax system accepted it); kept if it is cancelled afterwards, null for a document never issued.

Format: date-time

createdstringrequired

When Tallio accepted the document.

Format: date-time

updatedstringrequired

When the document last changed.

Format: date-time

createdstringrequired

When Tallio received the order.

Format: date-time

Example response · 200
{
  "data": {
    "id": "ord_02y9O8rh7F50tGi0QcWRrx",
    "object": "store_order",
    "merchant": "mer_02y9O8rh7F50tGi0QcWRrx",
    "mode": "live",
    "platform": "shopify",
    "external_id": "1042",
    "number": "1042",
    "status": "pending",
    "reason": null,
    "detail": null,
    "document": {
      "id": "doc_02y9O8rhJKVUXRvojdffcz",
      "object": "document",
      "merchant": "mer_02y9O8rh7F50tGi0QcWRrx",
      "mode": "test",
      "provider": "sandbox",
      "regime": "GR",
      "type": "1.1",
      "number": null,
      "status": "issued",
      "stage": null,
      "issue_date": "2026-10-10",
      "currency": "EUR",
      "net": 2500,
      "vat": 435,
      "gross": 2935,
      "provider_reference": "doc_02y9O8rhJKVUXRvojdffcz",
      "mydata": {
        "mark": "900000000000001",
        "uid": "4E1F0A6C2B9D8E7F6A5B4C3D2E1F0A9B8C7D6E5F",
        "qr_url": "https://sandbox.tallio.invalid/qr/900000000000001",
        "cancellation_mark": null
      },
      "ctc": null,
      "lifecycle": null,
      "error": null,
      "classification": {
        "source": "default",
        "warnings": [
          "No income classification on line 2; applied the 1.1 default category1_1/E3_561_001. Set it on the line, or as a merchant override, if that is wrong."
        ]
      },
      "external_reference": "#1042",
      "metadata": {
        "order_id": "5520731963508"
      },
      "original_document": null,
      "replaces": null,
      "corrects": null,
      "replaced_by": null,
      "corrected_by": null,
      "credit_notes": [],
      "amount_credited": {
        "net": 0,
        "gross": 0
      },
      "timeline": [
        {
          "id": "evt_02y9O8rhJ2Z2v1fOH2XiSH",
          "type": "document.created",
          "created": "2026-10-11T09:30:00.000Z"
        },
        {
          "id": "evt_02y9O8s1a8ymJqpmAy0nLe",
          "type": "document.issued",
          "created": "2026-10-11T09:30:02.000Z"
        }
      ],
      "issued_at": "2026-10-11T09:30:02.000Z",
      "created": "2026-10-11T09:30:00.000Z",
      "updated": "2026-10-11T09:30:02.000Z"
    },
    "created": "2026-10-11T09:30:00.000Z"
  }
}

Response body · 201

dataobjectrequired

A shop order sent to Tallio, and the document it became.

Show nested fields (12)Hide nested fields (12)
idstringrequired

Id of the store order (ord_…).

Show patternHide pattern^ord_[0-9A-Za-z]{22}$
objectstringrequired

Always "store_order".

Always store_order

merchantstringrequired

Id of the merchant (mer_…).

Show patternHide pattern^mer_[0-9A-Za-z]{22}$
modestringrequired

live for an order sent with a live key, test for a test key.

One of: live, test

platformstringrequired

The platform the order comes from.

One of: shopify, woocommerce

external_idstringrequired

The platform's id of the order.

1 to 64 characters

numberstringrequired

The order number the merchant and the buyer see.

statusstringrequired

pending (received, not yet mapped), skipped (it maps to no document: see reason), sent (its document was created and is on its way to the provider), issued (the document was issued), failed (the document was rejected, failed or cancelled, or Tallio could not create it: see reason).

One of: pending, skipped, sent, issued, failed

reasonstring | nullrequired

Why the order is skipped or failed, as a machine code; null otherwise.

detailstring | nullrequired

The reason in a sentence for the merchant; null when there is no reason.

documentobject | nullrequired

The document issued for the order, once one was created; null before.

Show nested fields (34)Hide nested fields (34)
idstringrequired

Id of the document (doc_…).

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
objectstringrequired

Always "document".

Always document

merchantstringrequired

Id of the merchant (mer_…).

Show patternHide pattern^mer_[0-9A-Za-z]{22}$
modestringrequired

live for a document created with a live key, test for a test key.

One of: live, test

providerstringrequired

The licensed e-invoicing provider (a Greek provider, direct myDATA, a French plateforme agréée, Chorus Pro for a French public-sector buyer, or Tallio's sandbox) that issues the document.

One of: sandbox, mydata, wrapp, impact, epsilon, softone, prosvasis, superpdp, choruspro, b2brouter, oxygen

regimestringrequired

Tax regime the document is issued under, by country: GR (Greece, myDATA) or FR (France, e-invoicing through a plateforme agréée).

One of: GR, FR · Default: GR

typestringrequired

Document type, by regime: an AADE myDATA type in GR (e.g. 1.1), a UNTDID 1001 code in FR (e.g. 380).

One of: 380, 381, 384, 386, 1.1, 2.1, 5.1, 5.2, 11.1, 11.2, 11.4

numberstring | nullrequired

The document's number: in FR the number you assigned (set once issued). In GR the provider's number in its series (e.g. ΕΑΛΠ-1), null until it assigns one: a display label, not unique, so identify a document by its id.

Default: null

statusstringrequired

Where the document stands: pending (Tallio accepted it; not yet issued, see stage), issued (the tax system accepted it; in Greece it has a MARK), rejected (the provider or the tax system refused it), failed (Tallio could not deliver it to the provider), cancelled (withdrawn before it was sent, or cancelled in myDATA after issue: see mydata.cancellation_mark).

One of: pending, issued, rejected, failed, cancelled

stagestring | nullrequired

Where a pending document is (queued, submitting, awaiting_confirmation, reconciling); null unless status is pending.

One of: queued, submitting, awaiting_confirmation, reconciling

issue_datestringrequired

Issue date, YYYY-MM-DD.

Format: date

currencystringrequired

ISO 4217 currency of the amounts: EUR in GR, any in FR.

Show patternHide pattern^[A-Z]{3}$
netintegerrequired

Sum of the lines' net amounts, in minor units, at most 1000000000000000.

From 0 to 1000000000000000

vatintegerrequired

Sum of the lines' VAT, each line rounded half up to the minor unit, in minor units, at most 1000000000000000.

From 0 to 1000000000000000

grossintegerrequired

net + vat, in minor units, at most 1250000000000000.

From 0 to 1250000000000000

provider_referencestring | nullrequired

The provider's own reference for the document, once it has taken it; null before.

mydataobject | nullrequired

myDATA's identity of the document: an object in GR, null in any other regime.

Show nested fields (4)Hide nested fields (4)
markstring | nullrequired

MARK (AADE registration number) once issued, as a digit string; null before. A cancelled document keeps the MARK it was issued with (null when it was withdrawn before it was sent).

Show patternHide pattern^[1-9]\d{0,18}$
uidstring | nullrequired

myDATA uid: the SHA-1 (40 upper-case hex digits) AADE derives from the document's identifiers; null until known.

Show patternHide pattern^[0-9A-F]{40}$
qr_urlstring | nullrequired

URL the document's QR code points to; null until the provider returns one.

Format: uri

cancellation_markstring | nullrequired

The MARK of the cancellation in myDATA, once an issued document is cancelled; null otherwise.

Show patternHide pattern^[1-9]\d{0,18}$
ctcobject | nullrequired

The French e-invoicing platform's identity of the document: an object in FR, null in any other regime.

Show nested fields (2)Hide nested fields (2)
platform_idstring | nullrequired

The plateforme agréée carrying the document (sandbox in test mode); null until it has taken it.

flow_idstring | nullrequired

The platform's id of the flow that carried the document; null until it reports one.

lifecycleobject | nullrequired

The tax regime's status for the document once sent (FR); null in GR and before the platform reports one.

Default: null

Show nested fields (3)Hide nested fields (3)
keystringrequired

Where the document is after issue, in GOBL's bill.Status keys.

One of: issued, acknowledged, processing, querying, rejected, accepted, paid, error, other

codestringrequired

The regime's own status code, e.g. 200 (Déposée) or 213 (Rejetée) in France.

1 to 20 characters

atstringrequired

When the regime's platform reported this status.

Format: date-time

errorobject | nullrequired

Why the document was rejected or failed; null otherwise.

Show nested fields (6)Hide nested fields (6)
codestringrequired

Stable machine-readable error code. Branch on this, never on message.

One of: validation_failed, unauthorized, not_found, idempotency_conflict, idempotency_in_progress, already_exists, invalid_state, connection_not_disconnected, merchant_archived, cursor_not_listed, payload_too_large, unsupported_media_type, rate_limited, too_many_pending_erasures, forbidden, restricted_key, vendor_suspended, subscription_required, not_supported, regime_mismatch, supplier_mismatch, connection_unavailable, provider_credentials_invalid, provider_rejected, balance_exceeded, credit_required, provider_unavailable, pdf_not_ready, service_unavailable, internal_error

messagestringrequired

Tallio's own explanation, safe to show to a developer; the provider's words are in provider_message.

provider_codestring | nullrequired

The provider's own error code, or null when the error did not come from a provider.

provider_messagestring | nullrequired

The provider's own error message, verbatim, or null when the error did not come from a provider. On a document or connection it is removed (null), like provider_raw, once the retention window ends or by a data-subject erasure.

retryablebooleanrequired

True when the same request may succeed if sent again later.

provider_rawany

The provider's error response body as received, or a TruncatedProviderRaw marker when it exceeds 4096 bytes of JSON. Never holds request headers, credentials or the request payload.

classificationobjectrequired

How the document was classified for myDATA.

Show nested fields (2)Hide nested fields (2)
sourcestringrequired

default when any line took Tallio's default, else override when any line took the merchant's override, else line.

One of: line, override, default

warningsstring[]required

What to check before issuing, e.g. that defaults were applied.

external_referencestring | nullrequired

Your own reference for the document, or null.

Default: null

metadataobjectrequired

Up to 50 key-value pairs of your own (keys up to 40 characters, values up to 500). Do not put personal data in it.

Default: {}

Show nested fields (1)Hide nested fields (1)
{key}string

A value, up to 500 characters.

1 to 40 characters

original_documentstring | nullrequired

For a credit note made from a Tallio document: that document (doc_…). Null otherwise.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
replacesstring | nullrequired

The rejected or failed document this one was issued to replace, or null.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
correctsstring | nullrequired

The issued document this one corrects, or null.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
replaced_bystring | nullrequired

The document created to replace this rejected or failed one, the live one if there were several; null otherwise.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
corrected_bystring | nullrequired

The document made to correct this one (POST /documents/{id}/correct), the latest if there were several; null otherwise.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
credit_notesstring[]required

Credit notes made from this document, oldest first, at most 100.

Up to 100 items · Default: []

Each item: Id of the document (doc_…).

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
amount_creditedobjectrequired

What credit notes made from this document take, pending ones included. Zero when there are none.

Default: {"net":0,"gross":0}

Show nested fields (2)Hide nested fields (2)
netintegerrequired

Net amount credited, in cents.

From 0 to 9007199254740991

grossintegerrequired

Gross amount credited, in cents.

From 0 to 9007199254740991

timelineobject[]required

The document's events, oldest first, at most 100.

Up to 100 items

Each item: One event in a document's history. GET /events/{id} returns the full Event.

Show nested fields (3)Hide nested fields (3)
idstringrequired

Id of the event (evt_…).

Show patternHide pattern^evt_[0-9A-Za-z]{22}$
typestringrequired

What happened: document.created (Tallio accepted a document), document.issued (the tax system accepted it; in Greece it has a MARK), document.rejected (the provider or the tax system refused it), document.failed (Tallio could not deliver it), merchant.created (a merchant was created), connection.created (a merchant was connected to a provider), connection.verified (the provider accepted its credentials), connection.invalid (the provider refused them), connection.disconnected (it was disconnected), connect_session.completed (a merchant connected through a hosted connect link), webhook_endpoint.disabled (Tallio disabled an endpoint failing for days), document.retried (a failed document was queued to be sent again), document.credited (a credit note made from the document was issued), document.cancelled (the document was withdrawn or cancelled), document.corrected (a corrected document was made to replace it), document.replaced (a new document was created to replace a rejected or failed one), connection.deleted (a disconnected connection was deleted from the merchant's list), merchant.archived (a merchant was archived: it issues nothing new) and merchant.unarchived (an archived merchant was restored).

One of: document.created, document.issued, document.rejected, document.failed, merchant.created, connection.created, connection.verified, connection.invalid, connection.disconnected, connect_session.completed, webhook_endpoint.disabled, document.retried, document.credited, document.cancelled, document.corrected, document.replaced, connection.deleted, merchant.archived, merchant.unarchived

createdstringrequired

When the event happened.

Format: date-time

issued_atstring | nullrequired

When the document was issued (the tax system accepted it); kept if it is cancelled afterwards, null for a document never issued.

Format: date-time

createdstringrequired

When Tallio accepted the document.

Format: date-time

updatedstringrequired

When the document last changed.

Format: date-time

createdstringrequired

When Tallio received the order.

Format: date-time

Example response · 201
{
  "data": {
    "id": "ord_02y9O8rh7F50tGi0QcWRrx",
    "object": "store_order",
    "merchant": "mer_02y9O8rh7F50tGi0QcWRrx",
    "mode": "live",
    "platform": "shopify",
    "external_id": "1042",
    "number": "1042",
    "status": "pending",
    "reason": null,
    "detail": null,
    "document": {
      "id": "doc_02y9O8rhJKVUXRvojdffcz",
      "object": "document",
      "merchant": "mer_02y9O8rh7F50tGi0QcWRrx",
      "mode": "test",
      "provider": "sandbox",
      "regime": "GR",
      "type": "1.1",
      "number": null,
      "status": "issued",
      "stage": null,
      "issue_date": "2026-10-10",
      "currency": "EUR",
      "net": 2500,
      "vat": 435,
      "gross": 2935,
      "provider_reference": "doc_02y9O8rhJKVUXRvojdffcz",
      "mydata": {
        "mark": "900000000000001",
        "uid": "4E1F0A6C2B9D8E7F6A5B4C3D2E1F0A9B8C7D6E5F",
        "qr_url": "https://sandbox.tallio.invalid/qr/900000000000001",
        "cancellation_mark": null
      },
      "ctc": null,
      "lifecycle": null,
      "error": null,
      "classification": {
        "source": "default",
        "warnings": [
          "No income classification on line 2; applied the 1.1 default category1_1/E3_561_001. Set it on the line, or as a merchant override, if that is wrong."
        ]
      },
      "external_reference": "#1042",
      "metadata": {
        "order_id": "5520731963508"
      },
      "original_document": null,
      "replaces": null,
      "corrects": null,
      "replaced_by": null,
      "corrected_by": null,
      "credit_notes": [],
      "amount_credited": {
        "net": 0,
        "gross": 0
      },
      "timeline": [
        {
          "id": "evt_02y9O8rhJ2Z2v1fOH2XiSH",
          "type": "document.created",
          "created": "2026-10-11T09:30:00.000Z"
        },
        {
          "id": "evt_02y9O8s1a8ymJqpmAy0nLe",
          "type": "document.issued",
          "created": "2026-10-11T09:30:02.000Z"
        }
      ],
      "issued_at": "2026-10-11T09:30:02.000Z",
      "created": "2026-10-11T09:30:00.000Z",
      "updated": "2026-10-11T09:30:02.000Z"
    },
    "created": "2026-10-11T09:30:00.000Z"
  }
}

Response headers

x-request-idstring

The request's correlation id; quote it when reporting a problem. One of: req_ plus a uuid (Tallio made it), client: plus the x-request-id you sent (8-128 of A-Z a-z 0-9 . _ : -), or the hosting platform's id.

With every response

Show patternHide pattern^(?:req_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|client:[A-Za-z0-9._:-]{8,128}|[A-Za-z0-9._-]{1,16}::[A-Za-z0-9._:-]{6,110})$
ratelimit-limitinteger

Requests allowed in the current window for the bucket this request counted against.

With 200, 201, 400, 404, 409, 413, 415, 429 · At least 1

ratelimit-remaininginteger

Requests left in the current window; 0 means the next one is refused until the window resets.

With 200, 201, 400, 404, 409, 413, 415, 429 · At least 0

ratelimit-resetinteger

Seconds until the current window resets.

With 200, 201, 400, 404, 409, 413, 415, 429 · At least 0

idempotent-replayedstring

true when this answer replays an earlier request with the same Idempotency-Key (nothing new was created); absent on the request that created it.

With 200, 201 · Always true

www-authenticatestring

The bearer challenge: send a vendor secret key as Authorization: Bearer <key>.

With 401 · Always Bearer realm="tallio"

retry-afterinteger

Seconds to wait before retrying a request refused with 429 rate_limited.

With 429 · At least 1

Errors
CodeStatusRetryableMeaning
validation_failed400NoRequest validation failed.
unauthorized401NoAuthentication is required.
vendor_suspended403NoThis vendor's access to Tallio is suspended. Its owner can contact Tallio to restore it.
not_found404NoThe requested resource was not found.
idempotency_conflict409NoThis idempotency key was already used with a different request.
idempotency_in_progress409YesA request with this idempotency key is still in progress; retry it after Retry-After to get its answer.
merchant_archived409NoThis merchant is archived: it issues and connects nothing new. Unarchive it first (POST /merchants/{id}/unarchive).
payload_too_large413NoThe request body is too large.
unsupported_media_type415NoThe request body must be JSON (Content-Type: application/json).
rate_limited429YesA rate limit was reached. Retry later.
internal_error500NoAn unexpected server error occurred.

Retrieve a store order #

GET /api/v1/store_orders/{id}

Returns a store order with its status, the reason when it was skipped or failed, and its document once one was created (number and MARK once issued).

  • Bearer API key

Path parameters

idstringrequired

The store order's id (ord_…).

Request

curl
curl -X GET 'https://tallio.dev/api/v1/store_orders/ord_02y9O8rh7F50tGi0QcWRrx' \
  -H "Authorization: Bearer $TALLIO_API_KEY"
Responses
StatusDescription
200The store order.
4XX, 5XXAn error: see Errors below.

Response body · 200

dataobjectrequired

A shop order sent to Tallio, and the document it became.

Show nested fields (12)Hide nested fields (12)
idstringrequired

Id of the store order (ord_…).

Show patternHide pattern^ord_[0-9A-Za-z]{22}$
objectstringrequired

Always "store_order".

Always store_order

merchantstringrequired

Id of the merchant (mer_…).

Show patternHide pattern^mer_[0-9A-Za-z]{22}$
modestringrequired

live for an order sent with a live key, test for a test key.

One of: live, test

platformstringrequired

The platform the order comes from.

One of: shopify, woocommerce

external_idstringrequired

The platform's id of the order.

1 to 64 characters

numberstringrequired

The order number the merchant and the buyer see.

statusstringrequired

pending (received, not yet mapped), skipped (it maps to no document: see reason), sent (its document was created and is on its way to the provider), issued (the document was issued), failed (the document was rejected, failed or cancelled, or Tallio could not create it: see reason).

One of: pending, skipped, sent, issued, failed

reasonstring | nullrequired

Why the order is skipped or failed, as a machine code; null otherwise.

detailstring | nullrequired

The reason in a sentence for the merchant; null when there is no reason.

documentobject | nullrequired

The document issued for the order, once one was created; null before.

Show nested fields (34)Hide nested fields (34)
idstringrequired

Id of the document (doc_…).

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
objectstringrequired

Always "document".

Always document

merchantstringrequired

Id of the merchant (mer_…).

Show patternHide pattern^mer_[0-9A-Za-z]{22}$
modestringrequired

live for a document created with a live key, test for a test key.

One of: live, test

providerstringrequired

The licensed e-invoicing provider (a Greek provider, direct myDATA, a French plateforme agréée, Chorus Pro for a French public-sector buyer, or Tallio's sandbox) that issues the document.

One of: sandbox, mydata, wrapp, impact, epsilon, softone, prosvasis, superpdp, choruspro, b2brouter, oxygen

regimestringrequired

Tax regime the document is issued under, by country: GR (Greece, myDATA) or FR (France, e-invoicing through a plateforme agréée).

One of: GR, FR · Default: GR

typestringrequired

Document type, by regime: an AADE myDATA type in GR (e.g. 1.1), a UNTDID 1001 code in FR (e.g. 380).

One of: 380, 381, 384, 386, 1.1, 2.1, 5.1, 5.2, 11.1, 11.2, 11.4

numberstring | nullrequired

The document's number: in FR the number you assigned (set once issued). In GR the provider's number in its series (e.g. ΕΑΛΠ-1), null until it assigns one: a display label, not unique, so identify a document by its id.

Default: null

statusstringrequired

Where the document stands: pending (Tallio accepted it; not yet issued, see stage), issued (the tax system accepted it; in Greece it has a MARK), rejected (the provider or the tax system refused it), failed (Tallio could not deliver it to the provider), cancelled (withdrawn before it was sent, or cancelled in myDATA after issue: see mydata.cancellation_mark).

One of: pending, issued, rejected, failed, cancelled

stagestring | nullrequired

Where a pending document is (queued, submitting, awaiting_confirmation, reconciling); null unless status is pending.

One of: queued, submitting, awaiting_confirmation, reconciling

issue_datestringrequired

Issue date, YYYY-MM-DD.

Format: date

currencystringrequired

ISO 4217 currency of the amounts: EUR in GR, any in FR.

Show patternHide pattern^[A-Z]{3}$
netintegerrequired

Sum of the lines' net amounts, in minor units, at most 1000000000000000.

From 0 to 1000000000000000

vatintegerrequired

Sum of the lines' VAT, each line rounded half up to the minor unit, in minor units, at most 1000000000000000.

From 0 to 1000000000000000

grossintegerrequired

net + vat, in minor units, at most 1250000000000000.

From 0 to 1250000000000000

provider_referencestring | nullrequired

The provider's own reference for the document, once it has taken it; null before.

mydataobject | nullrequired

myDATA's identity of the document: an object in GR, null in any other regime.

Show nested fields (4)Hide nested fields (4)
markstring | nullrequired

MARK (AADE registration number) once issued, as a digit string; null before. A cancelled document keeps the MARK it was issued with (null when it was withdrawn before it was sent).

Show patternHide pattern^[1-9]\d{0,18}$
uidstring | nullrequired

myDATA uid: the SHA-1 (40 upper-case hex digits) AADE derives from the document's identifiers; null until known.

Show patternHide pattern^[0-9A-F]{40}$
qr_urlstring | nullrequired

URL the document's QR code points to; null until the provider returns one.

Format: uri

cancellation_markstring | nullrequired

The MARK of the cancellation in myDATA, once an issued document is cancelled; null otherwise.

Show patternHide pattern^[1-9]\d{0,18}$
ctcobject | nullrequired

The French e-invoicing platform's identity of the document: an object in FR, null in any other regime.

Show nested fields (2)Hide nested fields (2)
platform_idstring | nullrequired

The plateforme agréée carrying the document (sandbox in test mode); null until it has taken it.

flow_idstring | nullrequired

The platform's id of the flow that carried the document; null until it reports one.

lifecycleobject | nullrequired

The tax regime's status for the document once sent (FR); null in GR and before the platform reports one.

Default: null

Show nested fields (3)Hide nested fields (3)
keystringrequired

Where the document is after issue, in GOBL's bill.Status keys.

One of: issued, acknowledged, processing, querying, rejected, accepted, paid, error, other

codestringrequired

The regime's own status code, e.g. 200 (Déposée) or 213 (Rejetée) in France.

1 to 20 characters

atstringrequired

When the regime's platform reported this status.

Format: date-time

errorobject | nullrequired

Why the document was rejected or failed; null otherwise.

Show nested fields (6)Hide nested fields (6)
codestringrequired

Stable machine-readable error code. Branch on this, never on message.

One of: validation_failed, unauthorized, not_found, idempotency_conflict, idempotency_in_progress, already_exists, invalid_state, connection_not_disconnected, merchant_archived, cursor_not_listed, payload_too_large, unsupported_media_type, rate_limited, too_many_pending_erasures, forbidden, restricted_key, vendor_suspended, subscription_required, not_supported, regime_mismatch, supplier_mismatch, connection_unavailable, provider_credentials_invalid, provider_rejected, balance_exceeded, credit_required, provider_unavailable, pdf_not_ready, service_unavailable, internal_error

messagestringrequired

Tallio's own explanation, safe to show to a developer; the provider's words are in provider_message.

provider_codestring | nullrequired

The provider's own error code, or null when the error did not come from a provider.

provider_messagestring | nullrequired

The provider's own error message, verbatim, or null when the error did not come from a provider. On a document or connection it is removed (null), like provider_raw, once the retention window ends or by a data-subject erasure.

retryablebooleanrequired

True when the same request may succeed if sent again later.

provider_rawany

The provider's error response body as received, or a TruncatedProviderRaw marker when it exceeds 4096 bytes of JSON. Never holds request headers, credentials or the request payload.

classificationobjectrequired

How the document was classified for myDATA.

Show nested fields (2)Hide nested fields (2)
sourcestringrequired

default when any line took Tallio's default, else override when any line took the merchant's override, else line.

One of: line, override, default

warningsstring[]required

What to check before issuing, e.g. that defaults were applied.

external_referencestring | nullrequired

Your own reference for the document, or null.

Default: null

metadataobjectrequired

Up to 50 key-value pairs of your own (keys up to 40 characters, values up to 500). Do not put personal data in it.

Default: {}

Show nested fields (1)Hide nested fields (1)
{key}string

A value, up to 500 characters.

1 to 40 characters

original_documentstring | nullrequired

For a credit note made from a Tallio document: that document (doc_…). Null otherwise.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
replacesstring | nullrequired

The rejected or failed document this one was issued to replace, or null.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
correctsstring | nullrequired

The issued document this one corrects, or null.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
replaced_bystring | nullrequired

The document created to replace this rejected or failed one, the live one if there were several; null otherwise.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
corrected_bystring | nullrequired

The document made to correct this one (POST /documents/{id}/correct), the latest if there were several; null otherwise.

Default: null

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
credit_notesstring[]required

Credit notes made from this document, oldest first, at most 100.

Up to 100 items · Default: []

Each item: Id of the document (doc_…).

Show patternHide pattern^doc_[0-9A-Za-z]{22}$
amount_creditedobjectrequired

What credit notes made from this document take, pending ones included. Zero when there are none.

Default: {"net":0,"gross":0}

Show nested fields (2)Hide nested fields (2)
netintegerrequired

Net amount credited, in cents.

From 0 to 9007199254740991

grossintegerrequired

Gross amount credited, in cents.

From 0 to 9007199254740991

timelineobject[]required

The document's events, oldest first, at most 100.

Up to 100 items

Each item: One event in a document's history. GET /events/{id} returns the full Event.

Show nested fields (3)Hide nested fields (3)
idstringrequired

Id of the event (evt_…).

Show patternHide pattern^evt_[0-9A-Za-z]{22}$
typestringrequired

What happened: document.created (Tallio accepted a document), document.issued (the tax system accepted it; in Greece it has a MARK), document.rejected (the provider or the tax system refused it), document.failed (Tallio could not deliver it), merchant.created (a merchant was created), connection.created (a merchant was connected to a provider), connection.verified (the provider accepted its credentials), connection.invalid (the provider refused them), connection.disconnected (it was disconnected), connect_session.completed (a merchant connected through a hosted connect link), webhook_endpoint.disabled (Tallio disabled an endpoint failing for days), document.retried (a failed document was queued to be sent again), document.credited (a credit note made from the document was issued), document.cancelled (the document was withdrawn or cancelled), document.corrected (a corrected document was made to replace it), document.replaced (a new document was created to replace a rejected or failed one), connection.deleted (a disconnected connection was deleted from the merchant's list), merchant.archived (a merchant was archived: it issues nothing new) and merchant.unarchived (an archived merchant was restored).

One of: document.created, document.issued, document.rejected, document.failed, merchant.created, connection.created, connection.verified, connection.invalid, connection.disconnected, connect_session.completed, webhook_endpoint.disabled, document.retried, document.credited, document.cancelled, document.corrected, document.replaced, connection.deleted, merchant.archived, merchant.unarchived

createdstringrequired

When the event happened.

Format: date-time

issued_atstring | nullrequired

When the document was issued (the tax system accepted it); kept if it is cancelled afterwards, null for a document never issued.

Format: date-time

createdstringrequired

When Tallio accepted the document.

Format: date-time

updatedstringrequired

When the document last changed.

Format: date-time

createdstringrequired

When Tallio received the order.

Format: date-time

Example response · 200
{
  "data": {
    "id": "ord_02y9O8rh7F50tGi0QcWRrx",
    "object": "store_order",
    "merchant": "mer_02y9O8rh7F50tGi0QcWRrx",
    "mode": "live",
    "platform": "shopify",
    "external_id": "1042",
    "number": "1042",
    "status": "pending",
    "reason": null,
    "detail": null,
    "document": {
      "id": "doc_02y9O8rhJKVUXRvojdffcz",
      "object": "document",
      "merchant": "mer_02y9O8rh7F50tGi0QcWRrx",
      "mode": "test",
      "provider": "sandbox",
      "regime": "GR",
      "type": "1.1",
      "number": null,
      "status": "issued",
      "stage": null,
      "issue_date": "2026-10-10",
      "currency": "EUR",
      "net": 2500,
      "vat": 435,
      "gross": 2935,
      "provider_reference": "doc_02y9O8rhJKVUXRvojdffcz",
      "mydata": {
        "mark": "900000000000001",
        "uid": "4E1F0A6C2B9D8E7F6A5B4C3D2E1F0A9B8C7D6E5F",
        "qr_url": "https://sandbox.tallio.invalid/qr/900000000000001",
        "cancellation_mark": null
      },
      "ctc": null,
      "lifecycle": null,
      "error": null,
      "classification": {
        "source": "default",
        "warnings": [
          "No income classification on line 2; applied the 1.1 default category1_1/E3_561_001. Set it on the line, or as a merchant override, if that is wrong."
        ]
      },
      "external_reference": "#1042",
      "metadata": {
        "order_id": "5520731963508"
      },
      "original_document": null,
      "replaces": null,
      "corrects": null,
      "replaced_by": null,
      "corrected_by": null,
      "credit_notes": [],
      "amount_credited": {
        "net": 0,
        "gross": 0
      },
      "timeline": [
        {
          "id": "evt_02y9O8rhJ2Z2v1fOH2XiSH",
          "type": "document.created",
          "created": "2026-10-11T09:30:00.000Z"
        },
        {
          "id": "evt_02y9O8s1a8ymJqpmAy0nLe",
          "type": "document.issued",
          "created": "2026-10-11T09:30:02.000Z"
        }
      ],
      "issued_at": "2026-10-11T09:30:02.000Z",
      "created": "2026-10-11T09:30:00.000Z",
      "updated": "2026-10-11T09:30:02.000Z"
    },
    "created": "2026-10-11T09:30:00.000Z"
  }
}

Response headers

x-request-idstring

The request's correlation id; quote it when reporting a problem. One of: req_ plus a uuid (Tallio made it), client: plus the x-request-id you sent (8-128 of A-Z a-z 0-9 . _ : -), or the hosting platform's id.

With every response

Show patternHide pattern^(?:req_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|client:[A-Za-z0-9._:-]{8,128}|[A-Za-z0-9._-]{1,16}::[A-Za-z0-9._:-]{6,110})$
ratelimit-limitinteger

Requests allowed in the current window for the bucket this request counted against.

With 200, 404, 429 · At least 1

ratelimit-remaininginteger

Requests left in the current window; 0 means the next one is refused until the window resets.

With 200, 404, 429 · At least 0

ratelimit-resetinteger

Seconds until the current window resets.

With 200, 404, 429 · At least 0

www-authenticatestring

The bearer challenge: send a vendor secret key as Authorization: Bearer <key>.

With 401 · Always Bearer realm="tallio"

retry-afterinteger

Seconds to wait before retrying a request refused with 429 rate_limited.

With 429 · At least 1

Errors
CodeStatusRetryableMeaning
unauthorized401NoAuthentication is required.
vendor_suspended403NoThis vendor's access to Tallio is suspended. Its owner can contact Tallio to restore it.
not_found404NoThe requested resource was not found.
rate_limited429YesA rate limit was reached. Retry later.
internal_error500NoAn unexpected server error occurred.