I submitted Complyance to Paddle for approval on April 3rd.
Rejected April 5th.
Fixed it, resubmitted April 6th.
Rejected April 9th.
Fixed it, resubmitted April 10th.
Rejected April 12th.
Finally approved April 17th.
Three weeks. Three rejections. Zero of them mentioned the actual issue in their documentation.
I'm writing this so you don't lose three weeks the way I did.
Why I picked Paddle over Stripe in the first place
Complyance sells to companies in the EU, UAE, and US. €99/month, $99/month, AED 399/month. I'm a solo founder. No accountant. No tax lawyer on speed dial.
When a German company pays me €99, I need to:
- Collect 19% German VAT
- Invoice them with their business VAT number
- Remit the collected VAT quarterly to Germany (or use EU One Stop Shop)
- Report it on their accounting books correctly
Multiply by 27 EU countries, plus UAE, plus US sales tax in 45 states. That's a nightmare for a solo founder.
Stripe solves the payment processing. It does not solve being the merchant of record.
Paddle does. That's the value proposition: they buy your product from you, they resell it to your customers, they handle every tax jurisdiction on the planet. You get a single wire transfer monthly with your net revenue.
The price: ~5% + $0.50 vs Stripe's 2.9% + $0.30.
For a solo founder targeting international markets, paying an extra 2.1% to skip registering in 27 countries is the best deal you'll ever make.
The part nobody tells you: Paddle has to approve you first.
The part everyone does tell you
You can find this in their docs:
- You need a refund policy ✓
- You need Terms and Conditions ✓
- Your website must describe what you sell ✓
- You must have a working checkout flow ✓
I had all of these. I was rejected anyway. Here's what actually made me fail.
Rejection #1 (April 5): The refund policy problem
My refund policy said:
"30-day money-back guarantee. Refunds available if the product fails to meet the described functionality. Processing fees may apply for payments in foreign currency."
Rejected. Paddle's feedback:
"Refund policy contains qualifiers. Please provide unconditional refund terms matching our standard policy."
Here's the thing. Paddle is the merchant of record. When they sell your product, they're taking the liability. If a customer disputes the charge, Paddle eats the chargeback. Their fraud exposure depends on your refund policy being a clean guarantee with zero exceptions.
Your instinct as a founder is to protect yourself: "except for users who abused the trial," "minus transaction fees," "after review of usage." Every one of those qualifiers triggers rejection.
What actually works:
"30-day money-back guarantee. No questions asked. If you're not satisfied with Complyance for any reason, contact support@complyance.app within 30 days of your purchase for a full refund."
That's it. No conditions. No exceptions. No footnotes.
Does this mean some users will abuse it? Maybe 2-3%. But the approval delay cost me more than any abuse ever will.
Rejection #2 (April 9): The legal entity mismatch
My Terms and Conditions said "Complyance Inc." at the top.
I'm not Complyance Inc. I'm a sole proprietor registered in Georgia as "Pavel Gaivoronski, Individual Entrepreneur."
Rejected. Paddle's feedback:
"Legal entity on website doesn't match the registered entity on your Paddle account."
This one was embarrassing. I'd copied Terms from another SaaS template and forgot to change the company name. I assumed Paddle would understand — they had my real entity name on file from signup.
They don't assume anything. If your website says Company X and you signed up as Person Y, review fails. They need the legal entity on your site to exactly match the entity on your Paddle account.
The fix took 30 seconds (find-replace in markdown). The approval cost me 4 days of lost time because they only review resubmissions in batches.
Rejection #3 (April 12): The "what you're selling" confusion
Complyance does two things:
- Self-serve: $99/month SaaS subscription
- Managed: $2,500 one-time setup + $499/month for done-for-you compliance
Paddle's feedback on rejection #3:
"Your website advertises consulting services alongside the software product. Paddle processes digital goods only. Please clarify whether managed services are delivered by you (human-driven) or by the software (self-serve automation)."
I hadn't disclosed this clearly. The landing page said "Managed compliance — we handle everything" which to Paddle reads as consulting services. Paddle doesn't handle those. Consulting is different liability, different tax treatment, different refund policy requirements.
The fix:
- Added "Powered by our AI platform, with expert review on request" to clarify it's still a software product
- Added explicit disclosure: "Managed tier includes human expert review of classifications within 48 hours. Software-generated outputs form the core deliverable."
- Separated the pricing page so self-serve is clearly the default and managed is presented as a support tier, not a consulting engagement
Three more days lost.
What I wish someone had told me on April 1
Here's my checklist for anyone submitting to Paddle. Every item on this list caused me a rejection or delay:
Refund policy
- [ ] No qualifiers ("except for...", "minus processing...", "if the user...")
- [ ] Explicit 14-day or 30-day window
- [ ] Clear contact method (email address)
- [ ] Matches Paddle's own policy language
Legal entity
- [ ] Exact match between website T&C and Paddle account
- [ ] Registered business address visible
- [ ] VAT ID shown if applicable
Product description
- [ ] Clear what's digital vs human-delivered
- [ ] Subscription terms explicitly stated (monthly, annual, auto-renewal)
- [ ] Cancellation process documented
- [ ] What happens to data after cancellation
Checkout readiness
- [ ] Paddle.js integrated and tested in sandbox
- [ ] Webhook endpoint deployed and reachable (Paddle will test it)
- [ ] Webhook idempotency implemented (they retry failures)
- [ ] Return URL after successful checkout works
What's NOT in their docs but matters
- [ ] If you offer human services, disclose it explicitly
- [ ] If you offer discounts or promos, describe the terms
- [ ] If you're a sole proprietor, make that clear (they're cautious with individuals vs companies)
- [ ] If your product touches regulated data (PII, health, financial), be ready for extra scrutiny
The webhook part is the easy part
Here's what the actual Paddle integration looks like on the code side. This is not what causes delays:
// src/app/api/webhooks/paddle/route.ts
export async function POST(req: Request) {
const signature = req.headers.get("paddle-signature");
const body = await req.text();
const event = await paddle.webhooks.unmarshal(body, signature, {
secretKey: process.env.PADDLE_WEBHOOK_SECRET!,
});
switch (event.eventType) {
case "subscription.activated":
await handleSubscriptionActivated(event.data);
break;
case "subscription.updated":
await handleSubscriptionUpdated(event.data);
break;
case "transaction.completed":
await handleTransactionCompleted(event.data);
break;
}
return Response.json({ ok: true });
}
async function handleSubscriptionActivated(data: PaddleSubscription) {
// Idempotent - safe to receive this event twice
await db.subscription.upsert({
where: { paddleSubscriptionId: data.id },
create: { userId: data.customData.userId, ... },
update: { status: "active", ... },
});
}
Implementing this took me one afternoon. The integration is clean, well-documented, well-tested.
The approval process took three weeks.
If you're about to start with Paddle, invert your planning. Spend a day on the integration. Spend two weeks getting your website, policies, and entity setup through review.
Was it worth it?
Yes. Unambiguously.
For my first German customer (got her last week), here's what happened:
- She paid €99
- Paddle collected 19% German VAT on top (€18.81, her responsibility)
- Paddle issued her a proper German VAT invoice with her business VAT number
- Paddle remitted the VAT to the German tax authority
- I received €88.04 in my bank account (after Paddle's fee)
I didn't register in Germany. I didn't file anything. I don't have a German accountant. I'm sitting in Tbilisi, and I'm legally compliant selling to a company in Berlin.
That's the deal. The 3-week approval was the cost of buying that system.
Stripe would have been live in 10 minutes. And then I'd have spent my first year setting up tax compliance instead of building product.
Questions I'd love your help with
I'm genuinely curious about these, not rhetorical:
Has anyone been rejected for something not on Paddle's public checklist? My three rejections were all for things not clearly documented. I'm wondering if the "hidden review criteria" is universal or if I just got unlucky.
For those who went with Stripe + Stripe Tax + manual invoicing: at what revenue did you start feeling the VAT compliance pain? I'm trying to figure out where the break-even point is. My gut says around $5-10K MRR it becomes untenable without an MoR. But I'd love real numbers.
Paddle's sandbox vs production behavior differ in subtle ways. I found out during testing that some webhook event types only fire in production. Has anyone written up a gotchas list? I want to start one.
For EU-targeting founders specifically: have you tried Lemon Squeezy as an alternative MoR? Their pricing seems competitive but I don't know anyone who's been through their approval process.
What's the single biggest thing you'd change about Paddle if you could? For me it's the opaque review process — three rejections with generic feedback each time. Would love faster, more specific rejection reasons.
If this saved you time
Drop a 💜 so more solo founders see it — Paddle's review process isn't discussed enough in public, and people lose weeks like I did because the info's buried in support tickets.
If you're wrestling with Paddle approval right now, leave a comment with where you're stuck. I'll try to help based on what worked for me.
And if you're building something EU-focused and thinking about payments — the Complyance compliance classifier is free, takes 2 minutes, no signup. Might save you a different kind of headache.
Shipping more in the next few weeks. Follow if you want the updates.
— Pavel
Top comments (0)