GETS Country Extensions
Country-specific extensions and customizations in the Global E-Invoice Transformation Standard (GETS) to meet local compliance requirements and regulatory standards.
Saudi Arabia (KSA)
ZATCA (Zakat, Tax and Customs Authority) e-invoicing compliance
Key Extensions
- QR Code generation for all invoices
- Digital signature requirements
- PIH (Previous Invoice Hash) calculation
- Simplified invoice thresholds (1,000 SAR)
Document Types
- Standard - Full e-invoice with QR code
- Simplified - Simplified invoice for small amounts
- Credit Note - Invoice corrections
- Debit Note - Additional charges
Malaysia (MY)
LHDN (Lembaga Hasil Dalam Negeri) e-invoicing compliance
Key Extensions
- Approval code requirements
- Software ID validation
- Specific tax rate handling
- Multi-language support
Document Types
- Invoice - Standard business invoice
- Credit Note - Invoice corrections
- Debit Note - Additional charges
- Receipt - Payment confirmations
Belgium (BE)
EU e-invoicing compliance with Peppol network support
Key Extensions
- EU standard compliance (EN 16931-1:2017)
- Peppol BIS Billing 3.0 support
- VAT number format (BE + 10 digits)
- CBE (Crossroads Bank for Enterprises) registration numbers
- Multi-language support (French/Dutch)
- IBAN and BIC codes for payments
Document Types
- Tax Invoice - Standard B2B tax invoice
- Credit Note - Invoice corrections
- Debit Note - Additional charges
- Simplified Invoice - Simplified tax invoice
Extension Specifications
Saudi Arabia
ZATCA-Specific Fields
| Field | Description | Required | Example |
|---|---|---|---|
zatca.qr_code | Base64 encoded QR code | Required | Base64 encoded string |
zatca.invoice_hash | SHA256 hash of invoice | Required | 64-character hex string |
zatca.previous_invoice_hash | PIH for invoice sequencing | Required | 64-character hex string |
zatca.digital_signature | XML digital signature | Required | XML signature string |
B2C QR Code Structure
ZATCA QR Code TLV Structure:
- Tag 1: Seller Name (UTF-8)
- Tag 2: VAT Registration Number
- Tag 3: Invoice Date and Time (ISO 8601)
- Tag 4: Invoice Total (with VAT)
- Tag 5: VAT Amount
Example:
01|ACME Corporation|02|123456789012345|03|2024-01-15T10:30:00Z|04|2300.00|05|300.00Malaysia
MyInvois-Specific Fields
| Field | Description | Required | Example |
|---|---|---|---|
myinvois.tin | Tax Identification Number | Required | C12345678912 |
myinvois.sst_number | Sales and Service Tax Number | Optional | SST-12345 |
myinvois.business_code | Business Activity Code | Optional | 01111 |
myinvois.lhdn_id | LHDN Participant ID | Required | MY-12345 |
SST Compliance
Malaysian SST Structure:
- SST Rate: 6% for goods, 6% for services
- Tax Classification:
- Standard Rate (TX-01): 6%
- Zero Rate (TX-02): 0%
- Exempt (TX-03): N/A
Belgium
Belgium-Specific Fields
| Field | Description | Required | Example |
|---|---|---|---|
be_vat.vat_number | Belgium VAT number (BE + 10 digits) | Required | BE0123456789 |
be_vat.cbe_number | CBE registration number | Required | 0123.456.789 |
be_vat.peppol_id | Peppol network identifier | Optional | 9925:BE0123456789 |
be_vat.iban | International Bank Account Number | Required for payments | BE68 5390 0754 7034 |
be_vat.bic | Bank Identifier Code | Required for payments | KREDBEBB |
be_digital.signature_method | Digital signature method | Optional | RSA-SHA256 |
EU Compliance Standards
Belgium EU Invoice Structure:
- Standard: EN 16931-1:2017
- Peppol: Peppol BIS Billing 3.0
- VAT Rates:
- Standard Rate: 21%
- Reduced Rate: 6% or 12%
- Zero Rate: 0%
- Multi-language: French and Dutch support required
Peppol Network Integration
Belgium Peppol Requirements:
- Peppol ID format:
9925:BEXXXXXXXXXX - Document type:
urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 - Process ID:
urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
Implementation Guide
How to configure country extensions in your GETS integration.
Destination Configuration
{
"destinations": [
{
"type": "tax_authority",
"details": {
"country": "SA",
"authority": "ZATCA",
"environment": "production",
"extensions": {
"zatca": {
"certificate_path": "/path/to/cert.pem",
"private_key_path": "/path/to/key.pem",
"integration_type": "api",
"solution_name": "MyERP v1.0"
}
}
}
}
]
}Automatic Extension Loading
Based on Country
Extensions automatically loaded based on destination country code
Example:
{
"country": "SA" // -> ZATCA extensions
}Based on Authority
Specific tax authority extensions can be explicitly specified
Example:
{
"authority": "ZATCA" // -> Saudi extensions
}Usage Examples
Saudi Arabia Implementation
// Configure ZATCA extension
Map<String, Object> zatcaConfig = Map.of(
"country", "SA",
"authority", "ZATCA",
"extensions", Map.of(
"zatca", Map.of(
"certificate_path", "/path/to/cert.pem",
"private_key_path", "/path/to/key.pem",
"integration_type", "api",
"solution_name", "MyERP v1.0"
)
)
);
// Create invoice with ZATCA extensions
Map<String, Object> invoice = Map.of(
"invoiceNumber", "SA-INV-001",
"issueDate", "2024-01-15",
"seller", Map.of(
"name", "ACME Corporation",
"taxNumber", "123456789012345"
),
"buyer", Map.of(
"name", "Customer Company",
"taxNumber", "987654321098765"
),
"zatca", Map.of(
"qr_code", "base64_encoded_qr_code",
"invoice_hash", "sha256_hash_string",
"previous_invoice_hash", "previous_hash_string",
"digital_signature", "xml_signature_string"
)
);Malaysia Implementation
// Configure MyInvois extension
Map<String, Object> myinvoisConfig = Map.of(
"country", "MY",
"authority", "LHDN",
"extensions", Map.of(
"myinvois", Map.of(
"tin", "C12345678912",
"lhdn_id", "MY-12345",
"business_code", "01111"
)
)
);
// Create invoice with MyInvois extensions
Map<String, Object> invoice = Map.of(
"invoiceNumber", "MY-INV-001",
"issueDate", "2024-01-15",
"seller", Map.of(
"name", "Malaysian Company",
"taxNumber", "C12345678912"
),
"buyer", Map.of(
"name", "Customer Company",
"taxNumber", "C98765432109"
),
"myinvois", Map.of(
"tin", "C12345678912",
"sst_number", "SST-12345",
"business_code", "01111",
"lhdn_id", "MY-12345"
)
);Belgium Implementation
// Configure Belgium extension
Map<String, Object> belgiumConfig = Map.of(
"country", "BE",
"authority", "SPF_FINANCES",
"extensions", Map.of(
"be_vat", Map.of(
"vat_number", "BE0123456789",
"cbe_number", "0123.456.789",
"peppol_id", "9925:BE0123456789",
"iban", "BE68 5390 0754 7034",
"bic", "KREDBEBB"
),
"be_digital", Map.of(
"signature_method", "RSA-SHA256",
"certificate_info", "CN=Company,O=Org,C=BE"
)
)
);
// Create invoice with Belgium extensions
Map<String, Object> invoice = Map.of(
"invoiceNumber", "BE-INV-001",
"issueDate", "2024-01-15",
"seller", Map.of(
"name", "Société Belge SPRL",
"taxNumber", "BE0123456789",
"registrationNumber", "0123.456.789"
),
"buyer", Map.of(
"name", "Entreprise Belge SA",
"taxNumber", "BE0987654321"
),
"be_vat", Map.of(
"vat_number", "BE0123456789",
"cbe_number", "0123.456.789",
"peppol_id", "9925:BE0123456789",
"intra_eu_indicator", false,
"export_indicator", false
),
"payment", Map.of(
"iban", "BE68 5390 0754 7034",
"bic", "KREDBEBB"
)
);Next Steps
- Schema Overview - Understanding the core GETS schema
- Field Mapping - Detailed field mapping guide
- Document Types - Supported document types
- Examples - Real-world implementation examples