Automated branded email receipts for Paddle billing webhooks
Transform raw Paddle transaction.completed webhooks into pixel-perfect, branded React Email receipts. Handle EU VAT reverse-charges, multiple currencies, and invoice links automatically with 6,000 free monthly emails.
Live Webhook-to-Receipt Simulator
Select a Paddle webhook event to inspect the raw JSON payload and see the rendered branded React Email receipt.
{
"event_type": "transaction.completed",
"event_id": "evt_01jm94bvc1e888",
"data": {
"id": "txn_01jm94bv8d999",
"status": "completed",
"customer": {
"email": "alex@startup.de",
"name": "Alex Weber"
},
"currency_code": "EUR",
"details": {
"totals": {
"subtotal": "32.77",
"tax": "6.23",
"total": "39.00"
},
"tax_rates_used": [
{
"rate": "0.1900",
"description": "Germany Standard VAT"
}
]
},
"items": [
{
"price": {
"description": "Growth Tier Subscription"
},
"quantity": 1
}
]
}
}Why SaaS teams use SadaSend for Paddle billing webhooks
Branded React Email Receipts
Ditch plain-text default receipts. Render responsive React Email templates with custom logos, transaction IDs, and clean VAT itemization.
EU VAT & Tax Compliance
Automatically reflects Paddle’s Merchant of Record tax IDs, reverse-charge European VAT rates, and country-specific receipt mandates.
Constant-Time HMAC Verification
Validate Paddle webhook signatures using crypto.timingSafeEqual, neutralizing timing side-channel attacks before processing event data.
Sub-15ms Ingestion Latency
Webhook handlers complete in milliseconds without buffering or queue latency, ensuring customers receive receipts immediately after checkout.
Four simple steps to automated Paddle receipts
Register Webhook Endpoint in Paddle
In your Paddle Dashboard (Developer Tools → Notifications), add an HTTPS webhook destination pointing to /api/webhooks/paddle and select transaction.completed.
Verify Paddle HMAC Webhook Signature
Extract the paddle-signature header and verify the SHA-256 HMAC digest against your PADDLE_WEBHOOK_SECRET using constant-time comparison.
Render Responsive React Email Receipt
Pass event.data (currency, amount, tax breakdown, invoice link) into your <ReceiptEmail /> template for automated HTML composition.
Dispatch with SadaSend API
Submit the rendered HTML payload to SadaSend using your API key. Enjoy sub-15ms delivery and full tracking telemetry.
Production webhook handlers with HMAC verification
import { NextRequest, NextResponse } from 'next/server';
import crypto from 'node:crypto';
import { SadaSend } from 'sadasend';
import { render } from '@react-email/render';
import { ReceiptEmail } from '@/emails/ReceiptEmail';
const sadasend = new SadaSend({ apiKey: process.env.SADASEND_API_KEY! });
export async function POST(req: NextRequest) {
const signature = req.headers.get('paddle-signature') || '';
const rawBody = await req.text();
// 1. Verify Paddle webhook HMAC signature
const hmac = crypto.createHmac('sha256', process.env.PADDLE_WEBHOOK_SECRET!);
const digest = hmac.update(rawBody).digest('hex');
// Constant-time comparison prevents timing attacks
const isValid = crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(digest)
);
if (!isValid) {
return NextResponse.json({ error: 'Invalid webhook signature' }, { status: 401 });
}
const event = JSON.parse(rawBody);
// 2. Process successful payment receipt
if (event.event_type === 'transaction.completed') {
const { customer, details, currency_code } = event.data;
// 3. Render responsive React Email
const emailHtml = await render(
<ReceiptEmail
customerName={customer.name}
amount={details.totals.total}
currency={currency_code}
items={event.data.items}
/>
);
// 4. Dispatch via SadaSend API
await sadasend.emails.send({
from: 'billing@yourdomain.com',
to: customer.email,
subject: `Your Receipt for Order #${event.data.id}`,
html: emailHtml,
});
}
return NextResponse.json({ received: true });
}Frequently asked questions about Paddle email delivery
Upgrade your SaaS billing receipts with Paddle and SadaSend
Start free with 6,000 monthly emails. Sub-15ms webhook execution, branded React Email templates, and full EU VAT compliance.