Invoice delivery · SPF, DKIM & DMARC

Invoice email deliverability: SPF, DKIM and DMARC for invoices that actually arrive

Last updated 3 September 2026

An invoice sitting in a spam folder is not a small annoyance. It is an unpaid invoice, a chased email, and — once e-invoicing is mandatory — a compliance record you cannot prove you delivered. This is the practical guide: why invoice mail gets filtered, what SPF, DKIM and DMARC actually do, how to set a sender domain up properly, and how to verify it in about twenty minutes.

Why invoice emails get filtered in the first place

Look at your invoice email the way a spam filter does. It arrives from a machine, carries an attachment, states an amount of money, and asks the recipient to pay it into a bank account. That is a perfect description of an invoice — and a perfect description of invoice fraud, which is one of the most common attacks mailbox providers deal with.

Because the shapes are identical, filters lean almost entirely on one question: can we prove this mail really comes from the domain it claims? If the answer is no, the rest of your effort does not matter. The usual reasons invoices go missing:

The German angle: from 1 January 2025 every German business must be able to receive structured e-invoices, and from 1 January 2027 larger businesses must send them (2028 for the rest). Email is an accepted route — but the invoice only counts once it has actually reached the buyer. Deliverability quietly becomes part of compliance. See Germany's 2027 mandate for the dates and formats.

The three records, explained simply

SPF, DKIM and DMARC are three DNS records that together answer “is this sender legitimate?”. They are not alternatives — you want all three, and DMARC only means anything once the first two are right.

RecordWhat it answersWhere it lives
SPF Which servers are allowed to send mail for this domain? Checked against the envelope sender (the technical return address), not the visible one. A TXT record on your domain: v=spf1 include:… -all
DKIM Was this exact message signed by someone holding the domain's private key, and is it unmodified? Survives forwarding, which SPF does not. A TXT record at <selector>._domainkey.yourshop.de
DMARC Does SPF or DKIM pass for the domain in the From: header — and if not, what should the receiver do? Also requests reports back to you. A TXT record at _dmarc.yourshop.de

Alignment is the part people miss

Most “but we have SPF!” cases fail on alignment. A sending service often uses its own bounce domain, so SPF passes for mailer-example.net while your recipient sees [email protected]. Different domains, so DMARC treats the SPF pass as irrelevant. The fix is to authenticate your domain at the service: add its DKIM keys to your DNS (so DKIM signs as yourshop.de) and, where offered, set a custom return-path or bounce subdomain.

Reading a DMARC record

A reasonable starting record, then a reasonable end state:

Do not jump straight to p=reject. Shops typically send from more places than they remember — the store platform, an invoicing app, a helpdesk, a newsletter tool, an accountant's system — and enforcement without inventory means your own mail disappears.

Choosing the sender domain

Invoices should come from an address that is unmistakably yours and separate from your marketing:

One clarification specific to Shopify: authenticating your domain for Shopify's notification emails does not authenticate a third-party invoicing app. Each system that sends as your domain needs its own DKIM entry in your DNS, and each needs to be visible in your DMARC reports before you enforce.

Verify it in twenty minutes

  1. Look up what you publish today. dig +short txt yourshop.de and dig +short txt _dmarc.yourshop.de. One SPF record only — two is a permanent error, so merge them if you find two.
  2. Send a real invoice to a Gmail address you own, then open the message menu and choose Show original. You want SPF: PASS, DKIM: PASS and DMARC: PASS, and the domains beside SPF and DKIM should be your own.
  3. Repeat to a Microsoft 365 address, because most German B2B buyers are there rather than on Gmail. Check the Authentication-Results header and whether it landed in Junk.
  4. Open the attachment from the received mail, not from your own outbox — then validate it. A hybrid ZUGFeRD file that lost its embedded XML in transit still looks fine to a human.
  5. Turn on DMARC reports with a rua= address and read them for two weeks. Every legitimate sender should show up passing before you tighten p=.
  6. Check your bounces are visible to a person — or better, to software that flags the order so someone fixes the buyer's address.
“Delivered” is not one thing. Email gives you: accepted by the receiving server, bounced, or silence. Silence covers both “in their inbox” and “in their quarantine”. That is why an invoice trail worth having records the send, the bounce state and the file that went out — and why Peppol, where the receiving access point signs a hand-over receipt, is the stronger channel when your buyer supports it.

Why this is a compliance question, not a marketing one

Under the German rules a structured e-invoice may be transmitted by email; a Peppol connection is not required if the buyer agrees to that route. But two obligations outlive the send button. The invoice has to reach the buyer to do its job, and both parties must be able to produce it later — the structured file itself, unaltered, for the statutory retention period (currently eight years for invoices under German rules; confirm your own case).

So “we emailed it” is not an answer if the mail was quarantined and nobody noticed, and “we still have the PDF” is not an answer if the machine-readable XML is what counted. Deliverability and retention are the unglamorous half of e-invoicing compliance.

How Zeppol sends e-invoices reliably

Zeppol builds the invoice from your Shopify order as an EN 16931 document, Peppol BIS Billing 3.0 UBL, validates it before it leaves, and then treats delivery as a tracked step rather than a hopeful one:

And the honest boundary: Zeppol is not a tax suite and not an email marketing platform. It does not file your VAT returns, advise on your obligations, or run your campaigns — and it cannot edit your DNS for you. It gets a correct e-invoice to your buyer and keeps the record straight.

Go deeper

Frequently asked questions

Why do my invoice emails land in spam?

Nearly always because the receiving server cannot confirm you may send as your domain. An email with an attachment, an amount and a payment instruction looks like invoice fraud unless SPF and DKIM pass and align with the From: address. Attachments and a cold domain make it worse; authentication is what decides.

What is the difference between SPF, DKIM and DMARC?

SPF lists which servers may send for your domain. DKIM cryptographically signs each message and survives forwarding. DMARC ties both to the visible From: address and tells receivers what to do when neither passes — plus it sends you reports.

Do I need DMARC to send invoices?

No mandate requires it, but in practice yes: large mailbox providers expect authenticated mail, and DMARC is what stops others sending fake invoices in your name. Start at p=none, verify every legitimate sender in the reports, then move to p=quarantine and p=reject.

Subdomain or main domain for invoices?

Your own business domain, ideally a dedicated subdomain like invoices.yourshop.de. It stays recognisably yours while keeping invoice reputation separate from marketing mail.

Is an emailed ZUGFeRD invoice legally valid in Germany?

Yes — email is an accepted transmission route where the buyer agrees, and no Peppol connection is required. What matters is a valid EN 16931 document that genuinely reached the buyer and can be produced later, unaltered, for the retention period.

How do I check my own authentication?

Send an invoice to a Gmail address and use Show original — it shows SPF, DKIM and DMARC with the domain each applied to. Also read the Authentication-Results header at a Microsoft 365 address, and query dig txt yourshop.de and dig txt _dmarc.yourshop.de.

This guide is general information for Shopify merchants, not legal or tax advice. Mandate dates, retention periods and national rules change, and edge cases exist — confirm your own obligations with a qualified tax adviser.

E-invoices from your Shopify B2B orders

Zeppol turns every B2B order into an EN 16931 document, checks it against the EU and the German rules, and sends it over Peppol or by email. Join the list and I'll be in touch before the deadline.