Stripe and Peppol
Take card payments on your invoices through your own Stripe account, turn every Stripe payment into an invoice without Stripe's invoicing fee, and send and receive on Peppol in early access.
Card payments on your own invoices
Choose Stripe as the way to get paid on a template, as a business's default, or on a single invoice, the same way you'd pick a bank account. The PDF then carries a Pay online link and a QR code instead of your bank details, and the link opens the shared invoice page with checkout already started. Your customer pays on Stripe's checkout page, straight into your Stripe account. No Stripe invoice is created, so you pay Stripe's usual payment fees without the 0.4% of every paid invoice that Stripe Invoicing charges on its Starter plan (0.5% on Plus).
Every Stripe payment, invoiced
Payments from Checkout, Payment Links or a payment form built on Stripe become invoices from the business you chose, for a customer matched from your list or created from the payment. In Review, the default, each draft waits in Needs attention on the Stripe page with Issue and send or Skip. Where Stripe Tax didn't calculate the tax, Expensicat does: an Estonian seller's payment from a German business becomes a reverse-charge invoice, and one from a US buyer becomes an export. If the invoice can't come out right (the buyer has no country, two customers share an email, or an Italian or Polish business hasn't set up SdI or KSeF), the payment is held with the reason in plain words and a Re-run for once you've fixed it.
What it doesn't do
Expensicat never moves money or issues refunds in Stripe, and the only thing it creates in your account is a checkout session when your customer clicks Pay. It skips payments Stripe already invoiced and payments where Stripe is the seller of record, and if it sees Stripe invoicing your Checkout payments, the Stripe page says so and links to the setting that turns that off. Disconnect an account and its pay links stop working, but nothing already issued changes. Stripe's balance, fees and payouts in Transactions, subscription invoices from Stripe Billing, and disputes aren't built yet.
Peppol, in early access
Expensicat now sends and receives invoices on Peppol, the network most of Europe uses to exchange structured invoices. It's in early access, switched on per workspace, and we're looking for early adopters, Belgian businesses above all. Structured invoices between Belgian VAT-registered businesses have been required since 1 January 2026, fines started on 1 April, and Peppol is the channel. We're also looking for early adopters whose customers or suppliers already ask for Peppol. Tell us and we'll switch it on for your workspace.
New15
- Invoicing
- Owners and admins can connect one or more Stripe accounts from Settings → Integrations → Stripe, on any workspace, each set to the business that invoices its payments
- Test-mode accounts connect too, labelled Test, and their payments never produce live invoices
- Choose card payment on a template, as a business's default, or on a single invoice, and the PDF carries a Pay online link and QR code in place of your bank details
- Your customer pays on Stripe's checkout page, straight into your Stripe account, and Expensicat takes no cut of the payment
- When the payment lands, the invoice is marked paid, your customer gets the paid copy by email as a receipt, and your team gets notified
- Every payment you take in Stripe, through Checkout, Payment Links or a payment form built on Stripe, can become an invoice dated the day it was paid
- Choose Off, Review or Automatic for each account, and in Review, the default, each payment prepares a draft you issue or skip
- The invoice total always equals what your customer paid, to the cent, and a payment that can't be invoiced correctly is held with the reason in plain words
- Invoices from Stripe payments go out on the channel the law requires for that seller and buyer, whether that's a PDF by email, Factur-X or Peppol
- A full or partial refund in Stripe becomes a credit note for the refunded amount, sent the same way the invoice was
- Send and receive invoices on Peppol, in early access and switched on per workspace
- Setup registers your business on the Peppol network, and tells you if your Peppol ID is already registered with another provider instead of failing silently
- Check a customer's Peppol address from the customer sheet with Verify on Peppol, which asks the network whether they can receive invoices
- Compliance
- Invoices use Stripe Tax's rate when Stripe calculated the tax, and otherwise Expensicat works it out from both countries and whether the buyer gave a VAT number
- Inbox
- Invoices sent to you on Peppol arrive in your inbox marked Received via Peppol, with a readable PDF and the original file attached
Improvements5
- Invoicing
- The shared invoice page is drawn by the same components as the editor, so your customer sees what you built, with line items as cards on a phone and a table when there's room
- One bar at the bottom of the shared page holds Pay with the amount, download and copy link, and shows how long ago your customer viewed the invoice
- Credit notes have their own detail view and read as credit notes everywhere, marked Issued instead of Unpaid, with no Mark as paid and no reminders
- An invoice that was credited says so and links to its credit note, in the invoice list, the details and its history
- Invoice emails switched to a light design, because Gmail on phones inverted the dark ones and made them hard to read
Fixes1
- Compliance
- Invoices to Belgian consumers go out as a PDF by email instead of being refused for lacking a Peppol address, and Polish consumers got the same fix because KSeF also covers businesses only