- Author
Dominik Göger
- Module version 1.0.0
- Release date 09/09/2026
- Access to download and updates
1 year
|
- How to contact support support@goeger-it.de
- Compatibility Dolibarr
V18 - V24
- PHP7.4 - 8.3
- Last update 09/09/2026 06:48 PM
|
More info...
Your customer does not read email. The invoice has to go out on paper. Today that
means printing it, folding it, finding an envelope, buying a stamp and walking to
a postbox — for a document Dolibarr already produced perfectly well as a PDF.
This module hands that PDF to [LetterXpress](https://www.letterxpress.de/), a
German letter service, straight from the document page. They print it, fold it,
frank it and post it. You stay in Dolibarr.
THE PART THAT MAKES THIS SAFE
The LetterXpress API has no address field. LetterXpress reads the recipient
address out of the PDF itself, from the DIN 5008 address window. That is normal
for letter services — and it is also where things quietly go wrong, because a
template that places the address a few millimetres off produces a letter that is
printed, franked and never delivered. You find out weeks later, if at all.
So this module does not just send. Before anything is charged, it submits the
letter in LetterXpress test mode, which parks it in their postbox instead of
printing it, and asks them what they actually read. You then see, side by side:
- the address LetterXpress parsed out of your PDF
- the address Dolibarr holds for that customer
- the page count, the price, the VAT and your account balance
Only then do you confirm. If the two addresses disagree, you get a warning before
a cent is spent — not a returned envelope a fortnight later.
The comparison is deliberately strict. It matches whole words, so "Meier" does not
count as a match for "Meiersberg GmbH" and house number 1 does not match number 12.
Fields written in a script the comparison cannot read — Cyrillic, Greek, Turkish —
are reported as *unverifiable* rather than as a match, so an international
recipient never produces a false all-clear.
IF THE CONNECTION DROPS MID-SEND
Then nobody knows whether LetterXpress accepted the letter. Sending again would
post it twice and charge you twice; giving up would abandon a letter that was
actually accepted.
The module writes its record with a random token *before* it submits, and that
token travels with the letter. The scheduled job later searches for it and
establishes what really happened. Until it does, the module tells you not to
resend. A double click on the confirm button is caught the same way.
AFTER SENDING
Every dispatch is recorded against the document: job number, options, page count,
cost, the address that was checked, and the delivery status with the tracking code
once LetterXpress reports it. A scheduled job keeps that up to date. There is a tab
on every document and a log of everything under Tools.