At it’s core, GOBL is a set of JSON Schema definitions that describe business documents.

The base schema of GOBL is an Envelope.

An envelope acts as a wrapper around a document (doc property) with a special type called schema.Object that uses the embedded $schema property to determine what type of GOBL payload is being used.

Alongside the doc property inside an Envelope, you’ll find a head of type head.Header and array of signatures (dsig.Signature) which ensure that the data is verifiable with any additional properties that help describe the payload.

You can find all the pre-built GOBL JSON Schema in the repository’s data directory

Tax Regimes

One of the unique features of GOBL is the desire to create a global point of reference for all tax data worldwide.

The aim is to build a single resource that developers can use to determine what is required locally and incorporate these into their automated processes or UIs.

We have be realistic, the US tax system for example is a total mess and incredibly difficult to put into code, but for most countries around the world based on a VAT or GST system there is hope for trying to put the tax types, rates, and rules into a structured format.

Each tax regime in GOBL is defined in Go as structured data and automatically converted into JSON files that conform to the tax.Regime schema specification. Every regime is identified by a code based on the country they represent.