An invoice we accept normally confirms delivery in seconds. When it does not, you used to hear nothing at all: the document stayed "submitted" for as long as it took, and the only way to find out was your own timer. An absence is a poor signal — it looks exactly like work still in progress.
Two new notifications close that gap.
What changed
- New webhook event
invoice.delivery_unconfirmed. Sent 30 minutes after a send when no delivery evidence has arrived. This is not a failure. If delivery is confirmed afterwards,invoice.sentfollows normally and supersedes it — so treating it as terminal would be a misread. It exists so that the silence reaches you from us rather than from a clock on your side. - A document still silent after 7 days is now reported. It ends on the
existing
invoice.undeliverableevent. That seven-day window is our own policy, not a verdict from the network: the Peppol network never tells us a document is dead, so we stopped waiting on your behalf and say so. If evidence turns up later, the document goes back to delivered on its own.
Both events reach wildcard (*) subscribers automatically. Add them to your
explicit filters if you subscribe per-event.
Anything breaking?
No runtime breaking change, and nothing your existing subscriptions stop receiving. Two notes:
- Wildcard subscribers see a new event type. If your handler rejects unknown
types, add a case for
invoice.delivery_unconfirmedbefore it reaches you. - TypeScript users: the SDK's
WebhookEventTypeunion gains a member, so an exhaustiveswitchneeds a newcase "invoice.delivery_unconfirmed"when you upgrade.
If you already build on invoice.undeliverable, be aware it now covers a second
situation — an expired evidence window, not only a recipient that cannot be
found. The payload shape is unchanged.