If you’re an indie maker selling in English, you default to Stripe. Done. But when a mainland user asks “do you take WeChat Pay?”, a polite “sorry, no” is a lost sale.
Why not plug WeChat Pay in directly
Going direct takes three things:
- A mainland merchant account (personal ID won’t work)
- An ICP-registered domain
- WeChat Pay merchant platform certification
Each is slow, painful, and not always possible.
The 3-4% vs 70% trade-off
Extra 3-4% in fees, or lose 70% of mainland customers.
I’d rather pay a little more so mainland users can “scan and pay.” The math works out.
WeChat Pay’s fee is 0.6% — but only mainland merchants can use it. I can’t. Creem is 5% — but it supports mainland merchants + overseas cards. WeChat + Alipay + international cards. One integration covers everything.
Routing logic
The Chinese site goes through Creem (defaults to WeChat / Alipay, accepts overseas cards too). The English site goes through Stripe (international cards, what overseas users expect). A user on the Chinese site sees Creem’s checkout, picks WeChat, scans. Stripe doesn’t appear to them at all.
Alternatives I looked at
- Paddle — 5% + $0.50 / sale, Merchant of Record, auto-computes global tax. Discount code features weaker than Stripe.
- Airwallex — 1.5% fee, but mainland merchant account requires a business license. Lower fee, higher bar, slow support.
- Lemon Squeezy — 5%, Merchant of Record, similar to Creem. Weaker templates, thinner docs.
Creem isn’t the cheapest. It’s the simplest for an indie maker: WeChat + Alipay + international cards + no ICP + no overseas entity. As long as you have a product description, a price, and a domain, you’re set up in 5 minutes.
Field experience
Pitfall 1: Creem’s sandbox and mainland production behave slightly differently. Fix: Do a real-account test (¥1) before going live — verify the callback flow end-to-end.
Pitfall 2: Creem webhook retries are long. Fix: Make your webhook handler idempotent (same event ID arriving multiple times shouldn’t re-deliver).
Pitfall 3: Creem’s hosted checkout shows a Chinese “立即支付” button on the Chinese site, but your domain needs to “look like a Chinese business” for higher conversion. Fix: Use a localized domain + brand, raise payment completion rate.
Pitfall 4: Both Stripe and Creem can false-positive “high-risk” declines, especially on new accounts. Fix: Age the account 30 days + accumulate real transactions, and the false-decline rate drops sharply.
Closing
Stripe + Creem dual-channel isn’t elegant, but it’s the most practical setup for an indie maker. 5% buys you a global merchant of record + mainland compliance. Worth it.
If you’re overseas-only, just Stripe. If mainland users start asking “WeChat Pay?”, adding Creem is the lowest-friction fix.
Update (2026-09-03)
Four weeks of production data later, Creem + Stripe dual-channel runs as predicted. False-positive “high-risk” declines do drop off after 30 days — the first sale on a fresh account had ~50% reject rate; once aged with real transactions, that’s down to under 5%. After wiring Resend for transactional email, silent webhook failures are no longer a thing — a stuck order shows up in the inbox within a minute.
— Lao Wei