# 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](https://docs.complyance.io/api-reference/gets/document-types/) for the country. Select one `base`, optional `variant` and applicable `modifiers` in the request’s `documentType`. [Base and modifiers](https://docs.complyance.io/api-reference/gets/base-and-modifiers/#choices-by-country) lists each country’s choices and the combinations it rejects.
2. Open your country’s fields page from [country extensions](https://docs.complyance.io/api-reference/gets/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](https://docs.complyance.io/countries/ae/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](https://docs.complyance.io/api-reference/gets/fields/) 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 group | What it describes |
| - | - |
| `header` | The 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`). |
| `parties` | The `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[]`. |
| `totals` | The 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](https://docs.complyance.io/api-reference/gets/reason-codes/), and the tax category and rate that apply. |
| `payment` | How 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). |
| `extensions` | Fields 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](https://docs.complyance.io/api-reference/gets/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. |
| `meta` | Information 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**:

```json title="UAE document type and GETS header (excerpt)"
{
  "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](https://docs.complyance.io/get-started/quickstart/). A successful [Unify submission](https://docs.complyance.io/api-reference/unify/submit-and-retrieve/) returns `200` with a `documentId`; use it to [follow the document](https://docs.complyance.io/api-reference/unify/submit-and-retrieve/#follow-the-document). A `422` response lists validation problems, including the GETS field path where available. See [Unify errors](https://docs.complyance.io/api-reference/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`](https://docs.complyance.io/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`](https://docs.complyance.io/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 9 October 2026

Source: https://docs.complyance.io/api-reference/gets/
