InvoiceSnap data API

A free, keyless, read-only JSON API covering invoice requirements per jurisdiction, currency formatting rules and invoice numbering formats. No account, no API key, no rate limit, CORS open to any origin. Every payload carries a version, a last-updated date, a licence and a source, and every legal value carries the authority that publishes it and the date it was read.

Version 1.1.0, updated 2026-08-14. Licensed CC BY 4.0.

Quick start

curl https://invoicesnap.net/api/index.json

That is the whole authentication story. Every endpoint below responds to a plain GET with Content-Type: application/json and Access-Control-Allow-Origin: *.

Endpoints

/api/index.json

Index of every endpoint, plus the terms of use.

{
  "version": "1.1.0",
  "lastUpdated": "2026-08-14",
  "license": { "name": "Creative Commons Attribution 4.0 International", ... },
  "source": { "name": "InvoiceSnap", "url": "https://invoicesnap.net", ... },
  "endpoints": [ ... ]
}

/api/currencies.json

Supported currencies with symbol, symbol spacing and decimal places.

{
  "count": 10,
  "currencies": [
    { "code": "USD", "name": "US Dollar", "symbol": "$", "decimals": 2 },
    { "code": "JPY", "name": "Japanese Yen", "symbol": "¥", "decimals": 0 }
  ]
}

/api/invoice-number-formats.json

The four common numbering schemes, with pattern, examples and the three rules that matter more than the format.

{
  "count": 4,
  "formats": [
    {
      "id": "year-prefixed",
      "name": "Year-prefixed",
      "pattern": "{YYYY}-{n:3}",
      "example": ["2026-001", "2026-002"],
      "bestFor": "Anyone who wants the year visible at a glance."
    }
  ]
}

/api/invoice-requirements.json

Every jurisdiction we have researched, with the publisher, URL and retrieval date attached to each individual field.

{
  "count": 10,
  "jurisdictions": [
    {
      "slug": "united-kingdom",
      "taxName": {
        "value": "VAT",
        "source": { "publisher": "HMRC", "title": "...", "url": "...", "retrievedAt": "..." }
      }
    }
  ]
}

/api/invoice-requirements/{countryCode}.json

A single jurisdiction, by lower-case country code.

curl https://invoicesnap.net/api/invoice-requirements/gb.json

The four fields every payload carries

Top-level envelope fields present on every InvoiceSnap API response
FieldWhat it tells you
versionSemantic version of the payload shape. A breaking change to the shape bumps the major number.
lastUpdatedWhen the dataset as a whole last changed. Individual values additionally carry their own retrievedAt.
licenseCC BY 4.0, with the attribution string we would like if you reuse it.
sourceWhere the data came from, plus links to the documentation and the methodology behind it.

Those four exist because a dataset without them does not get cited. A number with no provenance and no date is something you have to verify yourself anyway, at which point you may as well have looked it up at the source.

How to read a sourced field

Fields in the jurisdiction dataset are not bare values. Each one is an object with the value and its provenance:

"retentionYears": {
  "value": { "years": 7, "note": "..." },
  "source": {
    "publisher": "Belastingdienst",
    "title": "Hoe lang moet u uw administratie bewaren voor de btw: 7 of 10 jaar?",
    "url": "https://www.belastingdienst.nl/...",
    "retrievedAt": "2026-08-14"
  }
}

If a field is absent, it means we could not confirm it against a primary source, so we did not publish a value. Absence is not a claim that no rule exists. Handle missing fields rather than assuming a default, and see the methodology for what disqualifies a value from publication.

Stability and changes

Building something with this

InvoiceSnap is built and maintained by FusionStudios, a web design studio in the Netherlands. If you are putting this data into a product and want the surrounding tool, widget or content structure built properly, see what FusionStudios builds. If you just want to tell us you are using it, the contact form is fine.

Frequently asked questions

Do I need an API key?

No. There is no key, no account, no rate limit and no dashboard. Every endpoint is a static JSON file on a CDN with CORS open to any origin, so you can fetch it straight from a browser.

Why is there no endpoint that generates a PDF?

Because rendering a PDF on a server means invoice data leaving the browser, and that is the one thing this site promises never to do. Competing APIs do offer it, behind an account and a monthly quota. This is a data API instead: it publishes the facts, and your own code does whatever it wants with them. It is a different product, not a smaller version of theirs.

Can I use this commercially?

Yes, under Creative Commons Attribution 4.0. Attribution with a link back is requested and is the only thing asked in return. There is no commercial tier and no usage that requires permission.

How current is the data?

Every field carries its own retrieval date, so you can check the age of any individual value rather than trusting one timestamp for the whole file. Records are reviewed at least annually and immediately when an authority publishes a change. Read the retrievedAt field rather than assuming freshness.

Should I poll these endpoints?

No. They are static files that change on the order of months. Fetch them at build time or cache them for a day. Polling gets you the same bytes back and slows your own application down.

Can I rely on this for tax compliance?

No, and neither should you rely on any single source for that. This is reference data assembled from published government pages, with a link to each one so you can verify it. For a decision that carries real consequences, verify against the linked authority or ask an accountant.