E-invoicing for accounts receivable
Supported countries
Monite currently supports e-invoicing for entities and counterparts from:
- 🇧🇪 Belgium
- 🇩🇪 Germany
- 🇳🇱 Netherlands
Need other countries? Let us know.
Peppol participant identifiers
To exchange electronic documents using the Peppol network, companies must be registered in Peppol. The Peppol participant ID includes the scheme and ID number.
Monite supports the following participant ID schemes:
How to create and send an e-invoice
Creating e-invoices in Monite is similar to creating regular invoices, with a few key differences.
One of the differences is that e-invoices go through additional statuses - issuing
and (optionally) failed
.
draft
and newly created invoices can be sent as e-invoices. Already issued invoices cannot be resent as e-invoices.Before you begin
This guide assumes that:
- Both the entity and the counterpart:
- are from the supported countries,
- are registered in the Peppol network.
- The entity has completed e-invoicing onboarding in Monite.
1. Add counterpart e-invoicing details
Before creating an e-invoice, you must specify the Peppol ID of the counterpart.
Assuming the counterpart already exists in Monite, call POST /counterparts/
and provide the counterpart’s scheme name and code (VAT number or business number, depending on the scheme). For example:
Alternatively, if the counterpart has a VAT ID defined, Monite can look up their Peppol ID automatically based on their VAT registration.
In this case, provide the UUID of the counterpart’s VAT ID when calling POST /counterparts/
:
In any case, the API call returns Monite id
assigned to the counterpart’s Peppol identifier.
Note down this id
- you will need it later when creating e-invoices for this counterpart.
2. Create an e-invoice
Create a new draft invoice in the usual way, but with the following additional fields:
Example:
draft
status, you can change its is_einvoice
field to turn e-invoicing on or off for this invoice.The response returns the full invoice data, along with the Peppol identifier details of the entity and counterpart:
3. Send an e-invoice
POST /receivables/{receivable_id}/verify
to make sure all required fields are filled in.After a draft invoice has been finalized, call POST /receivables/{receivable_id}/issue
to send the e-invoice through the e-invoicing network.
When an invoice has is_einvoice
=true
, the /receivables/{receivable_id}/issue
endpoint works as follows:
-
The invoice is moved from the
draft
toissuing
status, and thereceivable.issuing
webhook is triggered. -
Monite attemts to send the document to the counterpart through the e-invoicing network.
-
If the e-invoice is successfully sent:
- The
/issue
endpoint returns 200 OK. - Invoice status becomes
issued
and thereceivable.issued
webhook is triggered. - The rest of the invoice lifecycle applies as usual.
- The
-
If the invoice failed to be sent via e-invoicing:
- The
/issue
endpoint returns a 4xx error. - The error message from the e-invoicing network is saved to the
einvoice_error_comment
field of the invoice. - Invoice status becomes
failed
and thereceivable.failed
webhook is triggered.
- The
Credit notes and e-invoicing
Credit notes inherit e-invoicing details (such as the counterpart’s Peppol identifier) from the invoice they are based on. If the original invoice was configured for e-invoicing delivery, the credit note will also be sent via e-invoicing, and vice versa.
Like e-invoices, credit notes go through additional statuses when sent via e-invoicing.
Test e-invoicing
In the Sandbox environment, send e-invoices and credit notes to the following test counterpart:
- Country: Germany
- Network scheme:
DE:VAT
- Network identifier:
087095777
- Other details: any
Attempts to send documents to other counterparts will result in the “No action taken” error from POST /receivables/{receivable_id}/issue
.
Limitations
- Units of measure in e-invoices are sent as the generic
C62
code (one, unit). - E-invoicing webhooks
receivable.issuing
andreceivable.failed
are not triggered in the Sandbox environment.