Complyance Logo

Schema Overview

The Global E-Invoice Transformation Standard (GETS) provides a unified schema for e-invoicing compliance across multiple countries. This comprehensive guide covers the core components, data structures, and field definitions.

Notice: These docs cover GETS Schema v1. For upcoming version details, see the Compatibility Matrix.

Schema Architecture

GETS follows a modular, integration-first architecture built around three core components:

Unified API Acts as the single entry point for validation, transformation, and submission workflows across supported countries.

Sources Captures the upstream system context (for example ERP, POS, billing platform) so payload origin and version can be tracked reliably.

Destinations Defines where transformed invoices are delivered, including tax authority endpoints and network channels such as Peppol.


Source Configuration

The source object identifies where invoices originate from your systems or integrations.

{
  "source": {
    "name": "SAP ERP",          // Human-readable name
    "version": "S/4HANA 2022"   // System version
  }
}

Key Points:

  • name: Descriptive identifier for your source system
  • version: Version information for tracking and compatibility

Destination Configuration

The destinations array specifies where processed invoices should be delivered after transformation.

{
  "destinations": [
    {
      "type": "tax_authority",
      "details": {
        "country": "SA",
        "authority": "ZATCA",
        "documentType": "tax_invoice"
      }
    }
  ]
}

Supported Destination Types

TypeDescriptionUse Case
tax_authorityGovernment tax authoritiesZATCA, LHDNM, IRAS compliance
peppolPEPPOL network deliveryCross-border e-invoicing

Field Definitions Reference

Complete field definitions aligned with the GETS field mapping reference.

Core Fields

Document Header Fields

Field NameGETS PathData TypeRequired
Document Typeheader.documentTypeenumRequired
Document IDheader.documentNumberstringRequired
Document Currencyheader.currencystringRequired
Exchange Rateheader.exchangeRate.ratenumberConditional
VAT Currencyheader.taxCurrencystringRequired
Issue Dateheader.issueDatedateRequired
Issue Timeheader.issueTimetimeRequired
Supply Start Dateheader.invoicePeriod.startDatedateConditional
Supply End Dateheader.invoicePeriod.endDatedateOptional
Due Dateheader.dueDatedateOptional
Reference Invoice Numberheader.referenceIdstringConditional
Note Issuance Reasonheader.noteIssuanceReasonstringConditional

Party Fields

Seller (Supplier) Details

Field NameGETS PathData TypeRequired
Seller IDparties.seller.partyIdstringOptional
Seller Nameparties.seller.namestringRequired
VAT Number - Typeparties.seller.taxIds[].typestringRequired
VAT Number - Valueparties.seller.taxIds[].valuestringRequired
Group VAT Number - Typeparties.seller.taxIds[].typestringConditional
Group VAT Number - Valueparties.seller.taxIds[].valuestringConditional
Additional Seller ID Numberparties.seller.registrationNumbers[].valuestringConditional
Additional Seller ID Typeparties.seller.registrationNumbers[].typestringOptional

Seller Address

Field NameGETS PathData TypeRequired
Address Line 1parties.seller.address.addressLine1stringRequired
Address Line 2parties.seller.address.addressLine2stringRequired
Building Numberparties.seller.address.additionalAddressData.buildingNumberstringRequired
Additional Numberparties.seller.address.additionalAddressData.additionalBuildingNumberstringOptional
District/Neighbourhoodparties.seller.address.additionalAddressData.districtstringRequired
Cityparties.seller.address.citystringRequired
Stateparties.seller.address.stateOrProvincestringRequired
Zip Codeparties.seller.address.postalCodestringRequired
Countryparties.seller.address.countrystringRequired

Buyer (Customer) Details

Field NameGETS PathData TypeRequired
Buyer IDparties.buyer.partyIdstringOptional
Buyer Nameparties.buyer.namestringConditional
VAT Number - Typeparties.buyer.taxIds[].typestringConditional
VAT Number - Valueparties.buyer.taxIds[].valuestringConditional
Group VAT Number - Typeparties.buyer.taxIds[].typestringConditional
Group VAT Number - Valueparties.buyer.taxIds[].valuestringConditional
Additional Buyer ID Numberparties.buyer.registrationNumbers[].valuestringConditional
Additional Buyer ID Typeparties.buyer.registrationNumbers[].typestringConditional

Buyer Address

Field NameGETS PathData TypeRequired
Address Line 1parties.buyer.address.addressLine1stringConditional
Address Line 2parties.buyer.address.addressLine2stringConditional
Building Numberparties.buyer.address.additionalAddressData.buildingNumberstringOptional
Additional Numberparties.buyer.address.additionalAddressData.additionalBuildingNumberstringOptional
District/Neighbourhoodparties.buyer.address.additionalAddressData.districtstringOptional
Cityparties.buyer.address.citystringConditional
Stateparties.buyer.address.stateOrProvincestringOptional
Zip Codeparties.buyer.address.postalCodestringConditional
Countryparties.buyer.address.countrystringConditional

Line Item Fields

Line Item Details

Field NameGETS PathData TypeRequired
Line Item IDlineItems[].idstringRequired
Line Item TypelineItems[].lineTypestringOptional
Item DescriptionlineItems[].descriptionstringRequired
Unit PricelineItems[].price.amountnumberRequired
Discount per UnitlineItems[].discountsOrCharges[].amountnumberRequired
Net Unit PricelineItems[].netPricenumberRequired
Line Item QtylineItems[].quantitynumberRequired
Units of MeasurementlineItems[].unitCodestringOptional
ChargeslineItems[].discountsOrChargesnumberRequired
Line Item DiscountlineItems[].lineLevelDiscountnumberRequired
Line Item Taxable AmountlineItems[].lineTaxableValuenumberRequired
VAT Category CodelineItems[].taxCategorystringRequired
VAT Exemption Reason CodelineItems[].taxExemptionReasonCodestringRequired
VAT Exemption Reason TextlineItems[].taxExemptionReasonstringRequired
VAT Rate On Line ItemlineItems[].taxRatenumberRequired
Line Item VAT AmountlineItems[].taxAmountnumberRequired
Line Item Sub TotallineItems[].lineTotalnumberRequired

Tax & Totals

Summary Totals

Field NameGETS PathData TypeRequired
Summation of Line Taxable Valuestotals.totalLineTaxableAmountnumberRequired
Discount at document leveltotals.totalAllowancesnumberRequired
Total Taxable Amount Excluding VATtotals.totalAmountExcludingTaxnumberRequired
VAT Totaltotals.totalTaxAmountnumberRequired
Invoice Total Amounttotals.totalAmountIncludingTaxnumberRequired
Pre-Paid Amounttotals.prepaidAmountnumberRequired
Amount Due for Paymenttotals.amountDuenumberRequired
Rounding Amounttotals.roundingAmountnumberOptional

Payment Information

Field NameGETS PathData TypeRequired
Payment Meanspayment.paymentMeans[].paymentMeansCodestringOptional
Payment Termspayment.paymentTerms[].notestringConditional
Payee Account Numberpayment.paymentMeans[].creditTransferInfo.payeeFinancialAccountIdstringConditional

Business Configuration

Field NameGETS PathData TypeRequired
Self Billedmeta.config.isSelfBilledbooleanRequired
Third Partymeta.config.isThirdPartybooleanRequired
Exportmeta.config.isExportbooleanRequired
Summarymeta.config.isSummarybooleanRequired
Nominal Supplymeta.config.isNominalbooleanRequired
Prepaymentmeta.config.isPrepaymentbooleanRequired
Adjustedmeta.config.isAdjustedbooleanRequired

Billing Frequency

Field NameGETS PathData TypeRequired
Billing Frequencyheader.invoicePeriod.frequencystringOptional

Implementation Notes

Field Requirements

  • Required: Must be present for valid invoice processing
  • Optional: Can be omitted but recommended for complete data
  • Conditional: Required only when specific document, country, or business conditions apply

Data Types

  • string: Text values, identifiers, codes
  • number: Numeric values, amounts, quantities
  • array: Collections of related items
  • object: Complex nested structures

Best Practices

  1. Always include required fields for successful processing
  2. Use consistent naming across your integration
  3. Validate data types before submission
  4. Include optional fields when available for better compliance

For country-specific requirements and extensions, see Country Extensions.