Paddle

Paddle takes one-time card payments for web-shop orders at its own checkout. Each firm holds its own keys; nothing is shared.

Setup

  1. In the Paddle dashboard, create an API key allowed to create transactions and adjustments. With Mode set to sandbox, the shop speaks to Paddle's sandbox automatically.
  2. Under Checkout settings, configure the default payment link — without it Paddle cannot host the checkout, and the shop refuses the payment cleanly instead of redirecting nowhere.
  3. Add a notification destination (webhook) pointing at https://your-site/payment/notify/paddle/, subscribed to transaction.completed and the adjustment events; copy its secret (pdl_ntfset_…).
  4. On this screen, enable the gateway and paste the API key and the webhook secret (write-only), pick the mode, and — if your goods are not standard-rated — the Paddle tax category.

How it completes

The signed transaction.completed webhook is the truth: it records the payment on the order exactly once. The customer's return is a courtesy check when it carries a transaction reference.

Who invoices the customer

Paddle is a merchant of record: the customer buys from Paddle, Paddle issues the invoice with the VAT of the customer's country, collects it, handles refunds under its own buyer terms, and pays your firm out later. Towards the customer, Paddle is the seller; your firm sells to Paddle.

Therefore, for an order Paddle paid, the platform issues no invoice of your own. The order stands paid, the goods and licences go out exactly as for any paid order, and the customer receives the payment mail naming Paddle as the seller of record with a link to the Paddle customer portal, where their invoice lives. The order page and the customer account show the same link where your PDF would otherwise be.

Paste the portal link (https://customer-portal.paddle.com/cpl_…, from the Paddle dashboard) into Customer portal link on this screen. The rule holds without it; the link is what lets the customer find the document without asking you.

Since 2026-09-08 the customer account does better than the shared link: Orders & invoices carries a card Invoices and payment details whose button opens Paddle's portal for that customer. The platform asks Paddle for a portal session by the signed-in address (the account's, then the contact record's) — resolved on the server, never taken from the browser — and sends the customer to the URL Paddle answers. The lookup creates nobody at Paddle; a customer Paddle does not know yet gets the shared link, or nothing. Invoices, payment details and cancellations are managed there, hosted by Paddle.

Why not both

Before 239 the platform converted every card-paid order into the firm's invoice and mailed it. A Paddle buyer would have received two invoices for one purchase — one of them from a seller who, legally, did not sell to them, without the VAT Paddle had already charged. Bank transfers and Stripe are different: there your firm is the seller and its invoice is the right one, so those roads are unchanged.

Your own accounting sees Paddle's payout statements — one supply of services to Paddle per payout, not one invoice per customer. Confirm the treatment with your accountant.

Refunds

Paddle reviews most refunds. A refund request is submitted and the payment notes it awaits approval; when Paddle approves, the webhook records the refund. The record never claims money moved before it did.

Tags
commercepaymentspaddle