Skip to main content

Getting Started

Playground

A GOBL Playground is available in our web app.

It allows you to input GOBL as JSON and see the resulting XML for our channels. A visual output is also available for easy debugging.

Debugging

If you want to debug why a certain document ended up being cast in a certain way, the GOBL and final XML can be viewed by going to the Outbox in the web app.

Examples

These examples are tested with NemHandel. The majority of the GOBL are compatible across channels. Payment instructions might require slight adjustments for each channel.

{
"$schema": "https://gobl.org/draft-0/bill/invoice",
"type": "standard",
"series": "2025",
"code": "1234",
"issue_date": "2025-04-25",
"currency": "DKK",
"supplier": {
"name": "Supplier ApS",
"tax_id": {
"country": "DK",
"code": "16356706"
},
"addresses": [
{
"street": "Østerbrogade",
"num": "123",
"locality": "Copenhagen",
"code": "2100",
"country": "DK"
}
]
},
"customer": {
"name": "Customer A/S",
"tax_id": {
"country": "DK",
"code": "55663322"
},
"addresses": [
{
"street": "Banegårdspladsen",
"num": "1",
"locality": "Aarhus C",
"code": "8000",
"country": "DK"
}
]
},
"tax": {
"ext": {
"untdid-document-type": "380"
}
},
"lines": [
{
"i": 1,
"quantity": "1",
"item": {
"name": "Software Development Services",
"price": "1000.00"
},
"sum": "1000.00",
"taxes": [
{
"cat": "VAT",
"key": "standard",
"percent": "25.0%"
}
],
"total": "1000.00"
}
],
"totals": {
"sum": "1000.00",
"total": "1000.00",
"taxes": {
"categories": [
{
"code": "VAT",
"rates": [
{
"key": "standard",
"base": "1000.00",
"percent": "25.0%",
"amount": "250.00"
}
],
"amount": "250.00"
}
],
"sum": "250.00"
},
"tax": "250.00",
"total_with_tax": "1250.00",
"payable": "1250.00"
},
"payment": {
"terms": {
"due_dates": [
{
"date": "2026-01-01",
"amount": "1250.00",
"currency": "DKK"
}
]
},
"instructions": {
"key": "credit-transfer",
"ext": {
"untdid-payment-means": "31"
},
"ref": "remitance-text",
"credit_transfer": [
{
"iban": "DK5000400440116243",
"bic": "ALBADKKK",
"name": "Arbejdernes Landsbank"
}
]
}
}
}

Bank details

Even though the GOBL standard allows for multiple payment methods and due dates, only one is currently supported.

IBAN details

{
"$schema": "https://gobl.org/draft-0/bill/invoice",
(...)
"payment": {
"terms": {
"due_dates": [
{
"date": "2026-01-01",
"amount": "1250.00",
"currency": "DKK"
}
]
},
"instructions": {
"key": "credit-transfer",
"ext": {
"untdid-payment-means": "31" // 31 = internional bank transfer
},
"ref": "remitance-text",
"credit_transfer": [
{
"iban": "DK5000400440116243",
"bic": "ALBADKKK",
"name": "Arbejdernes Landsbank"
}
]
}
}
}

BBAN details

Even though it seems a little odd, the BBAN details are put into iban and bic. They are cast to the right fields in XML.

{
"$schema": "https://gobl.org/draft-0/bill/invoice",
(...)
"payment": {
"terms": {
"due_dates": [
{
"date": "2026-01-01",
"amount": "1250.00",
"currency": "DKK"
}
]
},
"instructions": {
"key": "credit-transfer",
"ext": {
"untdid-payment-means": "42" // 42 = BBAN transfer
},
"ref": "remitance-text",
"credit_transfer": [
{
"iban": "1234567890", // BBAN account
"bic": "1234", // Bank ID (ie. sort code, reg-no, etc.)
"name": "Arbejdernes Landsbank"
}
]
}
}
}