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
| Type | Description | Use Case |
|---|---|---|
| tax_authority | Government tax authorities | ZATCA, LHDNM, IRAS compliance |
| peppol | PEPPOL network delivery | Cross-border e-invoicing |
Field Definitions Reference
Complete field definitions aligned with the GETS field mapping reference.
Core Fields
Document Header Fields
| Field Name | GETS Path | Data Type | Required |
|---|---|---|---|
| Document Type | header.documentType | enum | Required |
| Document ID | header.documentNumber | string | Required |
| Document Currency | header.currency | string | Required |
| Exchange Rate | header.exchangeRate.rate | number | Conditional |
| VAT Currency | header.taxCurrency | string | Required |
| Issue Date | header.issueDate | date | Required |
| Issue Time | header.issueTime | time | Required |
| Supply Start Date | header.invoicePeriod.startDate | date | Conditional |
| Supply End Date | header.invoicePeriod.endDate | date | Optional |
| Due Date | header.dueDate | date | Optional |
| Reference Invoice Number | header.referenceId | string | Conditional |
| Note Issuance Reason | header.noteIssuanceReason | string | Conditional |
Party Fields
Seller (Supplier) Details
| Field Name | GETS Path | Data Type | Required |
|---|---|---|---|
| Seller ID | parties.seller.partyId | string | Optional |
| Seller Name | parties.seller.name | string | Required |
| VAT Number - Type | parties.seller.taxIds[].type | string | Required |
| VAT Number - Value | parties.seller.taxIds[].value | string | Required |
| Group VAT Number - Type | parties.seller.taxIds[].type | string | Conditional |
| Group VAT Number - Value | parties.seller.taxIds[].value | string | Conditional |
| Additional Seller ID Number | parties.seller.registrationNumbers[].value | string | Conditional |
| Additional Seller ID Type | parties.seller.registrationNumbers[].type | string | Optional |
Seller Address
| Field Name | GETS Path | Data Type | Required |
|---|---|---|---|
| Address Line 1 | parties.seller.address.addressLine1 | string | Required |
| Address Line 2 | parties.seller.address.addressLine2 | string | Required |
| Building Number | parties.seller.address.additionalAddressData.buildingNumber | string | Required |
| Additional Number | parties.seller.address.additionalAddressData.additionalBuildingNumber | string | Optional |
| District/Neighbourhood | parties.seller.address.additionalAddressData.district | string | Required |
| City | parties.seller.address.city | string | Required |
| State | parties.seller.address.stateOrProvince | string | Required |
| Zip Code | parties.seller.address.postalCode | string | Required |
| Country | parties.seller.address.country | string | Required |
Buyer (Customer) Details
| Field Name | GETS Path | Data Type | Required |
|---|---|---|---|
| Buyer ID | parties.buyer.partyId | string | Optional |
| Buyer Name | parties.buyer.name | string | Conditional |
| VAT Number - Type | parties.buyer.taxIds[].type | string | Conditional |
| VAT Number - Value | parties.buyer.taxIds[].value | string | Conditional |
| Group VAT Number - Type | parties.buyer.taxIds[].type | string | Conditional |
| Group VAT Number - Value | parties.buyer.taxIds[].value | string | Conditional |
| Additional Buyer ID Number | parties.buyer.registrationNumbers[].value | string | Conditional |
| Additional Buyer ID Type | parties.buyer.registrationNumbers[].type | string | Conditional |
Buyer Address
| Field Name | GETS Path | Data Type | Required |
|---|---|---|---|
| Address Line 1 | parties.buyer.address.addressLine1 | string | Conditional |
| Address Line 2 | parties.buyer.address.addressLine2 | string | Conditional |
| Building Number | parties.buyer.address.additionalAddressData.buildingNumber | string | Optional |
| Additional Number | parties.buyer.address.additionalAddressData.additionalBuildingNumber | string | Optional |
| District/Neighbourhood | parties.buyer.address.additionalAddressData.district | string | Optional |
| City | parties.buyer.address.city | string | Conditional |
| State | parties.buyer.address.stateOrProvince | string | Optional |
| Zip Code | parties.buyer.address.postalCode | string | Conditional |
| Country | parties.buyer.address.country | string | Conditional |
Line Item Fields
Line Item Details
| Field Name | GETS Path | Data Type | Required |
|---|---|---|---|
| Line Item ID | lineItems[].id | string | Required |
| Line Item Type | lineItems[].lineType | string | Optional |
| Item Description | lineItems[].description | string | Required |
| Unit Price | lineItems[].price.amount | number | Required |
| Discount per Unit | lineItems[].discountsOrCharges[].amount | number | Required |
| Net Unit Price | lineItems[].netPrice | number | Required |
| Line Item Qty | lineItems[].quantity | number | Required |
| Units of Measurement | lineItems[].unitCode | string | Optional |
| Charges | lineItems[].discountsOrCharges | number | Required |
| Line Item Discount | lineItems[].lineLevelDiscount | number | Required |
| Line Item Taxable Amount | lineItems[].lineTaxableValue | number | Required |
| VAT Category Code | lineItems[].taxCategory | string | Required |
| VAT Exemption Reason Code | lineItems[].taxExemptionReasonCode | string | Required |
| VAT Exemption Reason Text | lineItems[].taxExemptionReason | string | Required |
| VAT Rate On Line Item | lineItems[].taxRate | number | Required |
| Line Item VAT Amount | lineItems[].taxAmount | number | Required |
| Line Item Sub Total | lineItems[].lineTotal | number | Required |
Tax & Totals
Summary Totals
| Field Name | GETS Path | Data Type | Required |
|---|---|---|---|
| Summation of Line Taxable Values | totals.totalLineTaxableAmount | number | Required |
| Discount at document level | totals.totalAllowances | number | Required |
| Total Taxable Amount Excluding VAT | totals.totalAmountExcludingTax | number | Required |
| VAT Total | totals.totalTaxAmount | number | Required |
| Invoice Total Amount | totals.totalAmountIncludingTax | number | Required |
| Pre-Paid Amount | totals.prepaidAmount | number | Required |
| Amount Due for Payment | totals.amountDue | number | Required |
| Rounding Amount | totals.roundingAmount | number | Optional |
Payment Information
| Field Name | GETS Path | Data Type | Required |
|---|---|---|---|
| Payment Means | payment.paymentMeans[].paymentMeansCode | string | Optional |
| Payment Terms | payment.paymentTerms[].note | string | Conditional |
| Payee Account Number | payment.paymentMeans[].creditTransferInfo.payeeFinancialAccountId | string | Conditional |
Business Configuration
| Field Name | GETS Path | Data Type | Required |
|---|---|---|---|
| Self Billed | meta.config.isSelfBilled | boolean | Required |
| Third Party | meta.config.isThirdParty | boolean | Required |
| Export | meta.config.isExport | boolean | Required |
| Summary | meta.config.isSummary | boolean | Required |
| Nominal Supply | meta.config.isNominal | boolean | Required |
| Prepayment | meta.config.isPrepayment | boolean | Required |
| Adjusted | meta.config.isAdjusted | boolean | Required |
Billing Frequency
| Field Name | GETS Path | Data Type | Required |
|---|---|---|---|
| Billing Frequency | header.invoicePeriod.frequency | string | Optional |
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
- Always include required fields for successful processing
- Use consistent naming across your integration
- Validate data types before submission
- Include optional fields when available for better compliance
For country-specific requirements and extensions, see Country Extensions.