> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gobl.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Peppol BIS Billing 3.0

Key: `peppol-bis-v3`

Module: [github.com/invopop/gobl.peppol](https://github.com/invopop/gobl.peppol)

Support for the Peppol BIS Billing 3.0 profile, the pan-European Peppol
specification built on EN 16931.

This addon layers the Peppol-specific business rules
(PEPPOL-EN16931-\*) on top of EN 16931. Rules already guaranteed by
EN 16931 or GOBL's calculation engine are not duplicated here, and
country-specific CIUS rules are handled by dedicated jurisdiction
addons.

## Sources

* [Peppol BIS Billing 3.0](https://docs.peppol.eu/poacc/billing/3.0/)
* [Peppol BIS Billing 3.0 UBL business rules](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/)

## Validation Rules

> **bill.Invoice**
>
> | Field | Test | Validation Code / Message |
> | - | - | - |
> | Invoice | <ul><li>Has buyer reference or purchase order</li></ul> | `GOBL-PEPPOL-BIS-BILL-INVOICE-01` Invoice must have a buyer reference or a purchase order reference (PEPPOL-EN16931-R003) |
> | Invoice | <ul><li>Line periods within invoice period</li></ul> | `GOBL-PEPPOL-BIS-BILL-INVOICE-03` Invoice line period must fall within the invoice period (PEPPOL-EN16931-R110, PEPPOL-EN16931-R111) |
> | `notes` | <ul><li>Length at most 1</li></ul> | `GOBL-PEPPOL-BIS-BILL-INVOICE-02` Invoice must not have more than one document-level note (PEPPOL-EN16931-R002) |
> | `ordering.projects` | <ul><li>Length at most 1</li></ul> | `GOBL-PEPPOL-BIS-BILL-INVOICE-04` Invoice must not have more than one project reference (PEPPOL-EN16931-R080) |
> | `supplier` | <ul><li>Has Peppol endpoint</li></ul> | `GOBL-PEPPOL-BIS-BILL-INVOICE-05` Invoice supplier electronic address is required (PEPPOL-EN16931-R020) |
> | `customer` | <ul><li>Has Peppol endpoint</li></ul> | `GOBL-PEPPOL-BIS-BILL-INVOICE-06` Invoice customer electronic address is required (PEPPOL-EN16931-R010) |

> **tax.Combo**
>
> | Field | Test | Validation Code / Message |
> | - | - | - |
> | `ext` | <ul><li>VATEX matches tax category</li></ul> | `GOBL-PEPPOL-BIS-TAX-COMBO-01` Tax category code must match the VATEX exemption reason code (PEPPOL-EN16931-P0104..P0111) |

> **pay.Instructions**
>
> | Field | Test | Validation Code / Message |
> | - | - | - |
> | `direct_debit` | <ul><li>Direct debit</li><li>Present</li></ul> | `GOBL-PEPPOL-BIS-PAY-INSTRUCTIONS-01` Direct debit details are required (PEPPOL-EN16931-R061) |
> | `direct_debit.ref` | <ul><li>Direct debit</li><li>Present</li></ul> | `GOBL-PEPPOL-BIS-PAY-INSTRUCTIONS-02` Direct debit mandate reference is required (PEPPOL-EN16931-R061) |

> **org.Endpoint**
>
> | Field | Test | Validation Code / Message |
> | - | - | - |
> | `uri` | <ul><li>Matches ^iso6523-actorid-upis::0088:</li><li>GS1 check digit</li></ul> | `GOBL-PEPPOL-BIS-ORG-ENDPOINT-01` GLN electronic address must have a valid GS1 format (PEPPOL-COMMON-R040) |

> **org.Identity**
>
> | Field | Test | Validation Code / Message |
> | - | - | - |
> | `code` | <ul><li>GLN identity</li><li>Matches ^\d13\$</li><li>GS1 check digit</li></ul> | `GOBL-PEPPOL-BIS-ORG-IDENTITY-01` GLN identifier must have a valid GS1 format (PEPPOL-COMMON-R040) |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.