> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.staple.ai/e-invoice/reference/schema-objects/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.staple.ai/_mcp/server.
# Schema Objects
This page documents every object in the Staple Global E-Invoice schema. Each table shows fields, types, requiredness, descriptions, and country-specific notes. Required values marked **Optional\*** are conditionally required by some countries — check the country notes column.
## Conventions
These conventions apply across the entire schema unless a specific field overrides them.
* **Date fields** - All fields of type `string (date)` use the format `YYYY-MM-DD`.
* **Time fields** - All fields of type `string (time)` use the format `HH:MM:SS` in UTC. Milliseconds are not supported.
* **Amount fields** - All fields of type `string (decimal)` are represented with 2 decimal places, e.g. `"1500.00"`.
* **Percent fields** - All percent fields use `string (decimal)`, e.g. `"7.0"` for 7%.
* **Country codes** - Use ISO 3166-1 alpha-2 codes.
* **Currency codes** - Use ISO 4217 codes.
Quick links: [Invoice](#invoice) · [Address](#address) · [Advance](#advance) · [Attachment](#attachment) · [Card](#card) · [Charge](#charge) · [CreditTransfer](#credittransfer) · [DeliveryDetails](#deliverydetails) · [DirectDebit](#directdebit) · [Discount](#discount) · [DocumentRef](#documentref) · [DueDate](#duedate) · [ExchangeRate](#exchangerate) · [Identity](#identity) · [Inbox](#inbox) · [Item](#item) · [Line](#line) · [LineCharge](#linecharge) · [LineDiscount](#linediscount) · [Name](#name) · [Note](#note) · [Online](#online) · [Ordering](#ordering) · [Party](#party) · [PayInstructions](#payinstructions) · [PaymentDetails](#paymentdetails) · [PayTerms](#payterms) · [Period](#period) · [Person](#person) · [Registration](#registration) · [Stamp](#stamp) · [Tax](#tax) · [TaxCombo](#taxcombo) · [TaxIdentity](#taxidentity) · [Totals](#totals)
## Invoice
**Root object** — top-level invoice document.
| Field | Type | Required | Description | Country Notes |
| --------------------- | ------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `Country` | `string` | Required | Alpha-2 country code identifying the tax regime. | — |
| `ComplianceStandards` | `string[]` | Optional | Addon keys that activate country-specific validation rules. e.g. `["eu-en16931-v2017","de-xrechnung-v3"]` | 🇩🇪 Required for DE. 🇮🇹 Required for IT. 🇫🇷 Required for FR. 🇲🇽 Required for MX. 🇵🇱 Required for PL. |
| `TypeFlags` | `string[]` | Optional | Scenario tags: `simplified`, `reverse-charge`, `self-billed`, `partial`, `prepayment` | 🇪🇺 Use `reverse-charge` for EU cross-border B2B transactions. |
| `UUID` | `string (uuid)` | Optional | Universally unique identifier for the invoice. | — |
| `Type` | `string` | Optional | Invoice type. Defaults to `standard`. Allowed values: `standard`, `credit-note`, `debit-note`, `corrective`, `proforma`. | — |
| `DocGroup` | `string` | Optional | Invoice series / group identifier. Groups invoices by project, date range, or type. Prepended to `DocNumber` with a dash when output format has no series field. | — |
| `DocNumber` | `string` | Required | Sequential invoice number. Max 50 characters. e.g. `"INV-0042"` | — |
| `IssueDate` | `string (date)` | Required | Invoice issue date in `YYYY-MM-DD` format. | — |
| `IssueTime` | `string (time)` | Optional | Invoice issue time in `HH:MM:SS` format. | 🇲🇽 🇲🇾 Required for MX and MY. |
| `OpDate` | `string (date)` | Optional | Date when the invoiced operation became effective. | — |
| `ValueDate` | `string (date)` | Optional | Date taxes become accountable. Defaults to `IssueDate`. | — |
| `Currency` | `string` | Required | ISO 4217 currency code. e.g. `"EUR"`, `"MYR"`, `"MXN"` | — |
| `ExchangeRates` | [`ExchangeRate[]`](#exchangerate) | Optional | Exchange rates for converting foreign currency amounts. | 🇲🇾 Required when invoice currency is not MYR. |
| `Preceding` | [`DocumentRef[]`](#documentref) | Optional | References to prior invoices this document replaces or extends. | Required when `Type` is `credit-note`, `corrective`, or `debit-note`. |
| `Tax` | [`Tax`](#tax) | Optional | Invoice-level tax configuration. See [Tax](#tax) object for details. | — |
| `Supplier` | [`Party`](#party) | Required | The entity issuing the invoice and responsible for tax obligations. | — |
| `Customer` | [`Party`](#party) | Optional | The entity receiving the goods or services. May be omitted for simplified invoices. | 🇲🇾 🇩🇪 🇮🇹 Required for MY B2B, DE, IT. |
| `Lines` | [`Line[]`](#line) | Optional | Invoice line items. Recommended for all invoices. | — |
| `Discounts` | [`Discount[]`](#discount) | Optional | Invoice-level discounts applied to the whole document. | — |
| `Charges` | [`Charge[]`](#charge) | Optional | Invoice-level surcharges applied to the whole document. | — |
| `Ordering` | [`Ordering`](#ordering) | Optional | Ordering details including purchase order references and buyer/seller parties. | 🇩🇪 Buyer reference in `Ordering.Code` required for DE XRechnung. |
| `Payment` | [`PaymentDetails`](#paymentdetails) | Optional | Payment terms, instructions, and advance payments. | — |
| `Delivery` | [`DeliveryDetails`](#deliverydetails) | Optional | Delivery address, date, and receiver details. | 🇲🇾 Used for shipping recipient details in MY. |
| `Notes` | [`Note[]`](#note) | Optional | Free-text annotations, legal details, or correction reasons. | 🇪🇸 VeriFactu requires a `general` key note. |
| `Complements` | `string[]` | Optional | Structured country-specific complement values. | 🇲🇽 Used for CFDI payment complements in MX. |
| `Attachments` | [`Attachment[]`](#attachment) | Optional | Supporting documents. Not for alternative PDF versions. | — |
| `Meta` | `string` | Optional | Semi-structured data that does not fit the main body. | — |
| `Totals` | [`Totals`](#totals) | Calculated | Summary of all invoice totals including taxes. Computed server-side — do not submit. | — |
### Type values
| Value | Description |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `standard` | A regular commercial invoice document between a supplier and customer. |
| `credit-note` | Reflects a refund, either partial or complete, of the preceding document. A credit note effectively extends the previous document. |
| `debit-note` | An additional set of charges to be added to the preceding document. |
| `corrective` | Corrected invoice that completely replaces the preceding document. |
| `proforma` | For a client's validation before sending a final invoice. |
## Party
Used for `Supplier`, `Customer`, and embedded party references in `Ordering` and `Delivery`.
| Field | Type | Required | Description | Country Notes |
| -------------- | ------------------------------- | ---------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `Name` | `string` | Optional\* | Legal name of the organization or individual. | 🇲🇾 Required, max 300 chars. |
| `Alias` | `string` | Optional | Alternate short name. | — |
| `TaxID` | [`TaxIdentity`](#taxidentity) | Optional\* | Tax registration identity. Determines the invoice tax regime when `Invoice.Country` is omitted. | 🇲🇾 🇩🇪 🇲🇽 🇮🇹 Required for most countries. |
| `Identities` | [`Identity[]`](#identity) | Optional | Additional registration codes: BRN, SST, NRIC, MSIC, Peppol ID, GLN, etc. | 🇲🇾 Required: BRN or NRIC, SST number, MSIC code. |
| `People` | [`Person[]`](#person) | Optional | Physical contact persons representing the party. | — |
| `Inboxes` | [`Inbox[]`](#inbox) | Optional | Electronic document delivery inboxes. e.g. Peppol participant ID. | 🇩🇪 Peppol inbox required for DE Peppol delivery. |
| `Addresses` | [`Address[]`](#address) | Optional\* | Postal addresses. | 🇲🇾 🇩🇪 🇮🇹 Required for MY, DE, IT. |
| `Emails` | `object[]` | Optional | Email addresses. Each object has a single `Addr` string field. | — |
| `Telephones` | `object[]` | Optional | Phone numbers. Each object has a single `Num` string field. | 🇲🇾 Optional but recommended for MY. |
| `Registration` | [`Registration`](#registration) | Optional | Company registration details such as capital, office, and book entries. | 🇮🇹 Required for IT (company registration). |
| `Ext` | `string` | Optional | Regime-specific extension codes for the party. | — |
| `Meta` | `string` | Optional | Additional semi-structured data. | 🇲🇾 Use for MSIC business activity description: key `msic-description`. |
## TaxIdentity
Tax registration details for a party.
| Field | Type | Required | Description | Country Notes |
| --------- | -------- | ---------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| `Country` | `string` | Required | Alpha-2 country code where the tax ID was issued. | — |
| `Code` | `string` | Optional\* | The tax identification number. Format varies by country: VAT number, TIN, RFC, GST ID, etc. | 🇲🇾 TIN (max 14 chars). 🇲🇽 RFC format. 🇩🇪 USt-IdNr format. |
| `Scheme` | `string` | Optional | Override the default tax scheme. e.g. `"VAT"`, `"GST"` | — |
## Address
Postal or fiscal address.
| Field | Type | Required | Description | Country Notes |
| ------------- | -------- | ---------- | -------------------------------------- | --------------------- |
| `Num` | `string` | Optional | House or building number. | — |
| `Street` | `string` | Optional\* | First line of the street address. | — |
| `StreetExtra` | `string` | Optional | Additional street address line. | — |
| `Locality` | `string` | Optional\* | City, town, or district name. | — |
| `Region` | `string` | Optional | Province, county, or state name. | — |
| `State` | `string` | Optional | State or province code where required. | 🇲🇽 Required for MX. |
| `Code` | `string` | Optional\* | Post or ZIP code. | — |
| `Country` | `string` | Optional\* | ISO alpha-2 country code. | — |
| `PoBox` | `string` | Optional | Post office box number. | — |
## Identity
Additional registration or classification code for a party or item.
| Field | Type | Required | Description | Country Notes |
| --------- | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
| `Code` | `string` | Required | The actual identity value. e.g. `"202001234567"` | — |
| `Key` | `string` | Optional | Classification key. Common values: `BRN`, `NRIC`, `PASSPORT`, `SST`, `MSIC`, `TTX`, `TIN`. Mutually exclusive with `Type`. | 🇲🇾 Use `BRN`, `SST`, `MSIC` keys for MY. |
| `Type` | `string` | Optional | Context-specific type code. Mutually exclusive with `Key`. | — |
| `Label` | `string` | Optional | Human-readable label. e.g. `"GLN"`, `"DUNS"` | — |
| `Scope` | `string` | Optional | Context: `tax` or `legal`. | — |
| `Country` | `string` | Optional | Country that issued this identity (alpha-2). | — |
## Inbox
Electronic document delivery inbox, e.g. Peppol participant ID.
| Field | Type | Required | Description | Country Notes |
| -------- | -------- | -------- | ----------------------------------------------------------------------------- | ------------- |
| `Scheme` | `string` | Optional | Scheme ID (ISO 6523 or CEF code). e.g. `"0088"` for GLN, `"0192"` for Peppol. | — |
| `Code` | `string` | Optional | Inbox identifier code. Mutually exclusive with `URL` and `Email`. | — |
| `URL` | `string` | Optional | Inbox URL. Mutually exclusive with `Code` and `Email`. | — |
| `Email` | `string` | Optional | Inbox email address. Mutually exclusive with `Code` and `URL`. | — |
| `Key` | `string` | Optional | Type of inbox for disambiguation between multiple inboxes. | — |
## Person
A physical contact person representing a party.
| Field | Type | Required | Description | Country Notes |
| ------------ | --------------- | -------- | ---------------------------------------- | ------------- |
| `Name` | [`Name`](#name) | Required | Structured name of the person. | — |
| `Label` | `string` | Optional | Role label. e.g. `"Attn"`, `"Contact"` | — |
| `Role` | `string` | Optional | Job title or role description. | — |
| `Emails` | `object[]` | Optional | Email addresses belonging to the person. | — |
| `Telephones` | `object[]` | Optional | Phone numbers belonging to the person. | — |
## Name
Structured personal name.
| Field | Type | Required | Description | Country Notes |
| ---------- | -------- | -------- | --------------------------------------------------------- | ------------- |
| `Given` | `string` | Optional | First or given name. | — |
| `Surname` | `string` | Optional | Family name. | — |
| `Surname2` | `string` | Optional | Second family name, common in Spanish-speaking countries. | — |
| `Prefix` | `string` | Optional | Name prefix. e.g. `"Mr."`, `"Dr."` | — |
| `Alias` | `string` | Optional | Preferred name or nickname. | — |
## Registration
Company registration details required by some countries.
| Field | Type | Required | Description | Country Notes |
| ---------- | ------------------ | -------- | ----------------------------------- | --------------------- |
| `Capital` | `string (decimal)` | Optional | Share capital amount. | 🇮🇹 Required for IT. |
| `Currency` | `string` | Optional | Currency of the capital (ISO 4217). | — |
| `Office` | `string` | Optional | Registration office name. | — |
| `Entry` | `string` | Optional | Registry entry number. | — |
## Line
A single row in the invoice.
| Field | Type | Required | Description | Country Notes |
| ----------- | --------------------------------- | ---------- | ------------------------------------------------- | ------------------------------------------------ |
| `Quantity` | `string (decimal)` | Required | Number of units. e.g. `"10.00"` | — |
| `Item` | [`Item`](#item) | Required | Product or service details. | — |
| `Taxes` | [`TaxCombo[]`](#taxcombo) | Optional\* | Tax categories applicable to this line. | Required for all countries with tax obligations. |
| `Discounts` | [`LineDiscount[]`](#linediscount) | Optional | Discounts applied to this line. | — |
| `Charges` | [`LineCharge[]`](#linecharge) | Optional | Charges applied to this line. | — |
| `Period` | [`Period`](#period) | Optional | Service delivery period for this line. | — |
| `Notes` | [`Note[]`](#note) | Optional | Line-specific annotations. | — |
| `Ext` | `string` | Optional | Regime-specific extension codes for the line. | — |
| `Total` | `string (decimal)` | Calculated | Line total after discounts. Computed server-side. | — |
## Item
Product or service being sold.
| Field | Type | Required | Description | Country Notes |
| ------------- | ------------------------- | ---------- | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| `Name` | `string` | Required | Brief product or service name. | 🇲🇾 Max 300 chars. |
| `Description` | `string` | Optional | Long description of the product or service. | — |
| `Price` | `string (decimal)` | Required | Unit price. Zero or positive. e.g. `"250.00"` | — |
| `Currency` | `string` | Optional | Item currency if different from invoice currency. | — |
| `Unit` | `string` | Optional | Unit of measure. e.g. `"piece"`, `"hour"`, `"kg"`, `"KGM"` | 🇲🇾 Uses UN/ECE Rec 20 codes. |
| `Key` | `string` | Optional | Item classification: `goods` or `services`. | — |
| `Ref` | `string` | Optional | Supplier's internal product reference code. | — |
| `Identities` | [`Identity[]`](#identity) | Optional\* | Product codes: HS tariff code, classification code, SKU, UNSPSC, etc. | 🇲🇾 Classification code (`CLASS` key) required. Tariff code (`PTC` key) for goods. |
| `Origin` | `string` | Optional | Country of origin (alpha-2). e.g. `"GB"` | 🇲🇾 Optional for MY goods. |
| `Ext` | `string` | Optional\* | Regime-specific extension codes for the item. | 🇲🇽 Required: `mx-cfdi-prod-serv`. 🇮🇹 Required: `it-sdi-nature`. 🇧🇷 Required: `br-nfse-service-code`. |
## TaxCombo
Tax category and rate applicable to a line item.
| Field | Type | Required | Description | Country Notes |
| --------- | ------------------ | ---------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Cat` | `string` | Required | Tax category code. e.g. `"VAT"`, `"GST"`, `"SST"`, `"IGST"` | — |
| `Rate` | `string` | Optional | Named rate. e.g. `"standard"`, `"reduced"`, `"zero"`, `"exempt"` | — |
| `Percent` | `string (decimal)` | Optional | Override percentage. e.g. `"7.0"`. Calculated from `Rate` if omitted. | — |
| `Ext` | `string` | Optional\* | Regime-specific tax extension codes. | 🇲🇽 Required: `mx-cfdi-tax-type`. 🇮🇹 Required: `it-sdi-nature`. 🇧🇷 Required: `br-nfe-fiscal-operation`. 🇪🇸 Required: `es-verifactu-regime`. |
## LineDiscount
Discount applied to a single line item.
| Field | Type | Required | Description | Country Notes |
| --------- | ------------------ | -------- | ----------------------------------------------------------------- | ------------- |
| `Amount` | `string (decimal)` | Required | Fixed discount amount. Calculated from `Percent` if provided. | — |
| `Percent` | `string (decimal)` | Optional | Percentage to apply. e.g. `"10.0"` | — |
| `Reason` | `string` | Optional | Description of why the discount was applied. | — |
| `Key` | `string` | Optional | Discount type key. e.g. `standard`, `special-agreement`, `sample` | — |
## LineCharge
Surcharge applied to a single line item.
| Field | Type | Required | Description | Country Notes |
| --------- | ------------------ | -------- | -------------------------------------------------------------------- | ------------- |
| `Amount` | `string (decimal)` | Required | Fixed charge amount. Calculated from `Percent` if provided. | — |
| `Percent` | `string (decimal)` | Optional | Percentage to apply. e.g. `"5.0"` | — |
| `Reason` | `string` | Optional | Description of why the charge was applied. | — |
| `Key` | `string` | Optional | Charge type key. e.g. `delivery`, `packing`, `handling`, `insurance` | — |
## Discount
Invoice-level discount applied to the whole document.
| Field | Type | Required | Description | Country Notes |
| --------- | ------------------------- | -------- | ------------------------------------------------------------- | ---------------------------------------- |
| `Amount` | `string (decimal)` | Required | Fixed discount amount. Calculated from `Percent` if provided. | — |
| `Percent` | `string (decimal)` | Optional | Percentage of invoice sum to deduct. e.g. `"10.0"` | — |
| `Reason` | `string` | Optional | Description of the discount. | 🇲🇾 Reason description required for MY. |
| `Taxes` | [`TaxCombo[]`](#taxcombo) | Optional | Taxes applicable to the discount. | — |
## Charge
Invoice-level surcharge applied to the whole document.
| Field | Type | Required | Description | Country Notes |
| --------- | ------------------------- | -------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| `Amount` | `string (decimal)` | Required | Fixed charge amount. Calculated from `Percent` if provided. | — |
| `Percent` | `string (decimal)` | Optional | Percentage of invoice sum to add. e.g. `"5.0"` | — |
| `Reason` | `string` | Optional | Description of the charge. | 🇲🇾 Reason description required for MY. |
| `Key` | `string` | Optional | Charge type: `stamp-duty`, `customs`, `delivery`, `packing`, `handling`, `insurance`, `storage`, `admin` | — |
| `Taxes` | [`TaxCombo[]`](#taxcombo) | Optional | Taxes applicable to the charge. | — |
## Ordering
Purchase order references and related document links.
| Field | Type | Required | Description | Country Notes |
| ----------- | ------------------------------- | -------- | ------------------------------------------------------------------------------ | ------------------------------------------------------- |
| `Code` | `string` | Optional | Buyer's purchase order number for internal routing. | 🇩🇪 Required for DE XRechnung (buyer reference BT-10). |
| `Period` | [`Period`](#period) | Optional | Billing period the document covers. | — |
| `Buyer` | [`Party`](#party) | Optional | Party responsible for payment if different from Customer. | — |
| `Seller` | [`Party`](#party) | Optional | Tax-liable seller if different from Supplier. Used for marketplace scenarios. | — |
| `Issuer` | [`Party`](#party) | Optional | Third party responsible for issuing the document (e.g. fiscal representative). | — |
| `Purchases` | [`DocumentRef[]`](#documentref) | Optional | Buyer's purchase order document references. | — |
| `Contracts` | [`DocumentRef[]`](#documentref) | Optional | Contract document references. | — |
| `Projects` | [`DocumentRef[]`](#documentref) | Optional | Project document references. | — |
## PaymentDetails
Payment terms, instructions, and pre-payments.
| Field | Type | Required | Description | Country Notes |
| -------------- | ------------------------------------- | -------- | ----------------------------------------------------- | ---------------------------------- |
| `Payee` | [`Party`](#party) | Optional | Party to receive payment, if different from Supplier. | — |
| `Terms` | [`PayTerms`](#payterms) | Optional | Payment terms and due dates. | — |
| `Advances` | [`Advance[]`](#advance) | Optional | Pre-payments to deduct from the amount due. | 🇲🇾 Use for MY prepayment fields. |
| `Instructions` | [`PayInstructions`](#payinstructions) | Optional | How and where to send payment. | — |
## PayTerms
Payment conditions and due dates.
| Field | Type | Required | Description | Country Notes |
| ---------- | ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| `Key` | `string` | Optional | Type of terms: `end-of-month`, `due-date`, `deferred`, `instant`, `elective`, `pending`, `advanced`, `delivery` | — |
| `DueDates` | [`DueDate[]`](#duedate) | Optional | Specific payment due dates with amounts. | — |
| `Notes` | `string` | Optional | Free-text payment conditions. Max 256 characters. e.g. `"Payment is Cash"` | 🇲🇾 Used for MY payment terms text. |
## DueDate
A specific payment date with an associated amount.
| Field | Type | Required | Description | Country Notes |
| --------- | ------------------ | -------- | ------------------------------------------------------------------------------------------------ | ------------- |
| `Date` | `string (date)` | Required | When the payment is due. | — |
| `Amount` | `string (decimal)` | Required | Amount due by this date. | — |
| `Percent` | `string (decimal)` | Optional | Percentage of total due by this date. e.g. `"50.0"`. Use at most one percent entry per document. | — |
| `Notes` | `string` | Optional | Additional notes for this due date. Max 256 characters. | — |
## PayInstructions
How payment should be made.
| Field | Type | Required | Description | Country Notes |
| ---------------- | ------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
| `Key` | `string` | Required | Payment method: `any`, `card`, `credit-transfer`, `credit-transfer+sepa`, `debit-transfer`, `cash`, `cheque`, `bank-draft`, `direct-debit`, `direct-debit+sepa`, `online`, `promissory-note`, `netting`, `other` | 🇲🇾 Maps to MY payment mode code. |
| `Ref` | `string` | Optional | Remittance reference linking payment to invoice. | — |
| `Detail` | `string` | Optional | Free-text description of the payment method. | — |
| `CreditTransfer` | [`CreditTransfer[]`](#credittransfer) | Optional | Bank transfer details. | 🇲🇾 Supplier bank account number stored here. |
| `Card` | [`Card`](#card) | Optional | Card payment reference details. | — |
| `DirectDebit` | [`DirectDebit`](#directdebit) | Optional | Direct debit mandate details. | — |
| `Online` | [`Online[]`](#online) | Optional | Online payment links. | — |
| `Notes` | `string` | Optional | Additional payment instructions. Max 256 characters. | — |
## CreditTransfer
Bank transfer payment details.
| Field | Type | Required | Description | Country Notes |
| -------- | -------- | -------- | ------------------------------------------ | -------------------------------------- |
| `IBAN` | `string` | Optional | International Bank Account Number. | — |
| `BIC` | `string` | Optional | Bank Identifier Code (SWIFT). | — |
| `Number` | `string` | Optional | Account number when IBAN is not available. | 🇲🇾 MY bank account number goes here. |
| `Name` | `string` | Optional | Bank name. | — |
## Card
Payment card reference.
| Field | Type | Required | Description | Country Notes |
| -------- | -------- | -------- | ------------------------------- | ------------- |
| `Last4` | `string` | Optional | Last 4 digits of the card PAN. | — |
| `First6` | `string` | Optional | First 6 digits of the card PAN. | — |
| `Holder` | `string` | Optional | Card holder name. | — |
## DirectDebit
Direct debit mandate details.
| Field | Type | Required | Description | Country Notes |
| ---------- | -------- | -------- | ------------------------------------ | ------------- |
| `Ref` | `string` | Optional | Mandate reference assigned by payee. | — |
| `Creditor` | `string` | Optional | Bank-assigned creditor ID. | — |
| `Account` | `string` | Optional | Account to be debited. | — |
## Online
Online payment link.
| Field | Type | Required | Description | Country Notes |
| ------- | -------------- | -------- | --------------------------------------------------- | ------------- |
| `URL` | `string (uri)` | Required | Payment URL. | — |
| `Key` | `string` | Optional | Identifier for this payment method. e.g. `"paypal"` | — |
| `Label` | `string` | Optional | Display name for the payment provider. | — |
## Advance
A pre-payment made before the invoice was issued.
| Field | Type | Required | Description | Country Notes |
| ------------- | ------------------ | -------- | -------------------------------------------------------------------------------------------- | -------------------------------------------- |
| `Description` | `string` | Required | Details about the advance payment. Max 256 characters. | — |
| `Amount` | `string (decimal)` | Required | Amount paid in advance. | 🇲🇾 Maps to MY PrePayment Amount. |
| `Date` | `string (date)` | Optional | Date the advance was made. | 🇲🇾 Maps to MY PrePayment Date. |
| `Ref` | `string` | Optional | Reference ID for the advance payment. | 🇲🇾 Maps to MY PrePayment Reference Number. |
| `Key` | `string` | Optional | Payment method used for the advance. Same values as [PayInstructions.Key](#payinstructions). | — |
| `Grant` | `boolean` | Optional | Set `true` if the advance came from a public grant or subsidy. | — |
| `Currency` | `string` | Optional | Currency of the advance if different from the invoice currency. | — |
## DeliveryDetails
Goods delivery destination and recipient.
| Field | Type | Required | Description | Country Notes |
| ------------ | ------------------------- | -------- | ---------------------------------------------------------- | ------------------------------------------------------------- |
| `Receiver` | [`Party`](#party) | Optional | Party receiving the goods. Not responsible for taxes. | 🇲🇾 Maps to MY Shipping Recipient (Name, TIN, BRN, Address). |
| `Date` | `string (date)` | Optional | Expected delivery date. | — |
| `Period` | [`Period`](#period) | Optional | Delivery window if a specific date is not available. | — |
| `Identities` | [`Identity[]`](#identity) | Optional | Codes to identify the delivery. e.g. customs form numbers. | 🇲🇾 Use for MY Customs Form No.1/No.2 reference numbers. |
## DocumentRef
Reference to an existing document — used in `Preceding` and `Ordering`.
| Field | Type | Required | Description | Country Notes |
| ----------- | ------------------- | -------- | ------------------------------------------------------------------ | --------------------------------------- |
| `Code` | `string` | Required | The document number or identifier being referenced. | — |
| `IssueDate` | `string (date)` | Optional | Issue date of the referenced document. | — |
| `Series` | `string` | Optional | Series of the referenced document. | — |
| `Reason` | `string` | Optional | Why this document is being referenced. | — |
| `Period` | [`Period`](#period) | Optional | Tax period the referenced document applied to. | — |
| `Stamps` | [`Stamp[]`](#stamp) | Optional | Official seals of approval from tax authorities or intermediaries. | 🇲🇽 Used for CFDI cancellation stamps. |
| `Ext` | `string` | Optional | Regime-specific correction method codes. | — |
## ExchangeRate
Currency conversion rate.
| Field | Type | Required | Description | Country Notes |
| -------- | ------------------- | -------- | ------------------------------------------- | --------------------------------- |
| `From` | `string` | Required | Source currency code (ISO 4217). | — |
| `To` | `string` | Required | Target currency code (ISO 4217). | 🇲🇾 Target must be `MYR` for MY. |
| `Amount` | `string (decimal)` | Required | How much 1 unit of `From` is worth in `To`. | — |
| `At` | `string (datetime)` | Optional | Effective date and time of the rate. | — |
## Note
Free-text annotation or legal detail.
| Field | Type | Required | Description | Country Notes |
| ------ | -------- | -------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| `Text` | `string` | Required | The note content. Max 256 characters. | — |
| `Key` | `string` | Optional | Subject classification: `general`, `legal`, `payment`, `goods`, `customs`, `reason`, `tax`, `regulatory`, `other` | 🇪🇸 VeriFactu requires `Key: "general"` note with invoice description. |
| `Code` | `string` | Optional | Additional code to identify the note. | — |
## Attachment
Supporting document attached to the invoice.
| Field | Type | Required | Description | Country Notes |
| ------------- | -------------- | -------- | -------------------------------------------------------- | ------------- |
| `URL` | `string (uri)` | Required | Where to find the attachment. | — |
| `Name` | `string` | Optional | Filename of the attachment. | — |
| `Description` | `string` | Optional | Why this attachment is included. | — |
| `MIME` | `string` | Optional | MIME type. e.g. `"application/pdf"`, `"application/xml"` | — |
| `Code` | `string` | Optional | Code identifying the payload type. | — |
## Stamp
Official seal from a tax authority or intermediary.
| Field | Type | Required | Description | Country Notes |
| ----- | -------- | -------- | ------------------------------------------------------------------------- | ------------- |
| `Prv` | `string` | Required | Provider key identifying the stamping agency. e.g. `"sat-mx"`, `"sdi-it"` | — |
| `Val` | `string` | Required | The stamp value issued by the agency. | — |
## Period
A date range used for billing, delivery, or tax periods. Both `Start` and `End` dates are inclusive.
| Field | Type | Required | Description | Country Notes |
| ------- | --------------- | -------- | ------------------------------------- | ------------- |
| `Start` | `string (date)` | Required | Start date of the period (inclusive). | — |
| `End` | `string (date)` | Required | End date of the period (inclusive). | — |
## Tax
Tax defines a summary of the taxes that may be applied to an invoice.
| Field | Type | Required | Description |
| --------------- | ----------------- | -------- | -------------------------------------------------------------------------------------------------- |
| `PricesInclude` | `string` | Optional | Category of the tax already included in the line item prices. Useful for price-inclusive invoices. |
| `Rounding` | `string` | Optional | Rounding model used to perform tax calculations. Allowed values: `precise`, `currency`. |
| `Point` | `string` | Optional | Event that triggers tax liability. Allowed values: `issue`, `delivery`, `payment`. |
| `Ext` | `string` | Optional | Additional extensions applied to the invoice as a whole. |
| `Notes` | [`Note[]`](#note) | Optional | Tax-related notes, typically used for exemption reasons or category-specific explanations. |
| `Meta` | `string` | Optional | Additional processing data that should not be relied upon by recipients. |
### Tax rounding values
| Value | Description |
| ---------- | ------------------------------------------------------------------------------------------------------------------- |
| `precise` | Default model. Maintains maximum precision during calculations. |
| `currency` | Rounds to currency precision before summation. Easier to reconcile visually but can introduce rounding differences. |
### Tax point values
| Value | Description |
| ---------- | ----------------------------------------------- |
| `issue` | Tax point is the invoice issue date. |
| `delivery` | Tax point is the actual delivery date. |
| `payment` | Tax point is the date on which payment is made. |
## Totals
Totals contains the summaries of all calculations for the invoice. This object is calculated server-side — do not submit it as part of the request payload.
| Field | Type | Description |
| -------------- | ------------------ | ------------------------------------------------------------ |
| `Sum` | `string (decimal)` | Total of all line item amounts. |
| `Discount` | `string (decimal)` | Total of all discounts applied at the document level. |
| `Charge` | `string (decimal)` | Total of all charges applied at the document level. |
| `TaxIncluded` | `string (decimal)` | Total tax amount already included in prices. |
| `Total` | `string (decimal)` | Net total amount after discounts and charges, excluding tax. |
| `Tax` | `string (decimal)` | Total indirect tax amount applied to the invoice. |
| `TotalWithTax` | `string (decimal)` | Final total amount after applying indirect taxes. |
| `RetainedTax` | `string (decimal)` | Total tax amount retained or withheld by the customer. |
| `Rounding` | `string (decimal)` | Adjustment amount applied to satisfy rounding rules. |
| `Payable` | `string (decimal)` | Final amount to be paid after retained taxes and rounding. |
| `Advance` | `string (decimal)` | Total amount already paid in advance by the customer. |
| `Due` | `string (decimal)` | Remaining amount that needs to be paid. |
## Alpha-2 Country Codes
The `Country` field and other country code fields in the schema use ISO 3166-1 alpha-2 codes. The table below lists the supported tax regimes.
View supported alpha-2 country codes
| Code | Country |
| ---- | ------------------------ |
| `AE` | United Arab Emirates |
| `AR` | Argentina |
| `AT` | Austria |
| `BE` | Belgium |
| `BR` | Brazil |
| `CA` | Canada |
| `CH` | Switzerland |
| `CO` | Colombia |
| `DE` | Germany |
| `DK` | Denmark |
| `EL` | Greece |
| `ES` | Spain |
| `FR` | France |
| `GB` | United Kingdom |
| `IE` | Ireland |
| `IN` | India |
| `IT` | Italy |
| `MX` | Mexico |
| `NL` | The Netherlands |
| `PL` | Poland |
| `PT` | Portugal |
| `SE` | Sweden |
| `SG` | Singapore |
| `US` | United States of America |
## Currency Codes
The `Currency` field and other currency code fields in the schema use ISO 4217 alpha-3 codes.
View supported currency codes
| Code | Currency | Country |
| ----- | --------------------- | ------------------------------------------------------------------------------------------- |
| `AED` | UAE Dirham | United Arab Emirates |
| `ARS` | Argentine Peso | Argentina |
| `AUD` | Australian Dollar | Australia |
| `BRL` | Brazilian Real | Brazil |
| `CAD` | Canadian Dollar | Canada |
| `CHF` | Swiss Franc | Switzerland |
| `CNY` | Chinese Yuan Renminbi | China |
| `COP` | Colombian Peso | Colombia |
| `DKK` | Danish Krone | Denmark |
| `EUR` | Euro | Austria, Belgium, France, Germany, Greece, Ireland, Italy, The Netherlands, Portugal, Spain |
| `GBP` | Pound Sterling | United Kingdom |
| `HKD` | Hong Kong Dollar | Hong Kong |
| `INR` | Indian Rupee | India |
| `JPY` | Japanese Yen | Japan |
| `KRW` | South Korean Won | South Korea |
| `MXN` | Mexican Peso | Mexico |
| `MYR` | Malaysian Ringgit | Malaysia |
| `NZD` | New Zealand Dollar | New Zealand |
| `PLN` | Polish Zloty | Poland |
| `SEK` | Swedish Krona | Sweden |
| `SGD` | Singapore Dollar | Singapore |
| `THB` | Thai Baht | Thailand |
| `USD` | US Dollar | United States of America |
| `VND` | Vietnamese Dong | Vietnam |
> Full Global E-Invoice object reference