Paddle
Merchant of Record platform handling payments, tax, and compliance for SaaS businesses globally
Pick Paddle when you want to sell software globally without handling tax compliance, VAT filings, or chargeback disputes — the higher fee buys complete peace of mind for solo founders and small teams.
◆ Simple
200+ countries (buyers)
5% + 50¢
Paddle is a Merchant of Record (MoR) platform founded in 2012 that acts as the seller on behalf of software businesses — handling payments, global tax collection and remittance, compliance, invoicing, and chargeback protection. Unlike traditional payment processors, Paddle takes on full legal and financial liability for each transaction, covering VAT/GST/sales tax in 100+ jurisdictions automatically. It supports 200+ countries for buyers with 29+ currencies.
Last full audit: April 13, 2026
Trust Score Breakdown
Account Stability
72/100As MoR, Paddle has fewer random automated freezes than Stripe since they share liability for each transaction. However, multiple reports in 2025-2026 describe AI-driven risk team decisions suspending accounts after years of operation with vague, AI-generated reasoning. The June 2025 FTC $5M settlement for facilitating tech-support scams raised concerns about oversight quality. New account approval can be slow and opaque.
Developer Experience
76/100Paddle Billing API is modern, with clean REST endpoints, webhooks, official SDKs (Python, Node, Go, PHP, .NET), and a sandbox environment. Documentation has improved significantly but doesn't match Stripe's depth or ecosystem breadth. Getting started takes 2-5 days due to mandatory account verification. Checkout overlay/inline options are straightforward to integrate but less flexible than Stripe Elements for custom UI.
Payout Reliability
68/100Paddle pays out monthly — balance created on the 1st, payment sent by the 15th. This is significantly slower than Stripe's T+2 or PayPal's near-instant access. Minimum threshold is $100. Payouts themselves are reliable once scheduled, but the monthly cadence creates cash flow challenges for smaller businesses. International SWIFT payouts incur a $15 fee.
Support Quality
62/100Support quality varies dramatically by tier. Essentials (self-serve) customers report multi-day response times for billing issues. Enterprise customers get priority support with faster resolution. Trustpilot reviews consistently flag slow support as a top complaint. Smaller companies are disproportionately affected. Support has been flagged as an existential risk if not improved.
Track Record
74/100Founded in 2012, Paddle is well-established in the SaaS billing niche. Acquired ProfitWell in 2022 for subscription analytics. The June 2025 FTC $5M settlement for enabling tech-support scams was a significant reputational hit, though the company has since tightened merchant vetting. Smaller scale than Stripe or PayPal but trusted by thousands of SaaS businesses including established brands.
Transparency
78/100The all-inclusive 5% + 50¢ pricing model is more transparent than Stripe's stacking fees. However, the currency conversion margin of 2-3% is not prominently disclosed, pushing effective rates to ~7% for global businesses. Paddle Retain and ProfitWell Metrics add-on pricing is not publicly listed and requires contacting sales. The MoR model means Paddle controls refund decisions, which can feel opaque.
Availability Matrix
| Region | Countries | Currencies | Payout Timing |
|---|---|---|---|
| Global (Buyers) | 200+ countries and territories — buyers can purchase from virtually anywhere except sanctioned countries | USD, EUR, GBP, AUD, CAD, SEK, NOK, DKK, PLN, CZK, CHF, BRL, MXN, ARS, CLP, PEN, HKD, SGD, TWD, THB, INR, JPY, KRW, ZAR, CNY, NZD, RUB, TRY, ILS + more (29+ currencies) | N/A (buyer side) |
| Global (Sellers) | Paddle works with software businesses globally — sellers can register from most countries excluding sanctioned regions. No restricted seller country list; approval is business-type and compliance based. | Payouts in USD, EUR, GBP (primary); other currencies via bank transfer, PayPal, or Payoneer | Monthly — balance created on the 1st, payment sent by the 15th. Minimum payout: $100/£100/€100. Adjustable up to $100,000. |
| NOT Available (sanctioned countries) | Russia, Belarus, Iran, North Korea, Cuba, Syria — blocked due to international sanctions and banking partner policies | N/A | N/A |
Feature Snapshot
One-time Payments
Supports single-charge transactions for digital products via overlay or inline checkout. Payment methods include cards, PayPal, Apple Pay, Google Pay, and local methods.
Subscriptions / Recurring Billing
Core product — supports flat-rate, per-seat, usage-based, and hybrid pricing models. Includes trial periods (paid trials launching Q1 2026), pause/resume, proration, and multi-product subscriptions with addons and one-time charges.
Tax Collection & Remittance (MoR)
Flagship feature — Paddle automatically calculates, collects, files, and remits VAT, GST, and sales tax in 100+ jurisdictions. Validates B2B VAT IDs and issues compliant invoices. No seller tax registration needed anywhere. Monitors regulatory changes automatically.
Hosted Checkout (Overlay)
Drop-in overlay checkout that handles the entire payment flow — minimal frontend code needed. Turn any element into a checkout trigger. Includes one-page variant for improved conversion.
Inline Checkout (Embedded)
Embeds checkout frame directly into your page for a fully integrated experience. You control the items list and totals UI while Paddle handles payment capture. One-page checkout variant available.
Payment Links
Default payment links for opening Paddle Checkout for a transaction. Configurable per-transaction and used for payment method updates.
Invoicing
As Merchant of Record, Paddle issues legally compliant invoices on your behalf — including VAT/tax details. Invoices are generated automatically for every transaction.
Dunning / Revenue Recovery (Retain)
Paddle Retain uses data from hundreds of thousands of payments to intelligently retry failed payments at optimal times — up to 7 retries over 30 days. Includes recovery emails, in-app notifications, and SMS. Reduces involuntary churn.
Fraud Prevention
Every transaction receives a fraud score based on card history, name matching, geographic patterns, and device info. ML-based detection with customizable fraud filters. As MoR, Paddle absorbs fraud-related chargebacks.
3D Secure Authentication
Supports both 3DS1 and 3DS2 for PSD2 compliance. Applied automatically based on risk assessment and regional requirements.
Customer Portal
Paddle provides update payment method flows and cancellation flows (configurable in dashboard as of Q1 2026). Full self-service subscription management is more limited than Stripe's Customer Portal.
Multi-Currency Support
Accept payments in 29+ currencies with localized pricing. Buyers see prices in their local currency. Currency conversion margin of 2-3% applies when payout currency differs from sale currency.
Webhooks
Real-time event notifications in entity.event_type format (e.g., subscription.canceled, transaction.completed). HMAC-SHA256 signature verification. Up to 10 notification destinations. Supports simulation for testing.
SaaS Metrics / Analytics (ProfitWell)
ProfitWell Metrics (acquired 2022) provides subscription analytics, cohort reporting, MRR tracking, churn analysis, and revenue forecasting. Free tier available; advanced features at $0-500/month.
Marketplace / Platform Payments
Paddle does not support marketplace models with split payments or multi-party payouts. Not designed for platforms where third-party sellers transact.
In-Person Payments
Paddle is online-only — no POS hardware, card readers, or in-person payment capabilities.
Pricing Breakdown
Security & Compliance
Integration Prompt
✂
Copy & use this 5810-char integration prompt
Production-ready prompt for Claude / GPT / Cursor — handles setup, security, webhooks & gotchas
Copy & use this 5810-char integration prompt
Production-ready prompt for Claude / GPT / Cursor — handles setup, security, webhooks & gotchas
You are integrating Paddle Billing as a Merchant of Record (MoR) into a [Django / Next.js / etc.] application.
## Key Concept: Paddle is the Merchant of Record
Paddle is NOT just a payment processor — it is the legal seller. Paddle handles tax collection, compliance, invoicing, chargebacks, and refunds on your behalf. You receive net payouts after Paddle deducts fees and taxes. This means:
- You do NOT need to collect or remit sales tax/VAT/GST
- Paddle issues invoices to your customers (not you)
- Amounts in webhooks may differ from what you see in payouts (taxes are deducted)
- Customer support for billing issues goes through Paddle
## Setup
1. Create a Paddle account at paddle.com and complete business verification (takes 1-3 days)
2. Get your API credentials from Developer Tools in the Paddle dashboard:
- `PADDLE_API_KEY` (server-side API key)
- `PADDLE_WEBHOOK_SECRET` (per notification destination)
- `PADDLE_CLIENT_TOKEN` (client-side token for Paddle.js)
- `PADDLE_ENVIRONMENT` ('sandbox' or 'production')
3. Store all credentials in environment variables — NEVER hardcode them
4. Use the sandbox environment for development: sandbox-api.paddle.com
## Recommended Integration: Overlay Checkout
The fastest way to integrate — add Paddle.js and turn any element into a checkout trigger:
```html
<!-- Add Paddle.js to your page -->
<script src="https://cdn.paddle.com/paddle/v2/paddle.js"></script>
<script>
Paddle.Initialize({
token: 'YOUR_CLIENT_TOKEN',
environment: 'sandbox', // Remove for production
});
</script>
<!-- Open checkout on click -->
<a href="#" class="paddle_button"
data-items='[{"priceId": "pri_abc123", "quantity": 1}]'
data-custom-data='{"user_id": "your_internal_id"}'>
Buy Now
</a>
```
Or open programmatically:
```javascript
Paddle.Checkout.open({
items: [{ priceId: 'pri_abc123', quantity: 1 }],
customData: { userId: 'your_internal_id' },
settings: {
successUrl: 'https://yourdomain.com/success',
}
});
```
## Server-Side: Create Products and Prices
Set up your product catalog via the API or dashboard:
```python
import requests
headers = {
'Authorization': f'Bearer {PADDLE_API_KEY}',
'Content-Type': 'application/json',
}
# Create a product
product = requests.post(
f'{PADDLE_API_URL}/products',
headers=headers,
json={
'name': 'Pro Plan',
'tax_category': 'standard', # Paddle handles tax based on this
}
).json()
# Create a recurring price
price = requests.post(
f'{PADDLE_API_URL}/prices',
headers=headers,
json={
'product_id': product['data']['id'],
'description': 'Monthly Pro Plan',
'unit_price': {'amount': '2000', 'currency_code': 'USD'}, # $20.00
'billing_cycle': {'interval': 'month', 'frequency': 1},
}
).json()
```
## Webhook Handling (Critical)
Never rely on client-side checkout success — always confirm via webhooks:
1. Create a notification destination in Developer Tools > Notifications
2. Subscribe to key events: `transaction.completed`, `subscription.created`, `subscription.updated`, `subscription.canceled`, `subscription.past_due`
3. ALWAYS verify the webhook signature:
```python
import hashlib
import hmac
def verify_paddle_webhook(request):
signature_header = request.headers.get('Paddle-Signature', '')
# Parse ts and h1 from header: "ts=1234;h1=abcdef"
parts = dict(part.split('=', 1) for part in signature_header.split(';'))
ts = parts.get('ts', '')
h1 = parts.get('h1', '')
# Build signed payload: timestamp:raw_body
raw_body = request.body.decode('utf-8')
signed_payload = f'{ts}:{raw_body}'
# Compute expected signature
expected = hmac.new(
PADDLE_WEBHOOK_SECRET.encode(),
signed_payload.encode(),
hashlib.sha256
).hexdigest()
if not hmac.compare_digest(h1, expected):
return HttpResponse(status=400)
event = json.loads(raw_body)
event_type = event.get('event_type')
if event_type == 'transaction.completed':
data = event['data']
custom_data = data.get('custom_data', {})
# Fulfill order using custom_data['user_id']
return HttpResponse(status=200)
```
4. CRITICAL: Do NOT parse or modify the raw request body before verification — any changes break the signature
5. Use event_id to deduplicate — Paddle may send the same webhook multiple times
6. Return 200 immediately, then process asynchronously
## Security Best Practices
- Never handle raw card data — Paddle.js and checkout handle all PCI-sensitive operations
- Always verify webhook signatures using HMAC-SHA256
- Use HTTPS for all webhook endpoints
- Store custom_data references (your internal IDs) in checkout to link Paddle transactions to your records
- Use sandbox environment for all development and testing
## Testing
- Use sandbox environment: set environment to 'sandbox' in Paddle.Initialize
- Sandbox dashboard: sandbox-sellers.paddle.com
- Paddle provides webhook simulation to test your handlers
- Test subscription lifecycle: creation, renewal, past_due, cancellation
- Test with different currencies and tax jurisdictions
## Common Gotchas
- Amounts in Paddle are strings, not integers (e.g., '2000' not 2000) — and represent the smallest currency unit
- Paddle calculates and adds tax on top of your price — the customer pays price + tax, you receive price - Paddle fee
- custom_data is your primary way to link Paddle entities to your internal records
- Sandbox and production use different API URLs and client tokens
- Webhook endpoints must respond within 30 seconds or Paddle will retry
- Up to 10 notification destinations allowed — plan your webhook architecture
- Paddle controls refund decisions as MoR — you request refunds, Paddle approves them
Replace [Django / Next.js / etc.] with your stack. Follows PCI DSS best practices and handles common edge cases.
Common Pitfalls
7 itemsHigher base fee than traditional processors
At 5% + 50¢ per transaction (Essentials plan), Paddle costs nearly double Stripe's 2.9% + 30¢. For small transactions under $10, the fee jumps to 10%. The all-inclusive model covers tax handling and compliance, but businesses doing $50K+ MRR without complex tax needs may find the premium hard to justify. Currency conversion adds 2-3% more, pushing effective rates to ~7% for global sales. Mitigation: calculate your actual Stripe cost including Stripe Tax, international surcharges, and compliance overhead — the gap narrows significantly for international SaaS.
Monthly payouts create cash flow lag
Paddle creates payouts on the 1st and sends payment by the 15th of each month, with a $100 minimum threshold. This is dramatically slower than Stripe's T+2 rolling payouts. For early-stage businesses, waiting up to 45 days for revenue can strain cash flow. International payouts via SWIFT also incur a $15 fee. Mitigation: set payout threshold as low as possible ($100) and plan cash flow around the monthly cycle.
Limited checkout customization
Paddle's checkout is either an overlay popup or an embedded inline frame. Neither offers the deep UI customization possible with Stripe Elements. If your brand experience requires a fully custom checkout flow with complete control over every input field, you'll hit walls. The inline checkout has improved with one-page variant support, but it's still a Paddle-controlled iframe. Mitigation: use inline checkout with CSS customization where possible; accept overlay for simpler integrations.
Account approval takes days, not minutes
Unlike Stripe where you can start accepting payments immediately, Paddle reviews every new account before activation. This verification process can take days and requires business registration documents. Some new businesses are rejected for lacking 3 months of payment processing history. Mitigation: apply early, have business documents ready, and maintain a backup payment option during the approval period.
AI-driven risk team decisions can be abrupt
Multiple merchants report that Paddle's risk team uses AI to evaluate accounts and can suspend long-standing accounts with vague, AI-generated reasons. One user reported termination after 7 years of operation. Appeals are slow and migration to other providers during suspension takes extended periods. Mitigation: maintain communication with Paddle, keep documentation current, and always have a migration plan for critical payment infrastructure.
Classic to Billing migration requires full re-integration
Paddle Classic and Paddle Billing have completely different architectures — different APIs, SDKs, webhooks, and JavaScript libraries. No data migrates automatically (customers, products, subscriptions). You must run both integrations in parallel during migration. Only active subscriptions can be migrated. Historic reporting data is not ported. Mitigation: use Paddle's in-dashboard migration tool (early access 2026) and plan for a parallel-running period.
Software and SaaS only — strict product restrictions
Paddle is exclusively for software and digital products. Physical goods, hybrid physical/digital bundles, and marketplaces with third-party sellers are not supported. Some users have reported restrictions on AI products. If your product mix includes anything non-software, Paddle cannot be your sole payment processor. Mitigation: confirm your product type is eligible before investing in integration.
Community Pulse
Developers praise Paddle for eliminating the tax compliance burden — the 'set it and forget it' MoR model is the top-cited advantage, especially for solo founders and small SaaS teams selling globally. The Paddle Billing API is seen as a significant improvement over Classic, with clean docs and reliable webhooks. However, persistent complaints center on slow support response times for non-enterprise customers, AI-driven risk team decisions that feel arbitrary, and the June 2025 FTC settlement that shook trust. The consensus in 2026: Paddle is worth it for sub-$50K MRR SaaS businesses where tax compliance would otherwise require dedicated finance resources, but businesses at scale often switch to Stripe for lower fees and deeper customization.
Sentiment last updated: April 2026 · We summarize — never copy — community content. Links go to original threads.
Changelog
-
all
Initial gateway entry created with full audit — all categories verified from scratch including pricing, availability, features, security, pitfalls, and community sentiment
LearnWithHasan.com · Payment Gateway Index · No affiliate links · Builder-first