# Invoice comparator: what each country and format asks of an invoice

> What every country and e-invoicing format GOBL supports requires on an invoice, field by field, with the rule GOBL raised for each one.

Countries: 29
Formats: 25
Country/format pairs: 67
GOBL version: v0.505.0
Read from GOBL at: 2026-09-14T17:19:34.697Z

## How this is worked out

GOBL has no endpoint that lists a country's mandatory fields, because a
requirement only exists as an objection to a document. So every pair below is
sent the SAME minimal invoice and this document reports what each one objects
to.

The minimal invoice is a supplier with a name and a tax-ID country, a customer
the same, and one line of one unit priced at 100.00 carrying the standard rate
of the country's first charged tax category, or a nominal rate where that
category declares none (Brazil, India and the United States). It is
deliberately incomplete, so that every country gets to ask for what it wants,
which is what makes two pairs comparable.

Each pair also carries the smallest document GOBL will BUILD for it, reached by
filling every objection with an obvious placeholder and asking again;
54 of the 67
pairs get there, and the rest need country-specific data such as code lists or
numeric series.

Requirements are GOBL's. Rules landing on the same field are collapsed into
one requirement carrying every rule that asks for it, so counts are of fields
to prepare rather than of rules raised. The requirement NAMES are Invopop's;
the "What GOBL said" column is verbatim.

A pair that asks for nothing is not necessarily easy to invoice in. It means
GOBL would build the document; it says nothing about converting, signing,
filing or delivering it.

Rules that apply only to other situations, such as reverse charge, a credit
note or a cross-border supply, are not exercised by this document and so do
not appear.

## Ranked by how much each asks for

| Country | Format | Asks for | Standard rate | Currency |
|---|---|---|---|---|
| Brazil | Brazil NF-e 4.00 | 14 | ISS, no rate stated | BRL |
| Germany | German XRechnung 3.X | 10 | 19% VAT | EUR |
| France | France CTC Flow 2 (B2B Clearance) | 8 | 20% VAT | EUR |
| France | Chorus Pro | 7 | 20% VAT | EUR |
| Kingdom of Saudi Arabia | Saudi Arabia ZATCA | 7 | 15.0% VAT | SAR |
| Mexico | Mexican SAT CFDI v4.X | 7 | 16.0% VAT | MXN |
| Brazil | Brazil NFS-e 1.X | 6 | ISS, no rate stated | BRL |
| Belgium | EN 16931-1:2017 | 5 | 21.0% VAT | EUR |
| Denmark | Danish OIOUBL 2.1 | 4 | 25.0% VAT | DKK |
| Denmark | EN 16931-1:2017 | 4 | 25.0% VAT | DKK |
| France | EN 16931-1:2017 | 4 | 20% VAT | EUR |
| France | French Factur-X v1 | 4 | 20% VAT | EUR |
| Germany | EN 16931-1:2017 | 4 | 19% VAT | EUR |
| Germany | German ZUGFeRD 2.X | 4 | 19% VAT | EUR |
| Greece | Greece MyData v1.x | 4 | 24% VAT | EUR |
| Italy | Italy SDI FatturaPA v1.x | 4 | 22.0% VAT | EUR |
| Poland | Polish KSeF FA_VAT FA(3) | 4 | 23.0% VAT | PLN |
| Portugal | EN 16931-1:2017 | 4 | 23.0% VAT | EUR |
| Spain | EN 16931-1:2017 | 4 | 21.0% VAT | EUR |
| Sweden | EN 16931-1:2017 | 4 | 25.0% VAT | SEK |
| The Netherlands | EN 16931-1:2017 | 4 | 21.0% VAT | EUR |
| Argentina | Argentina ARCA V4 | 3 | 21.0% VAT | ARS |
| Austria | EN 16931-1:2017 | 3 | 20.0% VAT | EUR |
| Finland | EN 16931-1:2017 | 3 | 25.5% VAT | EUR |
| Finland | Finland Finvoice 3.0 | 3 | 25.5% VAT | EUR |
| Greece | EN 16931-1:2017 | 3 | 24% VAT | EUR |
| Ireland | EN 16931-1:2017 | 3 | 23.0% VAT | EUR |
| Italy | EN 16931-1:2017 | 3 | 22.0% VAT | EUR |
| Poland | EN 16931-1:2017 | 3 | 23.0% VAT | PLN |
| Spain | Spain TicketBAI | 3 | 21.0% VAT | EUR |
| Belgium | plain invoice | 2 | 21.0% VAT | EUR |
| France | France CTC Flow 10 (E-Reporting) | 2 | 20% VAT | EUR |
| Portugal | Portugal SAF-T | 2 | 23.0% VAT | EUR |
| Spain | Spain FacturaE | 2 | 21.0% VAT | EUR |
| Spain | Spain SII V1.x | 2 | 21.0% VAT | EUR |
| Spain | Spain VERI*FACTU V1 | 2 | 21.0% VAT | EUR |
| Denmark | plain invoice | 1 | 25.0% VAT | DKK |
| France | France CTC Flow 6 (Cycle de Vie) | 1 | 20% VAT | EUR |
| France | plain invoice | 1 | 20% VAT | EUR |
| Germany | plain invoice | 1 | 19% VAT | EUR |
| India | plain invoice | 1 | CGST, no rate stated | INR |
| Portugal | plain invoice | 1 | 23.0% VAT | EUR |
| Singapore | plain invoice | 1 | 9% GST | SGD |
| Spain | plain invoice | 1 | 21.0% VAT | EUR |
| Sweden | plain invoice | 1 | 25.0% VAT | SEK |
| The Netherlands | plain invoice | 1 | 21.0% VAT | EUR |
| Argentina | plain invoice | 0 | 21.0% VAT | ARS |
| Australia | plain invoice | 0 | 10.0% GST | AUD |
| Austria | plain invoice | 0 | 20.0% VAT | EUR |
| Brazil | plain invoice | 0 | ISS, no rate stated | BRL |
| Canada | plain invoice | 0 | 5% GST | CAD |
| Colombia | Colombia DIAN UBL 2.X | 0 | 19.0% VAT | COP |
| Colombia | plain invoice | 0 | 19.0% VAT | COP |
| Finland | plain invoice | 0 | 25.5% VAT | EUR |
| Greece | plain invoice | 0 | 24% VAT | EUR |
| Ireland | plain invoice | 0 | 23.0% VAT | EUR |
| Italy | Italy AdE ticket v1.x | 0 | 22.0% VAT | EUR |
| Italy | plain invoice | 0 | 22.0% VAT | EUR |
| Kingdom of Saudi Arabia | plain invoice | 0 | 15.0% VAT | SAR |
| Mexico | plain invoice | 0 | 16.0% VAT | MXN |
| New Zealand | plain invoice | 0 | 15.0% GST | NZD |
| Norway | plain invoice | 0 | 25.0% VAT | NOK |
| Poland | plain invoice | 0 | 23.0% VAT | PLN |
| Switzerland | plain invoice | 0 | 8.1% VAT | CHF |
| United Arab Emirates | plain invoice | 0 | 5% VAT | AED |
| United Kingdom | plain invoice | 0 | 20.0% VAT | GBP |
| United States of America | plain invoice | 0 | ST, no rate stated | USD |

## Every pair in full

### Argentina, Argentina ARCA V4

|  |  |
|---|---|
| Country | Argentina (AR) |
| Format | Argentina ARCA V4 (`ar-arca-v4`) |
| Builds on | — |
| Currency | ARS |
| Standard rate | 21.0% VAT |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=AR:ar-arca-v4 |

Asks for 3 things beyond the minimal invoice.

**The invoice**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Invoice series | — | `$.series` | Series is required; Series must be a valid number between 1 and 99998 |
| Order reference or billing period | — | `$.ordering`, `$.ordering.period` | Ordering is required for services; Ordering period is required for services |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | — | `$.payment` | Payment is required for services |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Increased Rate 27.0%, General Rate 21.0%, Reduced Rate 10.5% | charged |

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: Series must be a valid number between 1 and 99998; Ordering period is required for services. These need country-specific data a placeholder cannot fake.

### Argentina, plain invoice

|  |  |
|---|---|
| Country | Argentina (AR) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | ARS |
| Standard rate | 21.0% VAT |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=AR |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Increased Rate 27.0%, General Rate 21.0%, Reduced Rate 10.5% | charged |

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "AR",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "ARS",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "AR"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "AR"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "21.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "21.0%",
              "amount": "21.00"
            }
          ],
          "amount": "21.00"
        }
      ],
      "sum": "21.00"
    },
    "tax": "21.00",
    "total_with_tax": "121.00",
    "payable": "121.00"
  }
}
```

### Australia, plain invoice

|  |  |
|---|---|
| Country | Australia (AU) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | AUD |
| Standard rate | 10.0% GST |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=AU |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| GST | Standard Rate 10.0% | charged |

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "AU",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "AUD",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "AU"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "AU"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "GST",
          "key": "standard",
          "rate": "general",
          "percent": "10.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "GST",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "10.0%",
              "amount": "10.00"
            }
          ],
          "amount": "10.00"
        }
      ],
      "sum": "10.00"
    },
    "tax": "10.00",
    "total_with_tax": "110.00",
    "payable": "110.00"
  }
}
```

### Austria, EN 16931-1:2017

|  |  |
|---|---|
| Country | Austria (AT) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 20.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=AT:eu-en16931-v2017 |

Asks for 3 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 20.0%, Intermediate Rate 13.0%, Reduced Rate 10.0% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (3 fields added to the skeleton: `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "AT",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "AT"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "AT"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "AT"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "AT"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "20.0%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "120.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "20.0%",
              "amount": "20.00"
            }
          ],
          "amount": "20.00"
        }
      ],
      "sum": "20.00"
    },
    "tax": "20.00",
    "total_with_tax": "120.00",
    "payable": "120.00"
  }
}
```

### Austria, plain invoice

|  |  |
|---|---|
| Country | Austria (AT) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | EUR |
| Standard rate | 20.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=AT |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 20.0%, Intermediate Rate 13.0%, Reduced Rate 10.0% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "AT",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "AT"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "AT"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "20.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "20.0%",
              "amount": "20.00"
            }
          ],
          "amount": "20.00"
        }
      ],
      "sum": "20.00"
    },
    "tax": "20.00",
    "total_with_tax": "120.00",
    "payable": "120.00"
  }
}
```

### Belgium, EN 16931-1:2017

|  |  |
|---|---|
| Country | Belgium (BE) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 21.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=BE:eu-en16931-v2017 |

Asks for 5 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| National registration code | — | `$.supplier.identities` | Supplier identities must include BCE type |
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |
| Tax ID number | — | `$.supplier.tax_id.code` | Supplier tax ID code required for Belgian regime |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 21.0%, Intermediate Rate 12.0%, Reduced Rate 6.0% | charged |

**Identity schemes:** BCE/KBO Number

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (5 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.identities`, `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "BE",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "BE",
      "code": "0776091951"
    },
    "identities": [
      {
        "type": "CRN",
        "code": "1234567890"
      }
    ],
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "BE"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "BE"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "BE"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "21.0%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "121.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "21.0%",
              "amount": "21.00"
            }
          ],
          "amount": "21.00"
        }
      ],
      "sum": "21.00"
    },
    "tax": "21.00",
    "total_with_tax": "121.00",
    "payable": "121.00"
  }
}
```

### Belgium, plain invoice

|  |  |
|---|---|
| Country | Belgium (BE) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | EUR |
| Standard rate | 21.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=BE |

Asks for 2 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| National registration code | — | `$.supplier.identities` | Supplier identities must include BCE type |
| Tax ID number | — | `$.supplier.tax_id.code` | Supplier tax ID code required for Belgian regime |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 21.0%, Intermediate Rate 12.0%, Reduced Rate 6.0% | charged |

**Identity schemes:** BCE/KBO Number

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (2 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.identities`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "BE",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "BE",
      "code": "0776091951"
    },
    "identities": [
      {
        "type": "CRN",
        "code": "1234567890"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "BE"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "21.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "21.0%",
              "amount": "21.00"
            }
          ],
          "amount": "21.00"
        }
      ],
      "sum": "21.00"
    },
    "tax": "21.00",
    "total_with_tax": "121.00",
    "payable": "121.00"
  }
}
```

### Brazil, Brazil NF-e 4.00

|  |  |
|---|---|
| Country | Brazil (BR) |
| Format | Brazil NF-e 4.00 (`br-nfe-v4`) |
| Builds on | — |
| Currency | BRL |
| Standard rate | ISS, no rate stated |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=BR:br-nfe-v4 |

Asks for 14 things beyond the minimal invoice.

**The invoice**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Invoice requires a note with key 'reason' to describe the nature of the operation (natOp) | — | `$` | Invoice requires a note with key 'reason' to describe the nature of the operation (natOp) |
| Invoice series | — | `$.series` | Invoice series is required; Invoice series format is invalid; must be 0 or 1-999 |
| Tax control codes | — | `$.tax.ext` | Invoice tax requires 'br-nfe-model', 'br-nfe-presence', 'br-nfe-purpose' and 'br-nfe-operation-type' extensions |

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | — | `$.supplier.addresses`, `$.supplier.addresses.code`, `$.supplier.addresses.num`, `$.supplier.addresses.state` | Invoice supplier must have at least one address; Brazilian postal code must match the valid format; Invoice supplier address requires a number; Invoice supplier address requires a state |
| Registration control codes | — | `$.supplier.ext` | Invoice supplier requires 'br-ibge-municipality' extension when addresses are present |
| Tax ID number | — | `$.supplier.tax_id.code` | Invoice supplier tax ID code is required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | — | `$.customer.addresses`, `$.customer.addresses.code`, `$.customer.addresses.num`, `$.customer.addresses.state` | Invoice customer must have at least one address for NF-e invoices; Brazilian postal code must match the valid format; Invoice customer address requires a number; Invoice customer address requires a state |
| Registration control codes | — | `$.customer.ext` | Invoice customer requires 'br-ibge-municipality' extension when addresses are present |
| Tax ID number | — | `$.customer.tax_id.code` | Invoice customer tax ID code is required |

**Lines and items**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Line control codes | — | `$.lines.ext` | Invoice lines require 'br-nfe-cfop' extension |
| Line taxes must include the COFINS category | — | `$.lines` | Line taxes must include the COFINS category |
| Line taxes must include the ICMS category | — | `$.lines` | Line taxes must include the ICMS category |
| Line taxes must include the PIS category | — | `$.lines` | Line taxes must include the PIS category |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | — | `$.payment`, `$.payment.instructions` | Invoice payment is required when invoice is unpaid; Invoice payment instructions are required when invoice is unpaid |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| ISS | no rate stated | charged |
| ICMS | no rate stated | charged |
| IPI | no rate stated | charged |
| PIS | no rate stated | charged |
| PIS (Retained) (PISRet) | no rate stated | withheld |
| COFINS | no rate stated | charged |
| COFINS (Retained) (COFINSRet) | no rate stated | withheld |
| CSLL | no rate stated | withheld |
| INSS | no rate stated | withheld |
| IRRF | no rate stated | withheld |
| IBS | no rate stated | charged |
| CBS | no rate stated | charged |

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: Brazilian postal code must match the valid format; Invoice requires a note with key 'reason' to describe the nature of the operation (natOp); Invoice supplier address requires a number; Invoice supplier address requires a state; Invoice supplier requires 'br-ibge-municipality' extension when addresses are present; Invoice customer address requires a number; Invoice customer address requires a state; Invoice customer requires 'br-ibge-municipality' extension when addresses are present; Invoice series format is invalid; must be 0 or 1-999; Invoice tax requires 'br-nfe-model', 'br-nfe-presence', 'br-nfe-purpose' and 'br-nfe-operation-type' extensions; Invoice lines require 'br-nfe-cfop' extension; Line taxes must include the ICMS category; Line taxes must include the PIS category; Line taxes must include the COFINS category. These need country-specific data a placeholder cannot fake.

### Brazil, Brazil NFS-e 1.X

|  |  |
|---|---|
| Country | Brazil (BR) |
| Format | Brazil NFS-e 1.X (`br-nfse-v1`) |
| Builds on | — |
| Currency | BRL |
| Standard rate | ISS, no rate stated |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=BR:br-nfse-v1 |

Asks for 6 things beyond the minimal invoice.

**The invoice**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Invoice number in a set form | — | `$.code` | Code must be a positive integer |
| Invoice series | — | `$.series` | Series is required |

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | — | `$.supplier.addresses`, `$.supplier.addresses.code`, `$.supplier.addresses.num`, `$.supplier.addresses.state` | Supplier must have at least one address; Brazilian postal code must match the valid format; Supplier address requires a number; Supplier address requires a state |
| Registration control codes | — | `$.supplier.ext` | Supplier requires 'br-ibge-municipality', 'br-nfse-simples', and 'br-nfse-fiscal-incentive' extensions |
| Tax ID number | — | `$.supplier.tax_id.code` | Supplier tax ID code is required |

**Lines and items**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Item control codes | — | `$.lines.item.ext` | Item requires 'br-nfse-service' extension |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| ISS | no rate stated | charged |
| ICMS | no rate stated | charged |
| IPI | no rate stated | charged |
| PIS | no rate stated | charged |
| PIS (Retained) (PISRet) | no rate stated | withheld |
| COFINS | no rate stated | charged |
| COFINS (Retained) (COFINSRet) | no rate stated | withheld |
| CSLL | no rate stated | withheld |
| INSS | no rate stated | withheld |
| IRRF | no rate stated | withheld |
| IBS | no rate stated | charged |
| CBS | no rate stated | charged |

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: Brazilian postal code must match the valid format; Code must be a positive integer; Supplier address requires a number; Supplier address requires a state; Supplier requires 'br-ibge-municipality', 'br-nfse-simples', and 'br-nfse-fiscal-incentive' extensions; Item requires 'br-nfse-service' extension. These need country-specific data a placeholder cannot fake.

### Brazil, plain invoice

|  |  |
|---|---|
| Country | Brazil (BR) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | BRL |
| Standard rate | ISS, no rate stated |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=BR |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| ISS | no rate stated | charged |
| ICMS | no rate stated | charged |
| IPI | no rate stated | charged |
| PIS | no rate stated | charged |
| PIS (Retained) (PISRet) | no rate stated | withheld |
| COFINS | no rate stated | charged |
| COFINS (Retained) (COFINSRet) | no rate stated | withheld |
| CSLL | no rate stated | withheld |
| INSS | no rate stated | withheld |
| IRRF | no rate stated | withheld |
| IBS | no rate stated | charged |
| CBS | no rate stated | charged |

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "BR",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "BRL",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "BR"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "BR"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "ISS",
          "percent": "20%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "ISS",
          "informative": true,
          "rates": [
            {
              "base": "100.00",
              "percent": "20%",
              "amount": "20.00"
            }
          ],
          "amount": "20.00"
        }
      ],
      "sum": "0.00"
    },
    "tax": "0.00",
    "total_with_tax": "100.00",
    "payable": "100.00"
  }
}
```

### Canada, plain invoice

|  |  |
|---|---|
| Country | Canada (CA) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | CAD |
| Standard rate | 5% GST |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=CA |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| GST | Zero Rate 0.0%, General rate 5% | charged |
| HST | no rate stated | charged |
| PST | no rate stated | charged |

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "CA",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "CAD",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "CA"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "CA"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "GST",
          "rate": "general",
          "percent": "5%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "GST",
          "rates": [
            {
              "base": "100.00",
              "percent": "5%",
              "amount": "5.00"
            }
          ],
          "amount": "5.00"
        }
      ],
      "sum": "5.00"
    },
    "tax": "5.00",
    "total_with_tax": "105.00",
    "payable": "105.00"
  }
}
```

### Colombia, Colombia DIAN UBL 2.X

|  |  |
|---|---|
| Country | Colombia (CO) |
| Format | Colombia DIAN UBL 2.X (`co-dian-v2`) |
| Builds on | — |
| Currency | COP |
| Standard rate | 19.0% VAT |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=CO:co-dian-v2 |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 19.0%, Reduced Rate 5.0% | charged |
| IC | no rate stated | charged |
| ICA | no rate stated | charged |
| INC | no rate stated | charged |
| RVAT | no rate stated | withheld |
| RICA | no rate stated | withheld |
| RR | no rate stated | withheld |

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "CO",
  "$addons": [
    "co-dian-v2"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "COP",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "CO"
    },
    "ext": {
      "co-dian-fiscal-responsibility": "R-99-PN"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "CO"
    },
    "ext": {
      "co-dian-fiscal-responsibility": "R-99-PN"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "19.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "19.0%",
              "amount": "19.00"
            }
          ],
          "amount": "19.00"
        }
      ],
      "sum": "19.00"
    },
    "tax": "19.00",
    "total_with_tax": "119.00",
    "payable": "119.00"
  }
}
```

### Colombia, plain invoice

|  |  |
|---|---|
| Country | Colombia (CO) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | COP |
| Standard rate | 19.0% VAT |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=CO |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 19.0%, Reduced Rate 5.0% | charged |
| IC | no rate stated | charged |
| ICA | no rate stated | charged |
| INC | no rate stated | charged |
| RVAT | no rate stated | withheld |
| RICA | no rate stated | withheld |
| RR | no rate stated | withheld |

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "CO",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "COP",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "CO"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "CO"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "19.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "19.0%",
              "amount": "19.00"
            }
          ],
          "amount": "19.00"
        }
      ],
      "sum": "19.00"
    },
    "tax": "19.00",
    "total_with_tax": "119.00",
    "payable": "119.00"
  }
}
```

### Denmark, Danish OIOUBL 2.1

|  |  |
|---|---|
| Country | Denmark (DK) |
| Format | Danish OIOUBL 2.1 (`dk-oioubl-v2`) |
| Builds on | — |
| Currency | DKK |
| Standard rate | 25.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=DK:dk-oioubl-v2 |

Asks for 4 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| National registration code | — | `$.supplier.identities` | Invoice DK supplier without a tax ID code requires an identity with 'CVR' or 'CPR' type |
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Electronic address | — | `$.customer.endpoints` | Customer endpoint is required (F-INV044 / F-CRN040) |
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 25.0% | charged |

**Identity schemes:** CVR Number, CPR Number

**Smallest document that builds** (4 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.addresses`, `$.customer.addresses`, `$.customer.endpoints`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "DK",
  "$addons": [
    "eu-en16931-v2017",
    "dk-oioubl-v2"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "DKK",
  "tax": {
    "rounding": "currency",
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "DK",
      "code": "13585628"
    },
    "identities": [
      {
        "scope": "legal",
        "code": "13585628"
      }
    ],
    "endpoints": [
      {
        "uri": "DK:CVR:13585628"
      }
    ],
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "DK"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "DK"
    },
    "endpoints": [
      {
        "uri": "iso6523-actorid-upis::0184:13585628"
      }
    ],
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "DK"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "25.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "25.0%",
              "amount": "25.00"
            }
          ],
          "amount": "25.00"
        }
      ],
      "sum": "25.00"
    },
    "tax": "25.00",
    "total_with_tax": "125.00",
    "payable": "125.00"
  }
}
```

### Denmark, EN 16931-1:2017

|  |  |
|---|---|
| Country | Denmark (DK) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | DKK |
| Standard rate | 25.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=DK:eu-en16931-v2017 |

Asks for 4 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| National registration code | — | `$.supplier.identities` | Invoice DK supplier without a tax ID code requires an identity with 'CVR' or 'CPR' type |
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 25.0% | charged |

**Identity schemes:** CVR Number, CPR Number

**Smallest document that builds** (4 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "DK",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "DKK",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "DK",
      "code": "13585628"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "DK"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "DK"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "DK"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "25.0%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "125.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "25.0%",
              "amount": "25.00"
            }
          ],
          "amount": "25.00"
        }
      ],
      "sum": "25.00"
    },
    "tax": "25.00",
    "total_with_tax": "125.00",
    "payable": "125.00"
  }
}
```

### Denmark, plain invoice

|  |  |
|---|---|
| Country | Denmark (DK) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | DKK |
| Standard rate | 25.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=DK |

Asks for 1 thing beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| National registration code | — | `$.supplier.identities` | Invoice DK supplier without a tax ID code requires an identity with 'CVR' or 'CPR' type |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 25.0% | charged |

**Identity schemes:** CVR Number, CPR Number

**Smallest document that builds** (1 field added to the skeleton: `$.supplier.tax_id.code`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "DK",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "DKK",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "DK",
      "code": "13585628"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "DK"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "25.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "25.0%",
              "amount": "25.00"
            }
          ],
          "amount": "25.00"
        }
      ],
      "sum": "25.00"
    },
    "tax": "25.00",
    "total_with_tax": "125.00",
    "payable": "125.00"
  }
}
```

### Finland, Finland Finvoice 3.0

|  |  |
|---|---|
| Country | Finland (FI) |
| Format | Finland Finvoice 3.0 (`fi-finvoice-v3`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 25.5% VAT |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=FI:fi-finvoice-v3 |

Asks for 3 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment`, `$.payment.instructions.ref` | Payment details are required when amount is due; Payment details are required (Finvoice EpiDetails); Payment reference is required (Finvoice EpiReference) |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 25.5%, Reduced Rate 13.5%, Super-Reduced Rate 10.0% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (5 fields added to the skeleton: `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`, `$.payment.instructions`, `$.payment.instructions.ref`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "FI",
  "$addons": [
    "eu-en16931-v2017",
    "fi-finvoice-v3"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "FI"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "FI"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "FI"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "FI"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "25.5%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "125.50",
          "percent": "100%"
        }
      ]
    },
    "instructions": {
      "key": "credit-transfer",
      "ref": "RF18539007547034",
      "credit_transfer": [
        {
          "iban": "DE89370400440532013000"
        }
      ],
      "ext": {
        "untdid-payment-means": "30"
      }
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "25.5%",
              "amount": "25.50"
            }
          ],
          "amount": "25.50"
        }
      ],
      "sum": "25.50"
    },
    "tax": "25.50",
    "total_with_tax": "125.50",
    "payable": "125.50"
  }
}
```

### Finland, EN 16931-1:2017

|  |  |
|---|---|
| Country | Finland (FI) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 25.5% VAT |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=FI:eu-en16931-v2017 |

Asks for 3 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 25.5%, Reduced Rate 13.5%, Super-Reduced Rate 10.0% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (3 fields added to the skeleton: `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "FI",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "FI"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "FI"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "FI"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "FI"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "25.5%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "125.50",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "25.5%",
              "amount": "25.50"
            }
          ],
          "amount": "25.50"
        }
      ],
      "sum": "25.50"
    },
    "tax": "25.50",
    "total_with_tax": "125.50",
    "payable": "125.50"
  }
}
```

### Finland, plain invoice

|  |  |
|---|---|
| Country | Finland (FI) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | EUR |
| Standard rate | 25.5% VAT |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=FI |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 25.5%, Reduced Rate 13.5%, Super-Reduced Rate 10.0% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "FI",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "FI"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "FI"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "25.5%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "25.5%",
              "amount": "25.50"
            }
          ],
          "amount": "25.50"
        }
      ],
      "sum": "25.50"
    },
    "tax": "25.50",
    "total_with_tax": "125.50",
    "payable": "125.50"
  }
}
```

### France, Chorus Pro

|  |  |
|---|---|
| Country | France (FR) |
| Format | Chorus Pro (`fr-choruspro-v1`) |
| Builds on | `eu-en16931-v2017` |
| Currency | EUR |
| Standard rate | 20% VAT |
| Corrective documents | Credit note, Corrective |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=FR:fr-choruspro-v1 |

Asks for 7 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |
| Registration control codes | — | `$.supplier.ext` | Scheme extension is required |
| Tax ID number | — | `$.supplier` | Invoice supplier must have a tax ID code or a SIREN/SIRET identity |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| National registration code | — | `$.customer.identities` | Customer identities are required |
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |
| Registration control codes | — | `$.customer.ext` | Scheme extension is required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 20%, Intermediate rate 10%, Reduced rate 5.5%, Super reduced rate 2.1% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: Scheme extension is required. These need country-specific data a placeholder cannot fake.

### France, France CTC Flow 10 (E-Reporting)

|  |  |
|---|---|
| Country | France (FR) |
| Format | France CTC Flow 10 (E-Reporting) (`fr-ctc-flow10-v1`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 20% VAT |
| Corrective documents | Credit note, Corrective |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=FR:fr-ctc-flow10-v1 |

Asks for 2 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| National registration code | BR-FR-CO-10 | `$.supplier`, `$.supplier.identities.ext` | Invoice supplier must have a SIREN identity (ISO/IEC 6523 scheme 0002) on a B2C invoice; Party identity ext iso-scheme-id is required |
| Tax ID number | — | `$.supplier` | Invoice supplier must have a tax ID code or a SIREN/SIRET identity |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 20%, Intermediate rate 10%, Reduced rate 5.5%, Super reduced rate 2.1% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: Party identity ext iso-scheme-id is required. These need country-specific data a placeholder cannot fake.

### France, France CTC Flow 2 (B2B Clearance)

|  |  |
|---|---|
| Country | France (FR) |
| Format | France CTC Flow 2 (B2B Clearance) (`fr-ctc-flow2-v1`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 20% VAT |
| Corrective documents | Credit note, Corrective |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=FR:fr-ctc-flow2-v1 |

Asks for 8 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Electronic address | BR-FR-13 | `$.supplier.endpoints` | Invoice supplier endpoint is required for French B2B invoices |
| National registration code | BR-FR-CO-10 | `$.supplier.identities` | Invoice supplier legal identity must be a SIREN with iso-scheme-id 0002 (BR-FR-10/11); Identity scheme format invalid |
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |
| Tax ID number | — | `$.supplier` | Invoice supplier must have a tax ID code or a SIREN/SIRET identity |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Electronic address | BR-FR-12 | `$.customer.endpoints` | Invoice customer endpoint is required for French B2B invoices |
| National registration code | BR-FR-CO-10 | `$.customer.identities` | Invoice customer legal identity must be a SIREN with iso-scheme-id 0002 (BR-FR-10/11); Identity scheme format invalid |
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 20%, Intermediate rate 10%, Reduced rate 5.5%, Super reduced rate 2.1% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: Invoice customer legal identity must be a SIREN with iso-scheme-id 0002 (BR-FR-10/11); Identity scheme format invalid. These need country-specific data a placeholder cannot fake.

### France, France CTC Flow 6 (Cycle de Vie)

|  |  |
|---|---|
| Country | France (FR) |
| Format | France CTC Flow 6 (Cycle de Vie) (`fr-ctc-flow6-v1`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 20% VAT |
| Corrective documents | Credit note, Corrective |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=FR:fr-ctc-flow6-v1 |

Asks for 1 thing beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier` | Invoice supplier must have a tax ID code or a SIREN/SIRET identity |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 20%, Intermediate rate 10%, Reduced rate 5.5%, Super reduced rate 2.1% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (1 field added to the skeleton: `$.supplier.tax_id.code`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "FR",
  "$addons": [
    "fr-ctc-flow6-v1"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "FR",
      "code": "44732829320"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "FR"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "20%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "20%",
              "amount": "20.00"
            }
          ],
          "amount": "20.00"
        }
      ],
      "sum": "20.00"
    },
    "tax": "20.00",
    "total_with_tax": "120.00",
    "payable": "120.00"
  }
}
```

### France, French Factur-X v1

|  |  |
|---|---|
| Country | France (FR) |
| Format | French Factur-X v1 (`fr-facturx-v1`) |
| Builds on | `eu-en16931-v2017` |
| Currency | EUR |
| Standard rate | 20% VAT |
| Corrective documents | Credit note, Corrective |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=FR:fr-facturx-v1 |

Asks for 4 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |
| Tax ID number | — | `$.supplier` | Invoice supplier must have a tax ID code or a SIREN/SIRET identity |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 20%, Intermediate rate 10%, Reduced rate 5.5%, Super reduced rate 2.1% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (4 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "FR",
  "$addons": [
    "eu-en16931-v2017",
    "fr-facturx-v1"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "FR",
      "code": "44732829320"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "FR"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "FR"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "FR"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "20%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "120.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "20%",
              "amount": "20.00"
            }
          ],
          "amount": "20.00"
        }
      ],
      "sum": "20.00"
    },
    "tax": "20.00",
    "total_with_tax": "120.00",
    "payable": "120.00"
  }
}
```

### France, EN 16931-1:2017

|  |  |
|---|---|
| Country | France (FR) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 20% VAT |
| Corrective documents | Credit note, Corrective |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=FR:eu-en16931-v2017 |

Asks for 4 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |
| Tax ID number | — | `$.supplier` | Invoice supplier must have a tax ID code or a SIREN/SIRET identity |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 20%, Intermediate rate 10%, Reduced rate 5.5%, Super reduced rate 2.1% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (4 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "FR",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "FR",
      "code": "44732829320"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "FR"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "FR"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "FR"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "20%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "120.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "20%",
              "amount": "20.00"
            }
          ],
          "amount": "20.00"
        }
      ],
      "sum": "20.00"
    },
    "tax": "20.00",
    "total_with_tax": "120.00",
    "payable": "120.00"
  }
}
```

### France, plain invoice

|  |  |
|---|---|
| Country | France (FR) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | EUR |
| Standard rate | 20% VAT |
| Corrective documents | Credit note, Corrective |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=FR |

Asks for 1 thing beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier` | Invoice supplier must have a tax ID code or a SIREN/SIRET identity |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 20%, Intermediate rate 10%, Reduced rate 5.5%, Super reduced rate 2.1% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (1 field added to the skeleton: `$.supplier.tax_id.code`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "FR",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "FR",
      "code": "44732829320"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "FR"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "20%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "20%",
              "amount": "20.00"
            }
          ],
          "amount": "20.00"
        }
      ],
      "sum": "20.00"
    },
    "tax": "20.00",
    "total_with_tax": "120.00",
    "payable": "120.00"
  }
}
```

### Germany, German XRechnung 3.X

|  |  |
|---|---|
| Country | Germany (DE) |
| Format | German XRechnung 3.X (`de-xrechnung-v3`) |
| Builds on | `eu-en16931-v2017` |
| Currency | EUR |
| Standard rate | 19% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=DE:de-xrechnung-v3 |

Asks for 10 things beyond the minimal invoice.

**The invoice**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Order reference or billing period | BR-DE-15 | `$.ordering` | Ordering is required |

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Contact person | BR-DE-5 | `$.supplier.people` | Supplier people is required |
| Email address | BR-DE-7 | `$.supplier` | Either party.emails or party.people[0].emails is required |
| Peppol inbox | PEPPOL-EN16931-R020 | `$.supplier.inboxes` | Supplier inboxes are required |
| Phone number | BR-DE-6 | `$.supplier` | Either party.telephones or party.people[0].telephones is required |
| Postal address | BR-8, BR-DE-2 | `$.supplier.addresses` | Supplier addresses are required; Supplier addresses is required |
| Tax ID number | — | `$.supplier` | Invoice DE supplier must have either tax ID code or identity with 'de-tax-number' key |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Peppol inbox | PEPPOL-EN16931-R010 | `$.customer.inboxes` | Customer inboxes are required |
| Postal address | BR-10, BR-DE-8 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25, BR-DE-1 | `$.payment` | Payment details are required when amount is due; Payment is required |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 19%, Reduced rate 7% | charged |

**Identity schemes:** Tax Number

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (11 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`, `$.supplier.telephones`, `$.supplier.emails`, `$.supplier.people`, `$.supplier.inboxes`, `$.customer.inboxes`, `$.payment.instructions`, `$.ordering`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "DE",
  "$addons": [
    "eu-en16931-v2017",
    "de-xrechnung-v3"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "DE",
      "code": "111111125"
    },
    "people": [
      {
        "name": {
          "given": "Jane",
          "surname": "Doe"
        }
      }
    ],
    "endpoints": [
      {
        "uri": "iso6523-actorid-upis::0204:991-01234-56"
      }
    ],
    "inboxes": [
      {
        "key": "peppol",
        "scheme": "0204",
        "code": "991-01234-56"
      }
    ],
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "DE"
      }
    ],
    "emails": [
      {
        "addr": "billing@example.com"
      }
    ],
    "telephones": [
      {
        "num": "+15550100"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "DE"
    },
    "endpoints": [
      {
        "uri": "iso6523-actorid-upis::0204:991-01234-56"
      }
    ],
    "inboxes": [
      {
        "key": "peppol",
        "scheme": "0204",
        "code": "991-01234-56"
      }
    ],
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "DE"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "19%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "ordering": {
    "code": "PO-1"
  },
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "119.00",
          "percent": "100%"
        }
      ]
    },
    "instructions": {
      "key": "credit-transfer",
      "credit_transfer": [
        {
          "iban": "DE89370400440532013000"
        }
      ],
      "ext": {
        "untdid-payment-means": "30"
      }
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "19%",
              "amount": "19.00"
            }
          ],
          "amount": "19.00"
        }
      ],
      "sum": "19.00"
    },
    "tax": "19.00",
    "total_with_tax": "119.00",
    "payable": "119.00"
  }
}
```

### Germany, German ZUGFeRD 2.X

|  |  |
|---|---|
| Country | Germany (DE) |
| Format | German ZUGFeRD 2.X (`de-zugferd-v2`) |
| Builds on | `eu-en16931-v2017` |
| Currency | EUR |
| Standard rate | 19% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=DE:de-zugferd-v2 |

Asks for 4 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |
| Tax ID number | — | `$.supplier` | Invoice DE supplier must have either tax ID code or identity with 'de-tax-number' key |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 19%, Reduced rate 7% | charged |

**Identity schemes:** Tax Number

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (4 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "DE",
  "$addons": [
    "eu-en16931-v2017",
    "de-zugferd-v2"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "DE",
      "code": "111111125"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "DE"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "DE"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "DE"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "19%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "119.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "19%",
              "amount": "19.00"
            }
          ],
          "amount": "19.00"
        }
      ],
      "sum": "19.00"
    },
    "tax": "19.00",
    "total_with_tax": "119.00",
    "payable": "119.00"
  }
}
```

### Germany, EN 16931-1:2017

|  |  |
|---|---|
| Country | Germany (DE) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 19% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=DE:eu-en16931-v2017 |

Asks for 4 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |
| Tax ID number | — | `$.supplier` | Invoice DE supplier must have either tax ID code or identity with 'de-tax-number' key |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 19%, Reduced rate 7% | charged |

**Identity schemes:** Tax Number

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (4 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "DE",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "DE",
      "code": "111111125"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "DE"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "DE"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "DE"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "19%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "119.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "19%",
              "amount": "19.00"
            }
          ],
          "amount": "19.00"
        }
      ],
      "sum": "19.00"
    },
    "tax": "19.00",
    "total_with_tax": "119.00",
    "payable": "119.00"
  }
}
```

### Germany, plain invoice

|  |  |
|---|---|
| Country | Germany (DE) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | EUR |
| Standard rate | 19% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=DE |

Asks for 1 thing beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier` | Invoice DE supplier must have either tax ID code or identity with 'de-tax-number' key |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 19%, Reduced rate 7% | charged |

**Identity schemes:** Tax Number

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (1 field added to the skeleton: `$.supplier.tax_id.code`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "DE",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "DE",
      "code": "111111125"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "DE"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "19%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "19%",
              "amount": "19.00"
            }
          ],
          "amount": "19.00"
        }
      ],
      "sum": "19.00"
    },
    "tax": "19.00",
    "total_with_tax": "119.00",
    "payable": "119.00"
  }
}
```

### Greece, Greece MyData v1.x

|  |  |
|---|---|
| Country | Greece (EL) |
| Format | Greece MyData v1.x (`gr-mydata-v1`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 24% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=EL:gr-mydata-v1 |

Asks for 4 things beyond the minimal invoice.

**The invoice**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Invoice series | — | `$.series` | Series is required |

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier.tax_id.code` | Supplier tax ID code is required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | — | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | — | `$.payment` | Payment is required; Payment instructions are required when no advances |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 24%, Reduced rate 13%, Super-reduced rate 6%, Standard rate (Island) 17%, Reduced rate (Island) 9%, Super-reduced rate (Island) 4% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (5 fields added to the skeleton: `$.series`, `$.supplier.tax_id.code`, `$.customer.addresses`, `$.payment.terms`, `$.payment.instructions`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "EL",
  "$addons": [
    "gr-mydata-v1"
  ],
  "type": "standard",
  "series": "A",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "gr-mydata-invoice-type": "2.1"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "EL",
      "code": "094014201"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "EL"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "EL"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "24%",
          "ext": {
            "gr-mydata-vat-rate": "1"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "124.00",
          "percent": "100%"
        }
      ]
    },
    "instructions": {
      "key": "credit-transfer",
      "credit_transfer": [
        {
          "iban": "DE89370400440532013000"
        }
      ],
      "ext": {
        "gr-mydata-payment-means": "1"
      }
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "gr-mydata-vat-rate": "1"
              },
              "base": "100.00",
              "percent": "24%",
              "amount": "24.00"
            }
          ],
          "amount": "24.00"
        }
      ],
      "sum": "24.00"
    },
    "tax": "24.00",
    "total_with_tax": "124.00",
    "payable": "124.00"
  }
}
```

### Greece, EN 16931-1:2017

|  |  |
|---|---|
| Country | Greece (EL) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 24% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=EL:eu-en16931-v2017 |

Asks for 3 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 24%, Reduced rate 13%, Super-reduced rate 6%, Standard rate (Island) 17%, Reduced rate (Island) 9%, Super-reduced rate (Island) 4% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (3 fields added to the skeleton: `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "EL",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "EL"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "EL"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "EL"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "EL"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "24%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "124.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "24%",
              "amount": "24.00"
            }
          ],
          "amount": "24.00"
        }
      ],
      "sum": "24.00"
    },
    "tax": "24.00",
    "total_with_tax": "124.00",
    "payable": "124.00"
  }
}
```

### Greece, plain invoice

|  |  |
|---|---|
| Country | Greece (EL) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | EUR |
| Standard rate | 24% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=EL |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General rate 24%, Reduced rate 13%, Super-reduced rate 6%, Standard rate (Island) 17%, Reduced rate (Island) 9%, Super-reduced rate (Island) 4% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "EL",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "EL"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "EL"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "24%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "24%",
              "amount": "24.00"
            }
          ],
          "amount": "24.00"
        }
      ],
      "sum": "24.00"
    },
    "tax": "24.00",
    "total_with_tax": "124.00",
    "payable": "124.00"
  }
}
```

### India, plain invoice

|  |  |
|---|---|
| Country | India (IN) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | INR |
| Standard rate | CGST, no rate stated |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=IN |

Asks for 1 thing beyond the minimal invoice.

**Lines and items**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Item classification code | — | `$.lines.item.identities` | All items must have an HSN identity code |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| CGST | no rate stated | charged |
| SGST | no rate stated | charged |
| IGST | no rate stated | charged |
| UTGST | no rate stated | charged |

**Legal notes with prescribed wording:** Reverse charge, Simplified

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: All items must have an HSN identity code. These need country-specific data a placeholder cannot fake.

### Ireland, EN 16931-1:2017

|  |  |
|---|---|
| Country | Ireland (IE) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 23.0% VAT |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=IE:eu-en16931-v2017 |

Asks for 3 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Standard Rate 23.0%, First Reduced Rate 13.5%, Second Reduced Rate 9.0%, Livestock Rate 4.8% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (3 fields added to the skeleton: `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "IE",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "IE"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "IE"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "IE"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "IE"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "23.0%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "123.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "23.0%",
              "amount": "23.00"
            }
          ],
          "amount": "23.00"
        }
      ],
      "sum": "23.00"
    },
    "tax": "23.00",
    "total_with_tax": "123.00",
    "payable": "123.00"
  }
}
```

### Ireland, plain invoice

|  |  |
|---|---|
| Country | Ireland (IE) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | EUR |
| Standard rate | 23.0% VAT |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=IE |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Standard Rate 23.0%, First Reduced Rate 13.5%, Second Reduced Rate 9.0%, Livestock Rate 4.8% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "IE",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "IE"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "IE"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "23.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "23.0%",
              "amount": "23.00"
            }
          ],
          "amount": "23.00"
        }
      ],
      "sum": "23.00"
    },
    "tax": "23.00",
    "total_with_tax": "123.00",
    "payable": "123.00"
  }
}
```

### Italy, Italy AdE ticket v1.x

|  |  |
|---|---|
| Country | Italy (IT) |
| Format | Italy AdE ticket v1.x (`it-ticket-v1`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 22.0% VAT |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=IT:it-ticket-v1 |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Minimum Rate 4.0%, Reduced Rate 5.0%, Intermediate Rate 10.0%, General Rate 22.0% | charged |
| IRPEF | no rate stated | withheld |
| IRES | no rate stated | withheld |
| INPS Contribution (INPS) | no rate stated | withheld |
| ENASARCO Contribution (ENASARCO) | no rate stated | withheld |
| ENPAM Contribution (ENPAM) | no rate stated | withheld |
| Other Social Security Contributions (CP) | no rate stated | withheld |

**Identity schemes:** Fiscal Code

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "IT",
  "$addons": [
    "it-ticket-v1"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "prices_include": "VAT"
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "IT"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "IT"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "ext": {
          "it-ticket-product": "services"
        }
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "22.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "tax_included": "18.03",
    "total": "81.97",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "81.97",
              "percent": "22.0%",
              "amount": "18.03"
            }
          ],
          "amount": "18.03"
        }
      ],
      "sum": "18.03"
    },
    "tax": "18.03",
    "total_with_tax": "100.00",
    "payable": "100.00"
  }
}
```

### Italy, Italy SDI FatturaPA v1.x

|  |  |
|---|---|
| Country | Italy (IT) |
| Format | Italy SDI FatturaPA v1.x (`it-sdi-v1`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 22.0% VAT |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=IT:it-sdi-v1 |

Asks for 4 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | — | `$.supplier.addresses` | Supplier addresses are required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| National registration code | — | `$.customer.identities` | Customer requires identity with key 'it-fiscal-code' |
| Postal address | — | `$.customer.addresses` | Customer addresses are required |
| Tax ID number | — | `$.customer.tax_id.code` | Customer tax ID code is required for Italian parties without fiscal code |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Minimum Rate 4.0%, Reduced Rate 5.0%, Intermediate Rate 10.0%, General Rate 22.0% | charged |
| IRPEF | no rate stated | withheld |
| IRES | no rate stated | withheld |
| INPS Contribution (INPS) | no rate stated | withheld |
| ENASARCO Contribution (ENASARCO) | no rate stated | withheld |
| ENPAM Contribution (ENPAM) | no rate stated | withheld |
| Other Social Security Contributions (CP) | no rate stated | withheld |

**Identity schemes:** Fiscal Code

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (4 fields added to the skeleton: `$.supplier.addresses`, `$.customer.addresses`, `$.customer.tax_id.code`, `$.customer.identities`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "IT",
  "$addons": [
    "it-sdi-v1"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "it-sdi-document-type": "TD01",
      "it-sdi-format": "FPR12"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "IT"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "IT"
      }
    ],
    "ext": {
      "it-sdi-fiscal-regime": "RF01"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "IT",
      "code": "12345678903"
    },
    "identities": [
      {
        "type": "CRN",
        "code": "1234567890"
      }
    ],
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "IT"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "22.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "22.0%",
              "amount": "22.00"
            }
          ],
          "amount": "22.00"
        }
      ],
      "sum": "22.00"
    },
    "tax": "22.00",
    "total_with_tax": "122.00",
    "payable": "122.00"
  }
}
```

### Italy, EN 16931-1:2017

|  |  |
|---|---|
| Country | Italy (IT) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 22.0% VAT |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=IT:eu-en16931-v2017 |

Asks for 3 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Minimum Rate 4.0%, Reduced Rate 5.0%, Intermediate Rate 10.0%, General Rate 22.0% | charged |
| IRPEF | no rate stated | withheld |
| IRES | no rate stated | withheld |
| INPS Contribution (INPS) | no rate stated | withheld |
| ENASARCO Contribution (ENASARCO) | no rate stated | withheld |
| ENPAM Contribution (ENPAM) | no rate stated | withheld |
| Other Social Security Contributions (CP) | no rate stated | withheld |

**Identity schemes:** Fiscal Code

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (3 fields added to the skeleton: `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "IT",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "IT"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "IT"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "IT"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "IT"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "22.0%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "122.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "22.0%",
              "amount": "22.00"
            }
          ],
          "amount": "22.00"
        }
      ],
      "sum": "22.00"
    },
    "tax": "22.00",
    "total_with_tax": "122.00",
    "payable": "122.00"
  }
}
```

### Italy, plain invoice

|  |  |
|---|---|
| Country | Italy (IT) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | EUR |
| Standard rate | 22.0% VAT |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=IT |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Minimum Rate 4.0%, Reduced Rate 5.0%, Intermediate Rate 10.0%, General Rate 22.0% | charged |
| IRPEF | no rate stated | withheld |
| IRES | no rate stated | withheld |
| INPS Contribution (INPS) | no rate stated | withheld |
| ENASARCO Contribution (ENASARCO) | no rate stated | withheld |
| ENPAM Contribution (ENPAM) | no rate stated | withheld |
| Other Social Security Contributions (CP) | no rate stated | withheld |

**Identity schemes:** Fiscal Code

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "IT",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "IT"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "IT"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "22.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "22.0%",
              "amount": "22.00"
            }
          ],
          "amount": "22.00"
        }
      ],
      "sum": "22.00"
    },
    "tax": "22.00",
    "total_with_tax": "122.00",
    "payable": "122.00"
  }
}
```

### Kingdom of Saudi Arabia, Saudi Arabia ZATCA

|  |  |
|---|---|
| Country | Kingdom of Saudi Arabia (SA) |
| Format | Saudi Arabia ZATCA (`sa-zatca-v1`) |
| Builds on | — |
| Currency | SAR |
| Standard rate | 15.0% VAT |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=SA:sa-zatca-v1 |

Asks for 7 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| National registration code | BR-KSA-08 | `$.supplier.identities` | Invoice supplier must have a valid identity (CRN/MOM/MLS/700/SAG/OTH) |
| Postal address | BR-8, BR-KSA-37, BR-KSA-63 | `$.supplier.addresses`, `$.supplier.addresses.num`, `$.supplier.addresses.street_extra` | Supplier addresses are required; Invoice addresses in SA must have a 4 digits building number (BR-KSA-09), (BR-KSA-63),; Invoice addresses in SA must have a district name (BR-KSA-09), |
| Tax ID number | BR-KSA-39 | `$.supplier.tax_id.code` | Invoice supplier must have a tax id code |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| National registration code | — | `$.customer` | Invoice customer must have a valid identification scheme for standard invoices |
| Postal address | BR-10, BR-KSA-37, BR-KSA-63 | `$.customer.addresses`, `$.customer.addresses.num`, `$.customer.addresses.street_extra` | Customer addresses are required; Invoice addresses in SA must have a 4 digits building number (BR-KSA-09), (BR-KSA-63),; Invoice addresses in SA must have a district name (BR-KSA-09), |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Delivery details | — | `$.delivery` | Invoice delivery must be present for standard tax invoices |
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Standard Rate 15.0% | charged |

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: Invoice addresses in SA must have a 4 digits building number (BR-KSA-09), (BR-KSA-63),; Invoice addresses in SA must have a district name (BR-KSA-09),. These need country-specific data a placeholder cannot fake.

### Kingdom of Saudi Arabia, plain invoice

|  |  |
|---|---|
| Country | Kingdom of Saudi Arabia (SA) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | SAR |
| Standard rate | 15.0% VAT |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=SA |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Standard Rate 15.0% | charged |

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "SA",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "SAR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "SA"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "SA"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "15.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "15.0%",
              "amount": "15.00"
            }
          ],
          "amount": "15.00"
        }
      ],
      "sum": "15.00"
    },
    "tax": "15.00",
    "total_with_tax": "115.00",
    "payable": "115.00"
  }
}
```

### Mexico, Mexican SAT CFDI v4.X

|  |  |
|---|---|
| Country | Mexico (MX) |
| Format | Mexican SAT CFDI v4.X (`mx-cfdi-v4`) |
| Builds on | — |
| Currency | MXN |
| Standard rate | 16.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=MX:mx-cfdi-v4 |

Asks for 7 things beyond the minimal invoice.

**The invoice**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax control codes | — | `$.tax.ext` | Tax requires 'mx-cfdi-doc-type', 'mx-cfdi-issue-place', and 'mx-cfdi-payment-method' extensions |

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Registration control codes | — | `$.supplier.ext` | Supplier requires 'mx-cfdi-fiscal-regime' extension |
| Tax ID number | — | `$.supplier.tax_id.code` | Supplier tax ID code is required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | — | `$.customer.addresses` | Mexican customer must have at least one address |
| Registration control codes | — | `$.customer.ext` | Mexican customer requires 'mx-cfdi-fiscal-regime' and 'mx-cfdi-use' extensions |
| Tax ID number | — | `$.customer.tax_id.code` | Customer tax ID code is required |

**Lines and items**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Item control codes | — | `$.lines.item.ext` | Item requires 'mx-cfdi-prod-serv' extension |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 16.0%, Reduced (Border) Rate 8.0% | charged |
| Retained VAT (RVAT) | no rate stated | withheld |
| IEPS | no rate stated | charged |
| Retained IEPS (RIEPS) | no rate stated | withheld |
| ISR | no rate stated | withheld |

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: Tax requires 'mx-cfdi-doc-type', 'mx-cfdi-issue-place', and 'mx-cfdi-payment-method' extensions; Mexican customer requires 'mx-cfdi-fiscal-regime' and 'mx-cfdi-use' extensions; Item requires 'mx-cfdi-prod-serv' extension; Supplier requires 'mx-cfdi-fiscal-regime' extension. These need country-specific data a placeholder cannot fake.

### Mexico, plain invoice

|  |  |
|---|---|
| Country | Mexico (MX) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | MXN |
| Standard rate | 16.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=MX |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 16.0%, Reduced (Border) Rate 8.0% | charged |
| Retained VAT (RVAT) | no rate stated | withheld |
| IEPS | no rate stated | charged |
| Retained IEPS (RIEPS) | no rate stated | withheld |
| ISR | no rate stated | withheld |

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "MX",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "MXN",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "MX"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "MX"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "16.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "16.0%",
              "amount": "16.00"
            }
          ],
          "amount": "16.00"
        }
      ],
      "sum": "16.00"
    },
    "tax": "16.00",
    "total_with_tax": "116.00",
    "payable": "116.00"
  }
}
```

### New Zealand, plain invoice

|  |  |
|---|---|
| Country | New Zealand (NZ) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | NZD |
| Standard rate | 15.0% GST |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=NZ |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| GST | Standard Rate 15.0% | charged |

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "NZ",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "NZD",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "NZ"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "NZ"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "GST",
          "key": "standard",
          "rate": "general",
          "percent": "15.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "GST",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "15.0%",
              "amount": "15.00"
            }
          ],
          "amount": "15.00"
        }
      ],
      "sum": "15.00"
    },
    "tax": "15.00",
    "total_with_tax": "115.00",
    "payable": "115.00"
  }
}
```

### Norway, plain invoice

|  |  |
|---|---|
| Country | Norway (NO) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | NOK |
| Standard rate | 25.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=NO |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 25.0%, Reduced Rate 15.0%, Super-reduced Rate 12.0%, Special Rate 11.11% | charged |

**Identity schemes:** Organization Number

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "NO",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "NOK",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "NO"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "NO"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "25.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "25.0%",
              "amount": "25.00"
            }
          ],
          "amount": "25.00"
        }
      ],
      "sum": "25.00"
    },
    "tax": "25.00",
    "total_with_tax": "125.00",
    "payable": "125.00"
  }
}
```

### Poland, Polish KSeF FA_VAT FA(3)

|  |  |
|---|---|
| Country | Poland (PL) |
| Format | Polish KSeF FA_VAT FA(3) (`pl-favat-v3`) |
| Builds on | — |
| Currency | PLN |
| Standard rate | 23.0% VAT |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=PL:pl-favat-v3 |

Asks for 4 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | — | `$.supplier.addresses` | Supplier addresses are required |
| Tax ID number | — | `$.supplier.tax_id.code` | Supplier tax ID code required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.customer.tax_id.code` | Customer Polish tax ID code is required |

**Lines and items**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax rate control code | — | `$.lines.taxes.ext` | Tax combo requires 'pl-favat-tax-category' extension |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 23.0%, First Reduced Rate 8.0%, Second Reduced Rate 5.0% | charged |

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: Tax combo requires 'pl-favat-tax-category' extension. These need country-specific data a placeholder cannot fake.

### Poland, EN 16931-1:2017

|  |  |
|---|---|
| Country | Poland (PL) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | PLN |
| Standard rate | 23.0% VAT |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=PL:eu-en16931-v2017 |

Asks for 3 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 23.0%, First Reduced Rate 8.0%, Second Reduced Rate 5.0% | charged |

**Smallest document that builds** (3 fields added to the skeleton: `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "PL",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "PLN",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "PL"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "PL"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "PL"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "PL"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "23.0%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "123.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "23.0%",
              "amount": "23.00"
            }
          ],
          "amount": "23.00"
        }
      ],
      "sum": "23.00"
    },
    "tax": "23.00",
    "total_with_tax": "123.00",
    "payable": "123.00"
  }
}
```

### Poland, plain invoice

|  |  |
|---|---|
| Country | Poland (PL) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | PLN |
| Standard rate | 23.0% VAT |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=PL |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 23.0%, First Reduced Rate 8.0%, Second Reduced Rate 5.0% | charged |

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "PL",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "PLN",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "PL"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "PL"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "23.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "23.0%",
              "amount": "23.00"
            }
          ],
          "amount": "23.00"
        }
      ],
      "sum": "23.00"
    },
    "tax": "23.00",
    "total_with_tax": "123.00",
    "payable": "123.00"
  }
}
```

### Portugal, Portugal SAF-T

|  |  |
|---|---|
| Country | Portugal (PT) |
| Format | Portugal SAF-T (`pt-saft-v1`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 23.0% VAT |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=PT:pt-saft-v1 |

Asks for 2 things beyond the minimal invoice.

**The invoice**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Code format must be valid | — | `$` | Code format must be valid |

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier.tax_id.code` | Supplier tax ID code is required |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 23.0%, Intermediate Rate 13.0%, Reduced Rate 6.0% | charged |
| IRS | no rate stated | withheld |
| IRC | no rate stated | withheld |

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: Code format must be valid. These need country-specific data a placeholder cannot fake.

### Portugal, EN 16931-1:2017

|  |  |
|---|---|
| Country | Portugal (PT) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 23.0% VAT |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=PT:eu-en16931-v2017 |

Asks for 4 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |
| Tax ID number | — | `$.supplier.tax_id.code` | Supplier tax ID code is required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 23.0%, Intermediate Rate 13.0%, Reduced Rate 6.0% | charged |
| IRS | no rate stated | withheld |
| IRC | no rate stated | withheld |

**Smallest document that builds** (4 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "PT",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "PT",
      "code": "503504564"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "PT"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "PT"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "PT"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "23.0%",
          "ext": {
            "pt-region": "PT",
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "123.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "pt-region": "PT",
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "23.0%",
              "amount": "23.00"
            }
          ],
          "amount": "23.00"
        }
      ],
      "sum": "23.00"
    },
    "tax": "23.00",
    "total_with_tax": "123.00",
    "payable": "123.00"
  }
}
```

### Portugal, plain invoice

|  |  |
|---|---|
| Country | Portugal (PT) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | EUR |
| Standard rate | 23.0% VAT |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=PT |

Asks for 1 thing beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier.tax_id.code` | Supplier tax ID code is required |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 23.0%, Intermediate Rate 13.0%, Reduced Rate 6.0% | charged |
| IRS | no rate stated | withheld |
| IRC | no rate stated | withheld |

**Smallest document that builds** (1 field added to the skeleton: `$.supplier.tax_id.code`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "PT",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "PT",
      "code": "503504564"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "PT"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "23.0%",
          "ext": {
            "pt-region": "PT"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "pt-region": "PT"
              },
              "base": "100.00",
              "percent": "23.0%",
              "amount": "23.00"
            }
          ],
          "amount": "23.00"
        }
      ],
      "sum": "23.00"
    },
    "tax": "23.00",
    "total_with_tax": "123.00",
    "payable": "123.00"
  }
}
```

### Singapore, plain invoice

|  |  |
|---|---|
| Country | Singapore (SG) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | SGD |
| Standard rate | 9% GST |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=SG |

Asks for 1 thing beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier`, `$.supplier.tax_id.code` | Invoice supplier in Singapore must have a GST tax ID code or a UEN identity; Invalid Singaporean tax identity code |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| GST | General rate 9% | charged |

**Identity schemes:** Unique Entity Number (UEN)

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: Invalid Singaporean tax identity code. These need country-specific data a placeholder cannot fake.

### Spain, Spain FacturaE

|  |  |
|---|---|
| Country | Spain (ES) |
| Format | Spain FacturaE (`es-facturae-v3`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 21.0% VAT |
| Corrective documents | Credit note, Corrective, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=ES:es-facturae-v3 |

Asks for 2 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier.tax_id.code` | Invoice supplier tax ID code in Spain is required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.customer.tax_id.code` | Customer tax ID code is required for Spanish customers |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Standard Rate 21.0%, Standard Rate + Equivalence Surcharge 21.0%, Reduced Rate 10.0%, Reduced Rate + Equivalence Surcharge 10.0%, Super-Reduced Rate 4.0%, Super-Reduced Rate + Equivalence Surcharge 4.0% | charged |
| IGIC | General Rate 7.0%, Reduced Rate 3.0% | charged |
| IPSI | no rate stated | charged |
| IRPF | Professional Rate 15.0%, Professional Starting Rate 7.0%, Rental or Interest Capital 19.0%, Modules Rate 1.0% | withheld |
| IRNR | no rate stated | withheld |

**Identity schemes:** Passport, National ID Card or similar from a foreign country, Residential permit, An other type of source not listed

**Legal notes with prescribed wording:** Reverse charge, Simplified scheme, Self billed, Travel agency, Second hand goods, Art, Antiques, Cash basis

**Smallest document that builds** (2 fields added to the skeleton: `$.supplier.tax_id.code`, `$.customer.tax_id.code`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "ES",
  "$addons": [
    "es-facturae-v3"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "es-facturae-doc-type": "FC",
      "es-facturae-invoice-class": "OO"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "ES",
      "code": "B98602642"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "ES",
      "code": "B98602642"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "21.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "21.0%",
              "amount": "21.00"
            }
          ],
          "amount": "21.00"
        }
      ],
      "sum": "21.00"
    },
    "tax": "21.00",
    "total_with_tax": "121.00",
    "payable": "121.00"
  }
}
```

### Spain, Spain SII V1.x

|  |  |
|---|---|
| Country | Spain (ES) |
| Format | Spain SII V1.x (`es-sii-v1`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 21.0% VAT |
| Corrective documents | Credit note, Corrective, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=ES:es-sii-v1 |

Asks for 2 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier.tax_id.code` | Invoice supplier tax ID code in Spain is required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.customer.tax_id.code` | Customer tax ID must have a code |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Standard Rate 21.0%, Standard Rate + Equivalence Surcharge 21.0%, Reduced Rate 10.0%, Reduced Rate + Equivalence Surcharge 10.0%, Super-Reduced Rate 4.0%, Super-Reduced Rate + Equivalence Surcharge 4.0% | charged |
| IGIC | General Rate 7.0%, Reduced Rate 3.0% | charged |
| IPSI | no rate stated | charged |
| IRPF | Professional Rate 15.0%, Professional Starting Rate 7.0%, Rental or Interest Capital 19.0%, Modules Rate 1.0% | withheld |
| IRNR | no rate stated | withheld |

**Identity schemes:** Passport, National ID Card or similar from a foreign country, Residential permit, An other type of source not listed

**Legal notes with prescribed wording:** Reverse charge, Simplified scheme, Self billed, Travel agency, Second hand goods, Art, Antiques, Cash basis

**Smallest document that builds** (2 fields added to the skeleton: `$.supplier.tax_id.code`, `$.customer.tax_id.code`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "ES",
  "$addons": [
    "es-sii-v1"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "es-sii-doc-type": "F1"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "ES",
      "code": "B98602642"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "ES",
      "code": "B98602642"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "21.0%",
          "ext": {
            "es-sii-regime": "01"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "es-sii-regime": "01"
              },
              "base": "100.00",
              "percent": "21.0%",
              "amount": "21.00"
            }
          ],
          "amount": "21.00"
        }
      ],
      "sum": "21.00"
    },
    "tax": "21.00",
    "total_with_tax": "121.00",
    "payable": "121.00"
  }
}
```

### Spain, Spain TicketBAI

|  |  |
|---|---|
| Country | Spain (ES) |
| Format | Spain TicketBAI (`es-tbai-v1`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 21.0% VAT |
| Corrective documents | Credit note, Corrective, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=ES:es-tbai-v1 |

Asks for 3 things beyond the minimal invoice.

**The invoice**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Invoice must have a note with key 'general' | — | `$.notes` | Invoice must have a note with key 'general' |
| Invoice tax is required | — | `$.tax` | Invoice tax is required |

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier.tax_id.code` | Invoice supplier tax ID code in Spain is required |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Standard Rate 21.0%, Standard Rate + Equivalence Surcharge 21.0%, Reduced Rate 10.0%, Reduced Rate + Equivalence Surcharge 10.0%, Super-Reduced Rate 4.0%, Super-Reduced Rate + Equivalence Surcharge 4.0% | charged |
| IGIC | General Rate 7.0%, Reduced Rate 3.0% | charged |
| IPSI | no rate stated | charged |
| IRPF | Professional Rate 15.0%, Professional Starting Rate 7.0%, Rental or Interest Capital 19.0%, Modules Rate 1.0% | withheld |
| IRNR | no rate stated | withheld |

**Identity schemes:** Passport, National ID Card or similar from a foreign country, Residential permit, An other type of source not listed

**Legal notes with prescribed wording:** Reverse charge, Simplified scheme, Self billed, Travel agency, Second hand goods, Art, Antiques, Cash basis

**Smallest document that builds:** none from placeholders alone. GOBL still asks for: Invoice tax is required; Invoice must have a note with key 'general'. These need country-specific data a placeholder cannot fake.

### Spain, Spain VERI*FACTU V1

|  |  |
|---|---|
| Country | Spain (ES) |
| Format | Spain VERI*FACTU V1 (`es-verifactu-v1`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 21.0% VAT |
| Corrective documents | Credit note, Corrective, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=ES:es-verifactu-v1 |

Asks for 2 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier.tax_id.code` | Invoice supplier tax ID code in Spain is required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.customer.tax_id.code` | Tax ID must have a code |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Standard Rate 21.0%, Standard Rate + Equivalence Surcharge 21.0%, Reduced Rate 10.0%, Reduced Rate + Equivalence Surcharge 10.0%, Super-Reduced Rate 4.0%, Super-Reduced Rate + Equivalence Surcharge 4.0% | charged |
| IGIC | General Rate 7.0%, Reduced Rate 3.0% | charged |
| IPSI | no rate stated | charged |
| IRPF | Professional Rate 15.0%, Professional Starting Rate 7.0%, Rental or Interest Capital 19.0%, Modules Rate 1.0% | withheld |
| IRNR | no rate stated | withheld |

**Identity schemes:** Passport, National ID Card or similar from a foreign country, Residential permit, An other type of source not listed

**Legal notes with prescribed wording:** Reverse charge, Simplified scheme, Self billed, Travel agency, Second hand goods, Art, Antiques, Cash basis

**Smallest document that builds** (2 fields added to the skeleton: `$.supplier.tax_id.code`, `$.customer.tax_id.code`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "ES",
  "$addons": [
    "es-verifactu-v1"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "es-verifactu-doc-type": "F1"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "ES",
      "code": "B98602642"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "ES",
      "code": "B98602642"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "21.0%",
          "ext": {
            "es-verifactu-op-class": "S1",
            "es-verifactu-regime": "01"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "es-verifactu-op-class": "S1",
                "es-verifactu-regime": "01"
              },
              "base": "100.00",
              "percent": "21.0%",
              "amount": "21.00"
            }
          ],
          "amount": "21.00"
        }
      ],
      "sum": "21.00"
    },
    "tax": "21.00",
    "total_with_tax": "121.00",
    "payable": "121.00"
  }
}
```

### Spain, EN 16931-1:2017

|  |  |
|---|---|
| Country | Spain (ES) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 21.0% VAT |
| Corrective documents | Credit note, Corrective, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=ES:eu-en16931-v2017 |

Asks for 4 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |
| Tax ID number | — | `$.supplier.tax_id.code` | Invoice supplier tax ID code in Spain is required |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Standard Rate 21.0%, Standard Rate + Equivalence Surcharge 21.0%, Reduced Rate 10.0%, Reduced Rate + Equivalence Surcharge 10.0%, Super-Reduced Rate 4.0%, Super-Reduced Rate + Equivalence Surcharge 4.0% | charged |
| IGIC | General Rate 7.0%, Reduced Rate 3.0% | charged |
| IPSI | no rate stated | charged |
| IRPF | Professional Rate 15.0%, Professional Starting Rate 7.0%, Rental or Interest Capital 19.0%, Modules Rate 1.0% | withheld |
| IRNR | no rate stated | withheld |

**Identity schemes:** Passport, National ID Card or similar from a foreign country, Residential permit, An other type of source not listed

**Legal notes with prescribed wording:** Reverse charge, Simplified scheme, Self billed, Travel agency, Second hand goods, Art, Antiques, Cash basis

**Smallest document that builds** (4 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "ES",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "ES",
      "code": "B98602642"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "ES"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "ES"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "ES"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "21.0%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "121.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "21.0%",
              "amount": "21.00"
            }
          ],
          "amount": "21.00"
        }
      ],
      "sum": "21.00"
    },
    "tax": "21.00",
    "total_with_tax": "121.00",
    "payable": "121.00"
  }
}
```

### Spain, plain invoice

|  |  |
|---|---|
| Country | Spain (ES) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | EUR |
| Standard rate | 21.0% VAT |
| Corrective documents | Credit note, Corrective, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=ES |

Asks for 1 thing beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier.tax_id.code` | Invoice supplier tax ID code in Spain is required |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | Standard Rate 21.0%, Standard Rate + Equivalence Surcharge 21.0%, Reduced Rate 10.0%, Reduced Rate + Equivalence Surcharge 10.0%, Super-Reduced Rate 4.0%, Super-Reduced Rate + Equivalence Surcharge 4.0% | charged |
| IGIC | General Rate 7.0%, Reduced Rate 3.0% | charged |
| IPSI | no rate stated | charged |
| IRPF | Professional Rate 15.0%, Professional Starting Rate 7.0%, Rental or Interest Capital 19.0%, Modules Rate 1.0% | withheld |
| IRNR | no rate stated | withheld |

**Identity schemes:** Passport, National ID Card or similar from a foreign country, Residential permit, An other type of source not listed

**Legal notes with prescribed wording:** Reverse charge, Simplified scheme, Self billed, Travel agency, Second hand goods, Art, Antiques, Cash basis

**Smallest document that builds** (1 field added to the skeleton: `$.supplier.tax_id.code`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "ES",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "ES",
      "code": "B98602642"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "ES"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "21.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "21.0%",
              "amount": "21.00"
            }
          ],
          "amount": "21.00"
        }
      ],
      "sum": "21.00"
    },
    "tax": "21.00",
    "total_with_tax": "121.00",
    "payable": "121.00"
  }
}
```

### Sweden, EN 16931-1:2017

|  |  |
|---|---|
| Country | Sweden (SE) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | SEK |
| Standard rate | 25.0% VAT |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=SE:eu-en16931-v2017 |

Asks for 4 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |
| Tax ID number | — | `$.supplier` | Invoice SE supplier must have either tax ID code or identity with ON, PN, or CN type |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 25.0%, First Reduced Rate 12.0%, Second Reduced Rate 6.0% | charged |

**Identity schemes:** Organization Number, Person Number, Coordination Number

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (4 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "SE",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "SEK",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "SE",
      "code": "556036079301"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "SE"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "SE"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "SE"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "25.0%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "125.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "25.0%",
              "amount": "25.00"
            }
          ],
          "amount": "25.00"
        }
      ],
      "sum": "25.00"
    },
    "tax": "25.00",
    "total_with_tax": "125.00",
    "payable": "125.00"
  }
}
```

### Sweden, plain invoice

|  |  |
|---|---|
| Country | Sweden (SE) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | SEK |
| Standard rate | 25.0% VAT |
| Corrective documents | none |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=SE |

Asks for 1 thing beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier` | Invoice SE supplier must have either tax ID code or identity with ON, PN, or CN type |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 25.0%, First Reduced Rate 12.0%, Second Reduced Rate 6.0% | charged |

**Identity schemes:** Organization Number, Person Number, Coordination Number

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (1 field added to the skeleton: `$.supplier.tax_id.code`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "SE",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "SEK",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "SE",
      "code": "556036079301"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "SE"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "25.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "25.0%",
              "amount": "25.00"
            }
          ],
          "amount": "25.00"
        }
      ],
      "sum": "25.00"
    },
    "tax": "25.00",
    "total_with_tax": "125.00",
    "payable": "125.00"
  }
}
```

### Switzerland, plain invoice

|  |  |
|---|---|
| Country | Switzerland (CH) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | CHF |
| Standard rate | 8.1% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=CH |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 8.1%, Intermediate Rate 3.8%, Reduced Rate 2.6% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "CH",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "CHF",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "CH"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "CH"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "8.1%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "8.1%",
              "amount": "8.10"
            }
          ],
          "amount": "8.10"
        }
      ],
      "sum": "8.10"
    },
    "tax": "8.10",
    "total_with_tax": "108.10",
    "payable": "108.10"
  }
}
```

### The Netherlands, EN 16931-1:2017

|  |  |
|---|---|
| Country | The Netherlands (NL) |
| Format | EN 16931-1:2017 (`eu-en16931-v2017`) |
| Builds on | — |
| Currency | EUR |
| Standard rate | 21.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=NL:eu-en16931-v2017 |

Asks for 4 things beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-8 | `$.supplier.addresses` | Supplier addresses are required |
| Tax ID number | — | `$.supplier` | Invoice supplier must have a tax ID code or a KVK/OIN identity |

**Your customer**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Postal address | BR-10 | `$.customer.addresses` | Customer addresses are required |

**Payment and delivery**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Payment details | BR-CO-25 | `$.payment` | Payment details are required when amount is due |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 21.0%, Reduced Rate 9.0% | charged |

**Identity schemes:** KVK Number, OIN Number

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (4 fields added to the skeleton: `$.supplier.tax_id.code`, `$.supplier.addresses`, `$.customer.addresses`, `$.payment.terms`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "NL",
  "$addons": [
    "eu-en16931-v2017"
  ],
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "tax": {
    "ext": {
      "untdid-document-type": "380"
    }
  },
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "NL",
      "code": "123456782B01"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "NL"
      }
    ]
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "NL"
    },
    "addresses": [
      {
        "street": "Example Street 1",
        "locality": "Example City",
        "code": "10000",
        "country": "NL"
      }
    ]
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00",
        "unit": "one"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "21.0%",
          "ext": {
            "untdid-tax-category": "S"
          }
        }
      ],
      "total": "100.00"
    }
  ],
  "payment": {
    "terms": {
      "due_dates": [
        {
          "date": "2026-01-31",
          "amount": "121.00",
          "percent": "100%"
        }
      ]
    }
  },
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "ext": {
                "untdid-tax-category": "S"
              },
              "base": "100.00",
              "percent": "21.0%",
              "amount": "21.00"
            }
          ],
          "amount": "21.00"
        }
      ],
      "sum": "21.00"
    },
    "tax": "21.00",
    "total_with_tax": "121.00",
    "payable": "121.00"
  }
}
```

### The Netherlands, plain invoice

|  |  |
|---|---|
| Country | The Netherlands (NL) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | EUR |
| Standard rate | 21.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=NL |

Asks for 1 thing beyond the minimal invoice.

**Your company**

| Requirement | Rule | Path | What GOBL said |
|---|---|---|---|
| Tax ID number | — | `$.supplier` | Invoice supplier must have a tax ID code or a KVK/OIN identity |

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 21.0%, Reduced Rate 9.0% | charged |

**Identity schemes:** KVK Number, OIN Number

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (1 field added to the skeleton: `$.supplier.tax_id.code`)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "NL",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "EUR",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "NL",
      "code": "123456782B01"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "NL"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "21.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "21.0%",
              "amount": "21.00"
            }
          ],
          "amount": "21.00"
        }
      ],
      "sum": "21.00"
    },
    "tax": "21.00",
    "total_with_tax": "121.00",
    "payable": "121.00"
  }
}
```

### United Arab Emirates, plain invoice

|  |  |
|---|---|
| Country | United Arab Emirates (AE) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | AED |
| Standard rate | 5% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=AE |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 5% | charged |

**Legal notes with prescribed wording:** Reverse charge, Simplified

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "AE",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "AED",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "AE"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "AE"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "5%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "5%",
              "amount": "5.00"
            }
          ],
          "amount": "5.00"
        }
      ],
      "sum": "5.00"
    },
    "tax": "5.00",
    "total_with_tax": "105.00",
    "payable": "105.00"
  }
}
```

### United Kingdom, plain invoice

|  |  |
|---|---|
| Country | United Kingdom (GB) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | GBP |
| Standard rate | 20.0% VAT |
| Corrective documents | Credit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=GB |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| VAT | General Rate 20.0%, Reduced Rate 5.0% | charged |

**Legal notes with prescribed wording:** Reverse charge

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "GB",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "GBP",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "GB"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "GB"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "VAT",
          "key": "standard",
          "rate": "general",
          "percent": "20.0%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "VAT",
          "rates": [
            {
              "key": "standard",
              "base": "100.00",
              "percent": "20.0%",
              "amount": "20.00"
            }
          ],
          "amount": "20.00"
        }
      ],
      "sum": "20.00"
    },
    "tax": "20.00",
    "total_with_tax": "120.00",
    "payable": "120.00"
  }
}
```

### United States of America, plain invoice

|  |  |
|---|---|
| Country | United States of America (US) |
| Format | none, a plain invoice |
| Builds on | — |
| Currency | USD |
| Standard rate | ST, no rate stated |
| Corrective documents | Credit note, Debit note |
| Compare URL | https://www.invopop.com/invoice-comparator?cols=US |

Asks for nothing beyond the minimal invoice. GOBL builds this document as it stands.

**Taxes**

| Category | Rates | Kind |
|---|---|---|
| ST | no rate stated | charged |

**Smallest document that builds** (0 fields added to the skeleton: none)

```json
{
  "$schema": "https://gobl.org/draft-0/bill/invoice",
  "$regime": "US",
  "type": "standard",
  "code": "INV-001",
  "issue_date": "2026-01-01",
  "currency": "USD",
  "supplier": {
    "name": "Your company",
    "tax_id": {
      "country": "US"
    }
  },
  "customer": {
    "name": "Your customer",
    "tax_id": {
      "country": "US"
    }
  },
  "lines": [
    {
      "i": 1,
      "quantity": "1",
      "item": {
        "name": "Consulting",
        "price": "100.00"
      },
      "sum": "100.00",
      "taxes": [
        {
          "cat": "ST",
          "percent": "20%"
        }
      ],
      "total": "100.00"
    }
  ],
  "totals": {
    "sum": "100.00",
    "total": "100.00",
    "taxes": {
      "categories": [
        {
          "code": "ST",
          "rates": [
            {
              "base": "100.00",
              "percent": "20%",
              "amount": "20.00"
            }
          ],
          "amount": "20.00"
        }
      ],
      "sum": "20.00"
    },
    "tax": "20.00",
    "total_with_tax": "120.00",
    "payable": "120.00"
  }
}
```

## Source

- Canonical page (human): https://www.invopop.com/invoice-comparator
- This document (markdown): https://www.invopop.com/invoice-comparator.md
- Site index for LLMs: https://www.invopop.com/llms.txt
- GOBL API: https://gobl.dev/v0
- GOBL source: https://github.com/invopop/gobl