Blocked invoices, and how to clear them

An invoice that was legally required and gets refused by the receiver is a failed job, so Zeppol checks before it sends and stops when a check fails. A stopped invoice is never thrown away: it waits in the exceptions inbox with the reason it stopped and the field that clears it.

Zeppol showing why an order produced no invoice, naming the rejected VAT number

How to read a stopped row

Every stopped invoice carries two things, and they do different jobs. The code is machine vocabulary: it is what the inbox filters, counts and groups on, and it is deliberately not pleasant to read. The sentence names the field, setting or record to change. Neither replaces the other, so both are always shown.

Alongside those, the row shows what the engine actually observed on that one order, for example the specific VAT number that VIES rejected. Fix the cause, then send the invoice again from the same row.

Every reason, and what clears it

27 of them. This table is generated from the same strings the app shows you, so it cannot fall out of date with the product.

The shape of the order

Nothing wrong with your settings. This order is not something an invoice can be made from.

CodeWhat it means, and what to do
NO_LINES
No invoice lines
The order has nothing to invoice. Check the order in Shopify still has line items.
NEGATIVE_LINE
Negative line
A line has a negative amount. A refund or correction is a credit note, which Zeppol does not issue automatically yet.
NON_EUR_CURRENCY
Currency not EUR
The order is not in euros. Zeppol invoices in EUR only in this version.

Who the buyer is

An e-invoice has to name the buyer as a legal entity, and address them. Most of these are one field on the customer record.

CodeWhat it means, and what to do
MISSING_BUYER_COUNTRY
Buyer country missing
The buyer has no country, so the VAT treatment cannot be decided. Add the country to the billing address on the order.
MISSING_BUYER_VAT
Buyer VAT number missing
A business buyer needs a VAT number on the invoice. Ask the buyer for it and add it to the customer record.
INVALID_BUYER_VAT_FORMAT
Buyer VAT number malformed
The buyer's VAT number does not match the format its country uses. Correct it on the customer record.
MISSING_BUYER_COMPANY_NAME
Buyer company name missing
An invoice must name the buyer as a legal entity. Add the company name to the customer or the billing address.
VIES_INVALID
VAT number rejected by VIES
The EU VIES service says this VAT number is not valid. Confirm it with the buyer before invoicing.
MISSING_PEPPOL_ID
Peppol id missing
No Peppol participant id could be worked out for the buyer. Add the buyer's VAT number, or their Peppol id if they gave one.

The VAT

The half that decides whether a receiving system accepts the document. Zeppol refuses to send an invoice whose numbers do not add up.

CodeWhat it means, and what to do
REVERSE_CHARGE_VAT_CHARGED
VAT charged on a reverse-charge order
This is a cross-border B2B order, so VAT should not be charged. Correct the tax settings for this buyer, then re-check.
REVERSE_CHARGE_VAT_UNVALIDATED
Reverse charge on an unchecked VAT number
Reverse charge was applied but the buyer's VAT number has not been confirmed valid. Confirm the VAT number before this goes out.
TOTALS_MISMATCH
Totals do not add up
The line totals and the order total disagree. Check the order for a discount or refund Zeppol could not read.
BALANCE_CHECK_FAILED
Internal balance check failed
Net plus VAT plus rounding did not equal the gross amount, so the invoice was not issued. Send this one to [email protected].

Who you are

Your own details, from Seller details. These block every invoice until they are filled in, so they usually appear once and never again.

CodeWhat it means, and what to do
MISSING_SELLER_NAME
Your legal name missing
Fill in your registered company name under Seller details.
MISSING_SELLER_ADDRESS
Your address missing
Fill in your street, postcode, city and country under Seller details.
MISSING_SELLER_TAX_ID
Your tax number missing
Fill in your VAT identification number or tax number under Seller details.
MISSING_SELLER_CONTACT
Your contact details missing
Fill in the contact email and phone number under Seller details.
MISSING_SELLER_REGISTER_SCHEME
Register type missing
A Dutch invoice must say whether your register number is a KVK or an OIN number. Choose one under Seller details.

Fields the document is missing

Required by law or by the buyer, and not derivable from the order.

CodeWhat it means, and what to do
MISSING_SUPPLY_DATE
Supply date missing
German law requires the date the goods or services were supplied. Zeppol takes it from fulfilment — fulfil the order, then re-check.
MISSING_BUYER_REFERENCE
Buyer reference missing
This buyer requires a reference (often a purchase order number) on the invoice. Ask them for it and put it on the order.

The official rule sets

The EN 16931 and German Schematron rules, run against the finished document before it is sent.

CodeWhat it means, and what to do
SCHEMATRON_FATAL
Rejected by the invoice rules
At least one official EN 16931 or German rule refused this document. The failing rule ids are in the detail below.
VALIDATION_INCOMPLETE
Could not be checked
The rule set could not be run, so this invoice is unvalidated rather than known-good. Nothing was sent. Try again later.

Getting it out of the door

The document is fine. The route is not.

CodeWhat it means, and what to do
RECIPIENT_UNREACHABLE
Buyer not reachable on Peppol
The buyer is not published on the Peppol network for this document type. Ask them for their Peppol id, or send by email instead.
NO_DELIVERY_CHANNEL
No delivery channel enabled
Turn on Peppol delivery, email delivery, or both in your Zeppol settings.
PLAN_LIMIT_REACHED
Plan limit reached
Your plan's documents are all used up, so this invoice was not sent. Choose a paid plan on Shopify, then send this invoice again.

Reading the order from Shopify

Rare, and none of them are your fault. Both of these want an email to support.

CodeWhat it means, and what to do
LINE_ITEM_LIMIT_EXCEEDED
Order too large to read in full
This order has more line items than Zeppol can read in one go. Invoicing part of it would understate the total, so nothing was issued. Send this one to [email protected].
ORDER_SCOPE_MISSING
Zeppol lacks a permission
Shopify refused a field this invoice needs. Reinstall or reauthorise Zeppol so it can read the whole order.

Skipped is not stopped

Some orders produce no invoice because none is owed. Those are marked as skipped, and nothing is waiting on you. They are kept separate from blocks on purpose: “Zeppol decided not to invoice this” and “Zeppol tried and could not” are opposite facts, and they used to look identical.

CodeWhy no invoice was issued
ELIGIBLE
In scope
This order is one Zeppol invoices. If no invoice is shown here yet, it has not been built.
B2C_OUT_OF_SCOPE
Consumer sale
The buyer is a private individual, so no e-invoice is owed and none was issued. Nothing is waiting on you.
NON_EU_EXPORT
Outside the EU
The buyer is outside the EU VAT area, which is outside Peppol's scope, so no e-invoice was issued. Check the export treatment on your own paperwork.
REFUND_CREDIT_NOTE
Refund
This order was refunded. A refund is a credit note, which Zeppol does not issue automatically yet, so nothing went out for it.

Why nothing is retried automatically

When a send to the Access Point times out or returns an error, Zeppol parks the invoice for review instead of trying again. The reason is specific rather than cautious: the Access Point's send endpoint accepts no idempotency key and mints the document id on its own side, so a retry after a timeout can put a second legally valid copy of the same invoice onto the Peppol network with no way to tell which one arrived.

A parked invoice is reconciled by its invoice number, which is the one identifier both sides share. This is the single most important reason Zeppol would rather stop than guess.

Something missing here?

Write to me. Anything asked more than once ends up on this page.