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.
Schema Architecture
The GETS schema is built on a modular architecture with three core components:
Unified API
Single integration point for all e-invoicing operations
Sources
Identifies the origin system of your invoices
Destinations
Specifies where processed invoices should be delivered
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 based on the GETS schema registry with data types, requirements, and descriptions.
Seller (Supplier) Information
| Field Path | Name | Type | Required | Description |
|---|---|---|---|---|
parties.seller.name | Seller Name | string | Required | Legal name of the selling entity |
parties.seller.address.country | Seller Country | string | Required | ISO country code (e.g., "SA", "MY") |
parties.seller.address.city | Seller City | string | Required | City where seller is located |
parties.seller.taxIds[0].type | Seller Tax ID Type | string | Required | Tax identifier type (VAT, TIN, GST) |
parties.seller.taxIds[0].value | Seller Tax ID Value | string | Required | Actual tax identification number |
parties.seller.address.addressLine1 | Seller Address Line 1 | string | ⚪ Optional | Street address details |
parties.seller.address.postalCode | Seller Postal Code | string | ⚪ Optional | Postal/ZIP code |
Buyer (Customer) Information
| Field Path | Name | Type | Required | Description |
|---|---|---|---|---|
parties.buyer.name | Buyer Name | string | Required | Legal name of the buying entity |
parties.buyer.address.country | Buyer Country | string | ⚪ Optional | ISO country code |
parties.buyer.taxIds[0].type | Buyer Tax ID Type | string | ⚪ Optional | Tax identifier type |
parties.buyer.taxIds[0].value | Buyer Tax ID Value | string | ⚪ Optional | Tax identification number |
Line Items
| Field Path | Name | Type | Required | Description |
|---|---|---|---|---|
lineItems[0].id | Line Item ID | string | Required | Unique identifier for the line item |
lineItems[0].name | Line Item Name | string | Required | Product/service description |
lineItems[0].quantity | Line Item Quantity | number | Required | Quantity of items |
lineItems[0].unitCode | Line Item Unit Code | string | Required | Unit of measure (PCE, KGM, etc.) |
lineItems[0].netPrice | Line Item Net Price | number | Required | Price per unit (excluding tax) |
lineItems[0].lineTotal | Line Item Total | number | Required | Total amount for this line |
lineItems[0].taxAmount | Line Item Tax Amount | number | ⚪ Optional | Tax amount for this line item |
lineItems[0].taxCategory | Tax Category | string | ⚪ Optional | Tax category classification |
lineItems[0].taxRate | Tax Rate | number | ⚪ Optional | Tax rate percentage |
Tax and Totals
| Field Path | Name | Type | Required | Description |
|---|---|---|---|---|
totals.totalAmountExcludingTax | Total Amount Excluding Tax | number | Required | Sum of all line items before tax |
totals.totalAmountIncludingTax | Total Amount Including Tax | number | Required | Final total including all taxes |
totals.amountDue | Amount Due | number | Required | Amount owed by buyer |
totals.totalTaxAmount | Total Tax Amount | number | Required | Sum of all tax amounts |
totals.totalAllowances | Total Allowances | number | ⚪ Optional | Total discounts/allowances |
totals.totalCharges | Total Charges | number | ⚪ Optional | Additional charges |
totals.prepaidAmount | Prepaid Amount | number | ⚪ Optional | Amount already paid |
Payment Information
| Field Path | Name | Type | Required | Description |
|---|---|---|---|---|
payment.paymentMeans[0].paymentMeansCode | Payment Means Code | string | ⚪ Optional | Payment method identifier |
payment.paymentMeans[0].paymentId | Payment ID | string | ⚪ Optional | Payment reference number |
Destination Configuration
| Field Path | Name | Type | Required | Description |
|---|---|---|---|---|
destinations[0].type | Destination Type | string | ⚪ Optional | Type of destination for submission |
destinations[0].endpoint | Destination Endpoint | string | ⚪ Optional | API endpoint URL for delivery |
destinations[0].details.country | Destination Country | string | ⚪ Optional | Target country for compliance |
Implementation Notes
Field Requirements
- Required: Must be present for valid invoice processing
- ⚪ Optional: Can be omitted but recommended for complete data
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.