Μενού τεκμηρίωσης: Stores
Stores
Orders a shop sends from its store, and the documents they become.
Η αναφορά API είναι διαθέσιμη μόνο στα αγγλικά, όπως και το API.
Σε αυτή τη σελίδα
Send a shop order #
/api/v1/store_ordersSends 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-keystringrequiredA 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
merchantstringrequiredThe merchant whose store the order is from (mer_…).
Show patternHide pattern
^mer_[0-9A-Za-z]{22}$orderobjectrequiredThe order as the platform holds it (StoreOrderSnapshot); Tallio maps it, never the store.
Show nested fields (19)Hide nested fields (19)
platformstringrequiredThe 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:
woocommercetestbooleanrequiredA test order (a test gateway or test mode): never a fiscal document.
currencystringrequiredISO 4217 currency of every amount.
Show patternHide pattern
^[A-Z]{3}$prices_include_taxbooleanrequiredThe store's prices are entered with tax included.
tax_roundingstringrequiredHow 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,subtotaltotalstringrequiredThe 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[]requiredThe 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 | nullrequiredThe platform's id of the line, which refunds name; null when the platform gave none.
1 to 64 characters
namestringrequiredThe product's name as sold, variation included (Shopify: title - variant).
Up to 1000 characters
skustringThe SKU; describes the line when it has no name.
Up to 200 characters
product_idstringThe platform's product id; describes the line when nothing else does.
Up to 64 characters
quantitystringrequiredUnits 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})?$totalstringrequiredThe line's net amount after discounts, tax excluded.
Show patternHide pattern
^-?\d{1,13}(\.\d{1,10})?$taxesobject[]requiredThe 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_idstringrequiredThe platform's id of the tax rate (WooCommerce: the key of the line's taxes; Shopify: the rate).
1 to 64 characters
rate_percentstringrequiredThe 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})?$amountstringrequiredThe 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_cardbooleanrequiredThe line sells a gift card, which is not a sale of goods.
shipping_linesobject[]requiredThe 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 | nullrequiredThe platform's id of the line, which refunds name; null when the platform gave none.
1 to 64 characters
namestringrequiredThe shipping's name as the order shows it.
Up to 1000 characters
totalstringrequiredThe shipping's net amount after discounts, tax excluded.
Show patternHide pattern
^-?\d{1,13}(\.\d{1,10})?$taxesobject[]requiredThe 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_idstringrequiredThe platform's id of the tax rate (WooCommerce: the key of the line's taxes; Shopify: the rate).
1 to 64 characters
rate_percentstringrequiredThe 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})?$amountstringrequiredThe 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[]requiredOther 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 | nullrequiredThe platform's id of the line, which refunds name; null when the platform gave none.
1 to 64 characters
namestringrequiredThe fee's name as the order shows it.
Up to 1000 characters
totalstringrequiredThe fee's net amount after discounts, tax excluded.
Show patternHide pattern
^-?\d{1,13}(\.\d{1,10})?$taxesobject[]requiredThe 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_idstringrequiredThe platform's id of the tax rate (WooCommerce: the key of the line's taxes; Shopify: the rate).
1 to 64 characters
rate_percentstringrequiredThe 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})?$amountstringrequiredThe 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[]requiredThe 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)
codestringrequiredThe coupon code.
Up to 200 characters
billingobjectThe billing address: it names and locates an invoice's buyer.
Show nested fields (8)Hide nested fields (8)
countrystringISO 3166-1 alpha-2 country code.
Show patternHide pattern
^[A-Z]{2}$address_1stringStreet and number.
Up to 500 characters
citystringCity.
Up to 200 characters
postcodestringPostal code.
Up to 50 characters
companystringCompany name.
Up to 500 characters
namestringThe billing person's full name, when the platform keeps one.
Up to 500 characters
first_namestringFirst name.
Up to 200 characters
last_namestringLast name.
Up to 200 characters
shippingobjectThe shipping address; the sale is taxed in its country, else the billing country.
Show nested fields (4)Hide nested fields (4)
countrystringISO 3166-1 alpha-2 country code.
Show patternHide pattern
^[A-Z]{2}$address_1stringStreet and number.
Up to 500 characters
citystringCity.
Up to 200 characters
postcodestringPostal code.
Up to 50 characters
payment_gatewaysobject[]requiredThe 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)
idstringrequiredThe gateway's id (WooCommerce: cod, bacs, stripe; Shopify: its gateway name).
1 to 200 characters
titlestringrequiredThe gateway's name as the buyer saw it.
Up to 200 characters
invoice_requestobjectWhat 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[]requiredEvery 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[]requiredEvery 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[]requiredEvery 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_versionstringrequiredThe platform's version ("11.2.1"), logged, never branched on.
1 to 50 characters
external_idstringrequiredThe platform's order id.
1 to 64 characters
numberstringrequiredThe order number the merchant knows it by ("1042", "#1042").
1 to 64 characters
created_atstringrequiredWhen the order was placed.
Format:
date-timepaid_atstring | nullrequiredWhen 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"
}
}| Status | Description |
|---|---|
200 | The store order Tallio already held for this order. |
201 | The store order, pending. A replay returns the first answer. |
| 4XX, 5XX | An error: see Errors below. |
Response body · 200
dataobjectrequiredA shop order sent to Tallio, and the document it became.
Show nested fields (12)Hide nested fields (12)
idstringrequiredId of the store order (ord_…).
Show patternHide pattern
^ord_[0-9A-Za-z]{22}$objectstringrequiredAlways "store_order".
Always
store_ordermerchantstringrequiredId of the merchant (mer_…).
Show patternHide pattern
^mer_[0-9A-Za-z]{22}$modestringrequiredlive for an order sent with a live key, test for a test key.
One of:
live,testplatformstringrequiredThe platform the order comes from.
One of:
shopify,woocommerceexternal_idstringrequiredThe platform's id of the order.
1 to 64 characters
numberstringrequiredThe order number the merchant and the buyer see.
statusstringrequiredpending (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,failedreasonstring | nullrequiredWhy the order is skipped or failed, as a machine code; null otherwise.
detailstring | nullrequiredThe reason in a sentence for the merchant; null when there is no reason.
documentobject | nullrequiredThe document issued for the order, once one was created; null before.
Show nested fields (34)Hide nested fields (34)
idstringrequiredId of the document (doc_…).
Show patternHide pattern
^doc_[0-9A-Za-z]{22}$objectstringrequiredAlways "document".
Always
documentmerchantstringrequiredId of the merchant (mer_…).
Show patternHide pattern
^mer_[0-9A-Za-z]{22}$modestringrequiredlive for a document created with a live key, test for a test key.
One of:
live,testproviderstringrequiredThe 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,oxygenregimestringrequiredTax 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:GRtypestringrequiredDocument 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.4numberstring | nullrequiredThe 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:
nullstatusstringrequiredWhere 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,cancelledstagestring | nullrequiredWhere a pending document is (queued, submitting, awaiting_confirmation, reconciling); null unless status is pending.
One of:
queued,submitting,awaiting_confirmation,reconcilingissue_datestringrequiredIssue date, YYYY-MM-DD.
Format:
datecurrencystringrequiredISO 4217 currency of the amounts: EUR in GR, any in FR.
Show patternHide pattern
^[A-Z]{3}$netintegerrequiredSum of the lines' net amounts, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
vatintegerrequiredSum of the lines' VAT, each line rounded half up to the minor unit, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
grossintegerrequirednet + vat, in minor units, at most 1250000000000000.
From 0 to 1250000000000000
provider_referencestring | nullrequiredThe provider's own reference for the document, once it has taken it; null before.
mydataobject | nullrequiredmyDATA's identity of the document: an object in GR, null in any other regime.
Show nested fields (4)Hide nested fields (4)
markstring | nullrequiredMARK (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 | nullrequiredmyDATA 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 | nullrequiredURL the document's QR code points to; null until the provider returns one.
Format:
uricancellation_markstring | nullrequiredThe MARK of the cancellation in myDATA, once an issued document is cancelled; null otherwise.
Show patternHide pattern
^[1-9]\d{0,18}$
ctcobject | nullrequiredThe 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 | nullrequiredThe plateforme agréée carrying the document (sandbox in test mode); null until it has taken it.
flow_idstring | nullrequiredThe platform's id of the flow that carried the document; null until it reports one.
lifecycleobject | nullrequiredThe tax regime's status for the document once sent (FR); null in GR and before the platform reports one.
Default:
nullShow nested fields (3)Hide nested fields (3)
keystringrequiredWhere the document is after issue, in GOBL's bill.Status keys.
One of:
issued,acknowledged,processing,querying,rejected,accepted,paid,error,othercodestringrequiredThe regime's own status code, e.g. 200 (Déposée) or 213 (Rejetée) in France.
1 to 20 characters
atstringrequiredWhen the regime's platform reported this status.
Format:
date-time
errorobject | nullrequiredWhy the document was rejected or failed; null otherwise.
Show nested fields (6)Hide nested fields (6)
codestringrequiredStable 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_errormessagestringrequiredTallio's own explanation, safe to show to a developer; the provider's words are in provider_message.
provider_codestring | nullrequiredThe provider's own error code, or null when the error did not come from a provider.
provider_messagestring | nullrequiredThe 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.
retryablebooleanrequiredTrue when the same request may succeed if sent again later.
provider_rawanyThe 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.
classificationobjectrequiredHow the document was classified for myDATA.
Show nested fields (2)Hide nested fields (2)
sourcestringrequireddefault when any line took Tallio's default, else override when any line took the merchant's override, else line.
One of:
line,override,defaultwarningsstring[]requiredWhat to check before issuing, e.g. that defaults were applied.
external_referencestring | nullrequiredYour own reference for the document, or null.
Default:
nullmetadataobjectrequiredUp 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}stringA value, up to 500 characters.
1 to 40 characters
original_documentstring | nullrequiredFor a credit note made from a Tallio document: that document (doc_…). Null otherwise.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$replacesstring | nullrequiredThe rejected or failed document this one was issued to replace, or null.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$correctsstring | nullrequiredThe issued document this one corrects, or null.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$replaced_bystring | nullrequiredThe document created to replace this rejected or failed one, the live one if there were several; null otherwise.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$corrected_bystring | nullrequiredThe document made to correct this one (POST /documents/{id}/correct), the latest if there were several; null otherwise.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$credit_notesstring[]requiredCredit 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_creditedobjectrequiredWhat 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)
netintegerrequiredNet amount credited, in cents.
From 0 to 9007199254740991
grossintegerrequiredGross amount credited, in cents.
From 0 to 9007199254740991
timelineobject[]requiredThe 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)
idstringrequiredId of the event (evt_…).
Show patternHide pattern
^evt_[0-9A-Za-z]{22}$typestringrequiredWhat 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.unarchivedcreatedstringrequiredWhen the event happened.
Format:
date-time
issued_atstring | nullrequiredWhen the document was issued (the tax system accepted it); kept if it is cancelled afterwards, null for a document never issued.
Format:
date-timecreatedstringrequiredWhen Tallio accepted the document.
Format:
date-timeupdatedstringrequiredWhen the document last changed.
Format:
date-time
createdstringrequiredWhen 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
dataobjectrequiredA shop order sent to Tallio, and the document it became.
Show nested fields (12)Hide nested fields (12)
idstringrequiredId of the store order (ord_…).
Show patternHide pattern
^ord_[0-9A-Za-z]{22}$objectstringrequiredAlways "store_order".
Always
store_ordermerchantstringrequiredId of the merchant (mer_…).
Show patternHide pattern
^mer_[0-9A-Za-z]{22}$modestringrequiredlive for an order sent with a live key, test for a test key.
One of:
live,testplatformstringrequiredThe platform the order comes from.
One of:
shopify,woocommerceexternal_idstringrequiredThe platform's id of the order.
1 to 64 characters
numberstringrequiredThe order number the merchant and the buyer see.
statusstringrequiredpending (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,failedreasonstring | nullrequiredWhy the order is skipped or failed, as a machine code; null otherwise.
detailstring | nullrequiredThe reason in a sentence for the merchant; null when there is no reason.
documentobject | nullrequiredThe document issued for the order, once one was created; null before.
Show nested fields (34)Hide nested fields (34)
idstringrequiredId of the document (doc_…).
Show patternHide pattern
^doc_[0-9A-Za-z]{22}$objectstringrequiredAlways "document".
Always
documentmerchantstringrequiredId of the merchant (mer_…).
Show patternHide pattern
^mer_[0-9A-Za-z]{22}$modestringrequiredlive for a document created with a live key, test for a test key.
One of:
live,testproviderstringrequiredThe 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,oxygenregimestringrequiredTax 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:GRtypestringrequiredDocument 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.4numberstring | nullrequiredThe 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:
nullstatusstringrequiredWhere 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,cancelledstagestring | nullrequiredWhere a pending document is (queued, submitting, awaiting_confirmation, reconciling); null unless status is pending.
One of:
queued,submitting,awaiting_confirmation,reconcilingissue_datestringrequiredIssue date, YYYY-MM-DD.
Format:
datecurrencystringrequiredISO 4217 currency of the amounts: EUR in GR, any in FR.
Show patternHide pattern
^[A-Z]{3}$netintegerrequiredSum of the lines' net amounts, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
vatintegerrequiredSum of the lines' VAT, each line rounded half up to the minor unit, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
grossintegerrequirednet + vat, in minor units, at most 1250000000000000.
From 0 to 1250000000000000
provider_referencestring | nullrequiredThe provider's own reference for the document, once it has taken it; null before.
mydataobject | nullrequiredmyDATA's identity of the document: an object in GR, null in any other regime.
Show nested fields (4)Hide nested fields (4)
markstring | nullrequiredMARK (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 | nullrequiredmyDATA 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 | nullrequiredURL the document's QR code points to; null until the provider returns one.
Format:
uricancellation_markstring | nullrequiredThe MARK of the cancellation in myDATA, once an issued document is cancelled; null otherwise.
Show patternHide pattern
^[1-9]\d{0,18}$
ctcobject | nullrequiredThe 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 | nullrequiredThe plateforme agréée carrying the document (sandbox in test mode); null until it has taken it.
flow_idstring | nullrequiredThe platform's id of the flow that carried the document; null until it reports one.
lifecycleobject | nullrequiredThe tax regime's status for the document once sent (FR); null in GR and before the platform reports one.
Default:
nullShow nested fields (3)Hide nested fields (3)
keystringrequiredWhere the document is after issue, in GOBL's bill.Status keys.
One of:
issued,acknowledged,processing,querying,rejected,accepted,paid,error,othercodestringrequiredThe regime's own status code, e.g. 200 (Déposée) or 213 (Rejetée) in France.
1 to 20 characters
atstringrequiredWhen the regime's platform reported this status.
Format:
date-time
errorobject | nullrequiredWhy the document was rejected or failed; null otherwise.
Show nested fields (6)Hide nested fields (6)
codestringrequiredStable 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_errormessagestringrequiredTallio's own explanation, safe to show to a developer; the provider's words are in provider_message.
provider_codestring | nullrequiredThe provider's own error code, or null when the error did not come from a provider.
provider_messagestring | nullrequiredThe 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.
retryablebooleanrequiredTrue when the same request may succeed if sent again later.
provider_rawanyThe 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.
classificationobjectrequiredHow the document was classified for myDATA.
Show nested fields (2)Hide nested fields (2)
sourcestringrequireddefault when any line took Tallio's default, else override when any line took the merchant's override, else line.
One of:
line,override,defaultwarningsstring[]requiredWhat to check before issuing, e.g. that defaults were applied.
external_referencestring | nullrequiredYour own reference for the document, or null.
Default:
nullmetadataobjectrequiredUp 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}stringA value, up to 500 characters.
1 to 40 characters
original_documentstring | nullrequiredFor a credit note made from a Tallio document: that document (doc_…). Null otherwise.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$replacesstring | nullrequiredThe rejected or failed document this one was issued to replace, or null.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$correctsstring | nullrequiredThe issued document this one corrects, or null.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$replaced_bystring | nullrequiredThe document created to replace this rejected or failed one, the live one if there were several; null otherwise.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$corrected_bystring | nullrequiredThe document made to correct this one (POST /documents/{id}/correct), the latest if there were several; null otherwise.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$credit_notesstring[]requiredCredit 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_creditedobjectrequiredWhat 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)
netintegerrequiredNet amount credited, in cents.
From 0 to 9007199254740991
grossintegerrequiredGross amount credited, in cents.
From 0 to 9007199254740991
timelineobject[]requiredThe 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)
idstringrequiredId of the event (evt_…).
Show patternHide pattern
^evt_[0-9A-Za-z]{22}$typestringrequiredWhat 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.unarchivedcreatedstringrequiredWhen the event happened.
Format:
date-time
issued_atstring | nullrequiredWhen the document was issued (the tax system accepted it); kept if it is cancelled afterwards, null for a document never issued.
Format:
date-timecreatedstringrequiredWhen Tallio accepted the document.
Format:
date-timeupdatedstringrequiredWhen the document last changed.
Format:
date-time
createdstringrequiredWhen 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-idstringThe 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-limitintegerRequests 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-remainingintegerRequests 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-resetintegerSeconds until the current window resets.
With 200, 201, 400, 404, 409, 413, 415, 429 · At least 0
idempotent-replayedstringtrue 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
truewww-authenticatestringThe bearer challenge: send a vendor secret key as
Authorization: Bearer <key>.With 401 · Always
Bearer realm="tallio"retry-afterintegerSeconds to wait before retrying a request refused with 429
rate_limited.With 429 · At least 1
| Code | Status | Retryable | Meaning |
|---|---|---|---|
validation_failed | 400 | No | Request validation failed. |
unauthorized | 401 | No | Authentication is required. |
vendor_suspended | 403 | No | This vendor's access to Tallio is suspended. Its owner can contact Tallio to restore it. |
not_found | 404 | No | The requested resource was not found. |
idempotency_conflict | 409 | No | This idempotency key was already used with a different request. |
idempotency_in_progress | 409 | Yes | A request with this idempotency key is still in progress; retry it after Retry-After to get its answer. |
merchant_archived | 409 | No | This merchant is archived: it issues and connects nothing new. Unarchive it first (POST /merchants/{id}/unarchive). |
payload_too_large | 413 | No | The request body is too large. |
unsupported_media_type | 415 | No | The request body must be JSON (Content-Type: application/json). |
rate_limited | 429 | Yes | A rate limit was reached. Retry later. |
internal_error | 500 | No | An unexpected server error occurred. |
Retrieve a store order #
/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
idstringrequiredThe store order's id (ord_…).
Request
curlcurl -X GET 'https://tallio.dev/api/v1/store_orders/ord_02y9O8rh7F50tGi0QcWRrx' \
-H "Authorization: Bearer $TALLIO_API_KEY"| Status | Description |
|---|---|
200 | The store order. |
| 4XX, 5XX | An error: see Errors below. |
Response body · 200
dataobjectrequiredA shop order sent to Tallio, and the document it became.
Show nested fields (12)Hide nested fields (12)
idstringrequiredId of the store order (ord_…).
Show patternHide pattern
^ord_[0-9A-Za-z]{22}$objectstringrequiredAlways "store_order".
Always
store_ordermerchantstringrequiredId of the merchant (mer_…).
Show patternHide pattern
^mer_[0-9A-Za-z]{22}$modestringrequiredlive for an order sent with a live key, test for a test key.
One of:
live,testplatformstringrequiredThe platform the order comes from.
One of:
shopify,woocommerceexternal_idstringrequiredThe platform's id of the order.
1 to 64 characters
numberstringrequiredThe order number the merchant and the buyer see.
statusstringrequiredpending (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,failedreasonstring | nullrequiredWhy the order is skipped or failed, as a machine code; null otherwise.
detailstring | nullrequiredThe reason in a sentence for the merchant; null when there is no reason.
documentobject | nullrequiredThe document issued for the order, once one was created; null before.
Show nested fields (34)Hide nested fields (34)
idstringrequiredId of the document (doc_…).
Show patternHide pattern
^doc_[0-9A-Za-z]{22}$objectstringrequiredAlways "document".
Always
documentmerchantstringrequiredId of the merchant (mer_…).
Show patternHide pattern
^mer_[0-9A-Za-z]{22}$modestringrequiredlive for a document created with a live key, test for a test key.
One of:
live,testproviderstringrequiredThe 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,oxygenregimestringrequiredTax 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:GRtypestringrequiredDocument 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.4numberstring | nullrequiredThe 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:
nullstatusstringrequiredWhere 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,cancelledstagestring | nullrequiredWhere a pending document is (queued, submitting, awaiting_confirmation, reconciling); null unless status is pending.
One of:
queued,submitting,awaiting_confirmation,reconcilingissue_datestringrequiredIssue date, YYYY-MM-DD.
Format:
datecurrencystringrequiredISO 4217 currency of the amounts: EUR in GR, any in FR.
Show patternHide pattern
^[A-Z]{3}$netintegerrequiredSum of the lines' net amounts, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
vatintegerrequiredSum of the lines' VAT, each line rounded half up to the minor unit, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
grossintegerrequirednet + vat, in minor units, at most 1250000000000000.
From 0 to 1250000000000000
provider_referencestring | nullrequiredThe provider's own reference for the document, once it has taken it; null before.
mydataobject | nullrequiredmyDATA's identity of the document: an object in GR, null in any other regime.
Show nested fields (4)Hide nested fields (4)
markstring | nullrequiredMARK (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 | nullrequiredmyDATA 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 | nullrequiredURL the document's QR code points to; null until the provider returns one.
Format:
uricancellation_markstring | nullrequiredThe MARK of the cancellation in myDATA, once an issued document is cancelled; null otherwise.
Show patternHide pattern
^[1-9]\d{0,18}$
ctcobject | nullrequiredThe 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 | nullrequiredThe plateforme agréée carrying the document (sandbox in test mode); null until it has taken it.
flow_idstring | nullrequiredThe platform's id of the flow that carried the document; null until it reports one.
lifecycleobject | nullrequiredThe tax regime's status for the document once sent (FR); null in GR and before the platform reports one.
Default:
nullShow nested fields (3)Hide nested fields (3)
keystringrequiredWhere the document is after issue, in GOBL's bill.Status keys.
One of:
issued,acknowledged,processing,querying,rejected,accepted,paid,error,othercodestringrequiredThe regime's own status code, e.g. 200 (Déposée) or 213 (Rejetée) in France.
1 to 20 characters
atstringrequiredWhen the regime's platform reported this status.
Format:
date-time
errorobject | nullrequiredWhy the document was rejected or failed; null otherwise.
Show nested fields (6)Hide nested fields (6)
codestringrequiredStable 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_errormessagestringrequiredTallio's own explanation, safe to show to a developer; the provider's words are in provider_message.
provider_codestring | nullrequiredThe provider's own error code, or null when the error did not come from a provider.
provider_messagestring | nullrequiredThe 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.
retryablebooleanrequiredTrue when the same request may succeed if sent again later.
provider_rawanyThe 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.
classificationobjectrequiredHow the document was classified for myDATA.
Show nested fields (2)Hide nested fields (2)
sourcestringrequireddefault when any line took Tallio's default, else override when any line took the merchant's override, else line.
One of:
line,override,defaultwarningsstring[]requiredWhat to check before issuing, e.g. that defaults were applied.
external_referencestring | nullrequiredYour own reference for the document, or null.
Default:
nullmetadataobjectrequiredUp 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}stringA value, up to 500 characters.
1 to 40 characters
original_documentstring | nullrequiredFor a credit note made from a Tallio document: that document (doc_…). Null otherwise.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$replacesstring | nullrequiredThe rejected or failed document this one was issued to replace, or null.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$correctsstring | nullrequiredThe issued document this one corrects, or null.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$replaced_bystring | nullrequiredThe document created to replace this rejected or failed one, the live one if there were several; null otherwise.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$corrected_bystring | nullrequiredThe document made to correct this one (POST /documents/{id}/correct), the latest if there were several; null otherwise.
Default:
nullShow patternHide pattern
^doc_[0-9A-Za-z]{22}$credit_notesstring[]requiredCredit 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_creditedobjectrequiredWhat 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)
netintegerrequiredNet amount credited, in cents.
From 0 to 9007199254740991
grossintegerrequiredGross amount credited, in cents.
From 0 to 9007199254740991
timelineobject[]requiredThe 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)
idstringrequiredId of the event (evt_…).
Show patternHide pattern
^evt_[0-9A-Za-z]{22}$typestringrequiredWhat 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.unarchivedcreatedstringrequiredWhen the event happened.
Format:
date-time
issued_atstring | nullrequiredWhen the document was issued (the tax system accepted it); kept if it is cancelled afterwards, null for a document never issued.
Format:
date-timecreatedstringrequiredWhen Tallio accepted the document.
Format:
date-timeupdatedstringrequiredWhen the document last changed.
Format:
date-time
createdstringrequiredWhen 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-idstringThe 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-limitintegerRequests allowed in the current window for the bucket this request counted against.
With 200, 404, 429 · At least 1
ratelimit-remainingintegerRequests left in the current window; 0 means the next one is refused until the window resets.
With 200, 404, 429 · At least 0
ratelimit-resetintegerSeconds until the current window resets.
With 200, 404, 429 · At least 0
www-authenticatestringThe bearer challenge: send a vendor secret key as
Authorization: Bearer <key>.With 401 · Always
Bearer realm="tallio"retry-afterintegerSeconds to wait before retrying a request refused with 429
rate_limited.With 429 · At least 1
| Code | Status | Retryable | Meaning |
|---|---|---|---|
unauthorized | 401 | No | Authentication is required. |
vendor_suspended | 403 | No | This vendor's access to Tallio is suspended. Its owner can contact Tallio to restore it. |
not_found | 404 | No | The requested resource was not found. |
rate_limited | 429 | Yes | A rate limit was reached. Retry later. |
internal_error | 500 | No | An unexpected server error occurred. |