Post-purchase upsells: automatic supplementary invoices
A one-click upsell after checkout adds items to an order that has already been paid and invoiced, and takes a second payment for them. The first invoice must not be changed. Rechnungskit spots the grown order, matches the second payment to the open difference to the cent, and automatically creates a supplementary invoice (Nachtragsrechnung) for exactly the items added, with its own invoice number.
Two payments, two documents. Your first invoice stays untouched in the GoBD archive, and the upsell gets its own clean invoice.
Writing invoices is easy. Writing compliant ones is not.
The difference between a PDF and a compliant e-invoice matters at the next tax audit. Rechnungskit closes exactly this gap.
Four steps to a compliant e-invoice.
- 01The customer buys more in the funnelAfter checkout, your upsell plugin (for example FunnelKit UpStroke or CartFlows) shows a one-click offer. The customer accepts without entering payment details again. The plugin adds the item to the existing WooCommerce order and charges the stored payment method a second time.
- 02Rechnungskit spots the grown orderWooCommerce reports the changed order through a signed webhook. Rechnungskit compares the current line items with the invoice lines already billed and works out the difference not yet invoiced. The order of events does not matter: if the payment arrives before the order update, it waits and is matched again automatically when the update comes in.
- 03The supplementary invoice is created automaticallyIf the second payment matches the open difference to the cent, the supplementary invoice is created: its own sequential invoice number, only the items added, the note "Supplement to order" and, if you want, automatic sending to the customer. If something does not match exactly, no invoice is created on a guess. You get a clear task with the reason instead.
- 04Archive and DATEV stay cleanly separatedBoth invoices sit in the GoBD archive, protected against changes. The DATEV export contains two separate pairs of revenue and payment entries, each with the matching document field. A later refund of the upsell item corrects the supplementary invoice, not the original one.
One-click upsells change the order after the purchase
Post-purchase upsells are among the most effective levers for average order value. Right after checkout, the shop shows an extra offer, the customer accepts with one click, and the stored payment method is charged a second time. Plugins such as FunnelKit UpStroke or CartFlows add the item to the existing WooCommerce order by default.
For bookkeeping, that is exactly the problem: the order grows after the first invoice has long been created and sent. A typical PDF plugin only knows the current state of the order. It overwrites the old invoice with the new total or ignores the second payment entirely. Your tax advisor (Steuerkanzlei) will notice either way: a payment without a document, an order for €36.58, an invoice for €23.59.
The supplementary invoice is the clean way
Once issued, an invoice in the GoBD archive cannot be changed. Entries and records must not be altered in a way that makes the original content impossible to determine (§ 146(4) AO, the German Fiscal Code), and the invoice has to be kept intact for eight years (§ 14b(1) UStG). For the item added afterwards there are three conceivable routes, and only one of them is clean:
| Route | Assessment |
|---|---|
| Change the first invoice afterwards | Breaches GoBD. The customer also already has the original. |
| Cancellation plus a new full invoice | Allowed but unnecessary: confuses customers, adds document noise and, with business customers, carries a § 14c risk if cancellation and reissue drift apart. |
| Supplementary invoice for the difference | A document of its own with its own number for exactly the items added. Together, both invoices add up to the order exactly. |
The supplementary invoice follows the same logic as progress and final invoices: each document only bills the part not yet billed. Since the upsell is commercially a separate contract anyway (new offer, new acceptance, its own payment), the second invoice is the natural way to record the transaction. The invoice correction playbook shows which correction fits which other error, from a wrong address to a partial refund.
How Rechnungskit detects the upsell automatically
Every time an order changes, Rechnungskit compares the current line items with the invoice lines already billed. The first invoice serves as a frozen reference: what is on it has been billed, and whatever was added since is the open difference.
The second payment is checked against that difference to the cent. Only an exact match creates the supplementary invoice, automatically with the note "Supplement to order" and, if you want, sent to the customer by email. In every other case, Rechnungskit deliberately creates no document on a guess and gives you a task with the specific reason. The order of the webhooks does not matter either: if the Mollie or Stripe payment arrives before the WooCommerce update, it waits and is matched again automatically when the update comes in.
Shipping costs: agreed once, billed once
The shipping costs of the original order were agreed with the first purchase and billed on the first invoice as an ancillary supply, split correctly when VAT rates are mixed. The upsell does not change that: if the item travels in the same parcel at no extra charge, the supplementary invoice carries no shipping costs.
If your shop charges extra shipping for the upsell, exactly that extra amount appears on the supplementary invoice and is assigned to the added items as an ancillary supply.
What your tax advisor sees in the DATEV export
Two payments, two documents, two clean pairs of entries: the DATEV export contains a revenue entry for each of the two invoices and a payment entry for each of the two payments, each with the matching document field. Open items lists balance because every payment is assigned to exactly its invoice.
Corrections stay clean too. If the customer later returns only the upsell item, the cancellation corrects the supplementary invoice, not the original one. Every change to an invoiced order is also recorded in the log that you and your tax advisor can both see.
A note on the plugin settings
FunnelKit offers three behaviors for accepted upsells: add to the existing order, create a separate new order, or cancel the original order and replace it. The first two work with Rechnungskit fully automatically: adding creates the supplementary invoice, and a separate order simply gets its own ordinary invoice.
We advise against the "Cancel and Replace" mode. It cancels an order that was paid correctly, which inevitably creates a correction document plus a new full invoice. That is allowed, but it creates needless document noise for customers and your tax advisor.
FAQ
Rechnungskit is not a tax advisory or law firm. This article explains general principles and does not replace advice from a tax advisor (Steuerberater, § 5 StBerG) or a lawyer (§ 3 RDG). Rechnungskit is built for businesses based in Germany and prepares documents, tax rates and bookings automatically. How your specific case is treated remains your decision, ideally together with your tax advisor or a lawyer.
Ready for the e-invoicing mandate?
Create an account, connect your payment provider, check everything in free test mode. Billing starts when you go live.
Try it now