GETS schema

GETS is the standard invoice format used across countries. Use this overview to choose a document type and find the fields your country requires.

Your integration maps source invoice data to GETS, so you can invoice across countries without building a new integration from scratch for each one. Choose a country and documentType to find the fields required for that document.

Find the right fields

  1. Choose a document type for the country. Select one base, optional variant and applicable modifiers in the request’s documentType. Base and modifiers lists each country’s choices and the combinations it rejects.
  2. Open your country’s fields page from country extensions. Its Table view shows every field the country uses, with Requirement, Type, Description and, for fields with fixed allowed values, Enums. Under the table, Required fields by document type lists the mandatory and conditional paths for each document type, modifier and variant.
  3. Open List with sample request and select your document type, modifiers and variant under Scope. This view shows payload paths and the requirements for your selection beside a sample request.
  4. For coded fields, use the country’s code lists, such as the UAE code lists.

In Table, Requirement summarises all document types, modifiers and variants for the country: Mandatory fields are always required, Conditional fields are required when the condition in Description applies, and Optional fields are not required. Do not assume a field optional for one country is optional for another. The field reference shows the core fields every country starts from, before any country’s rules.

How GETS organises an invoice

Every field in a GETS payload belongs to one of these groups. A field’s path starts with its group, such as header.issueDate or lineItems[].quantity. Groups ending in [] are lists.

GETS field groupWhat it describes
headerThe document itself: documentType, documentNumber, issueDate and issueTime, currency and taxCurrency, the exchange rate, the invoicing period, the due date, and for a credit or debit note the invoice it refers to (referenceId).
partiesThe seller, the buyer, and where they apply the delivery party, the payee and the seller’s taxRepresentative: names, tax IDs, registration numbers, addresses and contacts.
lineItems[]The goods or services invoiced, one entry per line: name, quantity and unit, price, line amounts, tax category and rate, item codes and classifications, and any line-level discountsOrCharges[].
totalsThe document amounts: total without tax, total tax, total with tax, the amount due, and any document-level allowances, charges, prepaid amount and rounding.
taxTotals[]The tax breakdown: the total tax amount and, for each tax category and rate, the taxable amount and tax amount, with an exemption reason where the category is exempt. Some countries require it; in others it is calculated from the line items when you leave it out. Your country’s fields page says which.
allowancesAndCharges[]Discounts (isCharge: false) and charges (isCharge: true) on the whole document: amount, base amount and percentage, reason and reason code, and the tax category and rate that apply.
paymentHow and when the buyer pays: paymentMeans[] (the payment means code, with credit transfer, card or direct debit details) and paymentTerms[] (terms text, penalties and settlement discounts).
supportingDocuments[]Documents the invoice refers to, such as a purchase order, a contract or the invoice a note corrects: each one’s ID, type, description and issue date, and any attachments[] sent with it (file name, file type, content or URL).
extensionsFields for one country or standard, named with its prefix, such as ae_ for the UAE or peppol_ for Peppol. Lines can carry their own extensions too. See country extensions.
destinations[]Where the document is to be delivered: each destination’s type and its details, such as the authority and country, a Peppol participant ID, or e-mail recipients, subject and body. Optional.
metaInformation about the document rather than the invoice: its source (meta.source), operation, mode and version, and settings under meta.config. Optional.

The following excerpt illustrates a UAE invoice in GETS. It is not a complete submission:

UAE document type and GETS header (excerpt)json
{
  "country": "AE",
  "documentType": {
    "base": "tax_invoice",
    "modifiers": []
  },
  "payload": {
    "header": {
      "documentType": { "base": "tax_invoice" },
      "documentNumber": "INV-2026-000184",
      "issueDate": "2026-09-18",
      "currency": "AED"
    }
  }
}

For a complete example of GETS fields and a sandbox response, see Send your first invoice. A successful Unify submission returns 200 with a documentId; use it to follow the document. A 422 response lists validation problems, including the GETS field path where available. See Unify errors to correct them before resubmitting.

JSON Schema

The GETS payload is also published as JSON Schema (draft 2020-12), built from the same fields as the tables, so you can validate a payload or generate types before you send it:

  • /gets.schema.json: the core fields every country starts from, with links to each country’s schema.
  • /gets/<country>.schema.json for one country, for example /gets/ae.schema.json. It lists every field the country uses and the values coded fields accept. What it requires depends on header.documentType: one rule per document type, and per modifier or variant for the fields they make mandatory.

Conditional fields are described in the schema but not required, because their conditions depend on the content of the invoice. A payload that passes the schema can still fail a country’s validation; the 422 response names the rule.

Last updated