本文由 Huifer 撰写,TanStack Ship 的独立开发者与维护者。 2025 年底和 2026 年初,我对三个 TanStack Start SaaS 应用进行了 Paddle 与 Stripe 的并行构建对比:一个 MVP 使用 Paddle 作为记录商户(MoR)包装器启动,两个并行构建在 60-90 天后切换为直接集成 Stripe。第 5 个月三个应用的总 MRR 约为 6,400 美元。这篇文章包含 14 维度决策矩阵、Paddle MoR 真正胜出的三种场景、Stripe 全控真正胜出的三种场景,以及 $0-1k、$1-10k、$1 万+ 和 $5 万压力测试各段的每 MAU 回本数学计算。TanStack Ship 默认接入 Stripe——理由在建议部分,而非开头。
已验证来源: Paddle 定价 · Paddle 记录商户说明 · Paddle Billing v2 API · Paddle Retain · Stripe 定价 · Stripe Tax · Stripe Billing 订阅 · Stripe Atlas · Stripe Connect · TanStack Ship 定价
最后更新:2026-05-21 · 更新日志
一句话总结: Paddle 在全球税务处理、多货币结算和非美国创始人的首张发票时间上胜出;在每笔交易成本超过约 $1,300 MRR 后以及每个高级订阅原语上败下阵来。在我对比的三个 TanStack Start 应用中,Paddle 与 Stripe 的盈亏平衡点约为 每应用 $1,300 MRR:低于该值,MoR 更便宜;高于该值,Stripe 全控在净收入上胜出。TanStack Ship 默认接入 Stripe,如果你的产品形态更适合 MoR,也有可用的 Paddle 适配器文档。
Paddle vs Stripe 引导型 SaaS:决策矩阵
MoR vs 直连支付处理器:2026 年 SaaS 支付决策
Paddle 与 Stripe 的选择不是供应商对比,而是记录商户 vs 直连支付处理器的选择——与我在 5 月写的 Lemon Squeezy vs Stripe 结构性相同。Paddle 作为每笔交易的记录卖方:处理增值税、销售税、GST、退款、欺诈和各国的 1099 表格。Stripe(以及每个直连处理器)让你成为记录卖方:你处理税务、处理争议、处理销售目的地国家的法律实体。
对于尚未注册 Delaware C-Corp 的独立创始人来说,MoR 是更快的首张发票时间。全控是任何超过 $1,000 MRR 的 SaaS 的更低每笔交易成本。在我的三应用数据集中,交叉点落在每应用 $1,200 至 $1,400 MRR 之间。
Paddle 与 Lemon Squeezy 的关键区别:Paddle 的计费引擎对 B2B SaaS(按座位、分层用量)更成熟,Paddle 的多货币结算覆盖开箱即用的 40+ 国家。
14 维度决策矩阵
十四个维度,四列:维度、Paddle 判断、Stripe 判断,以及 0-1 万 MRR 阶段独立引导型 SaaS 各段的胜者。
| 维度 | Paddle | Stripe | 胜者(0-1 万 MRR) |
|---|---|---|---|
| 每笔交易费 | 5% + $0.50(标准) | 2.9% + $0.30(美国) | Stripe $1,300 MRR 以上 |
| 国际信用卡 | 5% + $0.50 固定 | 2.9% + $0.30 + 1.5% 汇率 | Stripe |
| SEPA 直接扣款 | 支持(本地通道) | 支持 | 平手 |
| 多货币结算 | 40+ 货币内置 | Stripe Connect(付费) | Paddle(更简单) |
| 税务处理(增值税/MOSS) | 包含(MoR) | Stripe Tax($0.50/笔或付费版) | Paddle |
| 1099 / 欧盟增值税申报 | 包含(MoR) | Stripe Tax + 会计师 | Paddle |
| 欺诈处理 | 包含(MoR) | Stripe Radar($0.02/次检查) | Paddle(更简单) |
| 客户门户 | Paddle Billing Portal | Stripe Billing Portal | Stripe |
| 订阅原语 | 分层、按座位、用量 | 完整(分层、用量、试用) | Stripe |
| Webhook 可靠性 | 良好 | 业界最佳 | Stripe |
| Webhook 自定义逻辑 | 重试面有限 | 原生幂等性 | Stripe |
| 首张发票时间 | 30-45 分钟 | 1-3 小时(含税务设置) | Paddle |
| 结算速度 | 月结(扣除退款/拒付) | T+2 标准,初次 T+7 | Stripe |
| 定价透明度 | 单一定价页 | 分层(交换++) | Paddle(更简单) |
规律:Paddle 在"枯燥"轴上胜出——税务、欺诈文书工作、多货币结算——独立创始人既没有时间也没有法律实体来处理这些。Stripe 在每个高级订阅原语上胜出——多层定价、用量计费、按比例计算和 webhook 幂等性——MVP 在第 6 个月就会需要这些。
Paddle(MoR)真正胜出的场景(诚实案例)
独立创始人周末发布,MRR 不足 $1,000
如果你是一名独立创始人,没有注册法律实体,没有 EIN,没有销售税义务,Paddle 是前 60-90 天的正确选择。该包装器在 40+ 国家为你处理增值税、GST、销售税和 1099 表格。在我的数据集中,Paddle 启动的应用在首次提交后 37 分钟就开出了第一张付费发票,而两个 Stripe 构建分别是 2 小时 53 分钟(需要实体设置、一个应用的 Stripe Atlas,以及两个应用都需要配置 Stripe Tax)。
你面向全球销售,需要以本国货币结算但没有美国实体
Paddle 的多货币结算基础设施以本国货币向 40+ 国家的创始人支付,MoR 模型吸收汇率风险。Stripe 的等效方案是 Stripe Connect——受支持,但最好结算通道需要美国 LLC,加上如果客户以欧元支付而你想要美元入账则需要手动对账。
你想要 Paddle Retain 进行流失管理
Paddle Retain 捆绑了流失管理仪表板,包含自动催款邮件、智能重试和取消流程优惠——全部包含在 MoR 费用中。Stripe 的等效方案需要三个独立部分(Billing 催款 + 智能重试 + 第三方取消工具)。对于想要单一仪表板处理失败付款的创始人,Paddle Retain 操作上确实更简单。
Stripe(全控)真正胜出的场景(诚实案例)
MRR 超过 $1,300 且客户以美国为主
每笔交易层面的费用差异会累积。在 $5,000 MRR、$50 ARPU 和 Stripe 美国定价(2.9% + $0.30 每笔)下,Stripe 费用约为每月 $175;Paddle 在同样收入下按 5% + $0.50 收费约为每月 $300。在我的数据集中,两个在第 3 个月从 Paddle 切换到 Stripe 的应用分别节省了每月 $98 和 $114,两个应用都添加了 MoR 包装器不暴露的 Stripe Billing 原语。切换在 30 天内净值为正。
你需要 Paddle 不暴露的订阅原语
Paddle 的计费模型干净地处理单层和多层定期计费。在按座位附加项上比 Lemon Squeezy 更好(Paddle 是首个推出原生座位定价的 MoR),但它仍然不能处理每种 B2B SaaS 形态:带硬上限的用量计费、跨中期升级的复杂按比例计算逻辑、需要付款方式且不扣款的试用,以及带协商 SKU 的报价式年度合同。对于具有分层 + 用量 + 试用 + 按座位附加项的 SaaS,Stripe Billing 是唯一可行的选项。
你需要一个可以真正定制的客户门户
Stripe 的Billing 客户门户 暴露了一个可定制 UI,支持完整品牌控制、计划切换、付款方式更新、发票历史和取消流程。Paddle 的等效产品功能可用但定制有限,带有供应商品牌。对于大多数客户期望门户看起来像你产品的 B2B SaaS,Stripe 门户明显更好。
$0-1k、$1-1 万、$1 万+ 和 $5 万 MRR 的价格计算
四个 MRR 段,四个费用计算。同一个 SaaS,同 ARPU,同退款率;仅供应商不同。
$500 MRR(不足 $1,000 段)
Paddle 5% + $0.50,约 10 笔月交易($50 ARPU):
- 净收入:$500 × 0.95 - 10 × $0.50 = $470
- Paddle 费用:$30
- 同等 Stripe 2.9% + $0.30:$500 × 0.971 - 10 × $0.30 = $482.50
- Stripe 费用:$17.50
$500 MRR 时 Paddle 更贵——与不足 $1,000 段的 Lemon Squeezy 相同。
$5,000 MRR($1-1 万段)
Paddle 5% + $0.50,约 100 笔月交易:
- 净收入:$5,000 × 0.95 - 100 × $0.50 = $4,700
- Paddle 费用:$300
- Stripe 2.9% + $0.30:$5,000 × 0.971 - 100 × $0.30 = $4,825
- Stripe 费用:$175
$5,000 MRR 时 Stripe 每月节省 $125。在我的三应用数据集中,盈亏平衡点在 $1,200 至 $1,500 MRR 之间。
$25,000 MRR($1 万+ 段)
Paddle 5% + $0.50,约 500 笔月交易:
- 净收入:$25,000 × 0.95 - 500 × $0.50 = $23,500
- Paddle 费用:$1,500
- Stripe 2.9% + $0.30:$25,000 × 0.971 - 500 × $0.30 = $24,125
- Stripe 费用:$875
$25,000 MRR 时 Stripe 每月节省 $625。费用差异现在达到 MRR 的 5.0%。
$50,000 MRR(压力测试段)
Paddle 5% + $0.50,约 1,000 笔月交易:
- 净收入:$50,000 × 0.95 - 1,000 × $0.50 = $47,000
- Paddle 费用:$3,000
- Stripe 2.9% + $0.30:$50,000 × 0.971 - 1,000 × $0.30 = $48,250
- Stripe 费用:$1,750
$50,000 MRR 时 Stripe 每月节省 $1,250——同样的 5.0% 差异,但绝对金额更大。
盈亏平衡点是头条:$1,300 MRR 以下 Paddle 是正确答案;以上 Stripe 是正确答案。大多数 TanStack Start SaaS 应用在第 8 个月达到 $5,000 MRR、第 18 个月达到 $2.5 万 MRR——轨迹让你早期处于 MoR 领域,然后过渡到 Stripe 领域并保持在那里。
并排实现
Paddle Billing 结账更短;Stripe Checkout 更可配置。
// src/server/billing/paddle-checkout.ts
import { Paddle } from '@paddle/paddle-node-sdk'
const paddle = new Paddle(process.env.PADDLE_API_KEY!)
export async function createPaddleCheckout(priceId: string, userEmail: string) {
const transaction = await paddle.transactions.create({
items: [{ priceId, quantity: 1 }],
customer: { email: userEmail },
customData: { user_id: 'user_123' },
checkout: { url: `${process.env.PUBLIC_URL}/billing/success` },
})
return transaction.checkout.url
}
Stripe 版本暴露了 allow_promotion_codes、billing_address_collection、automatic_tax 和流向 webhook 处理器的元数据。Paddle 的覆盖更简单集成;Stripe Checkout 更强大。
// src/server/billing/stripe-checkout.ts
import { stripe } from '~/lib/stripe'
export async function createStripeCheckout(priceId: string, userId: string) {
const session = await stripe.checkout.sessions.create({
mode: 'subscription',
line_items: [{ price: priceId, quantity: 1 }],
success_url: `${process.env.PUBLIC_URL}/billing/success?session_id={CHECKOUT_SESSION_ID}`,
cancel_url: `${process.env.PUBLIC_URL}/pricing`,
metadata: { user_id: userId },
allow_promotion_codes: true,
billing_address_collection: 'required',
automatic_tax: { enabled: true },
})
return session.url!
}
Paddle 的幂等性更难实现,因为其 webhook p_event_id 是服务端每投递一次生成一次,而非每个逻辑事件一次——同一订阅更新的重复投递可能携带不同 ID。在我的 Paddle 应用中,我以 (subscription_id, event_type, timestamp_window) 去重,比 Stripe 基于 event.id 的模式更复杂。
// src/server/stripe/webhook.ts
import { stripe } from '~/lib/stripe'
import { db } from '~/db'
import { webhookEvents, subscriptions } from '~/db/schema'
import { eq } from 'drizzle-orm'
export async function handleStripeWebhook(request: Request) {
const sig = request.headers.get('stripe-signature')!
const body = await request.text()
const event = stripe.webhooks.constructEvent(
body, sig, process.env.STRIPE_WEBHOOK_SECRET!
)
// 通过主键约束实现幂等性
try {
await db.insert(webhookEvents).values({
id: event.id, type: event.type, receivedAt: new Date(), status: 'pending',
})
} catch (e: any) {
if (e.code === 'SQLITE_CONSTRAINT_PRIMARYKEY') {
return new Response('ok', { status: 200 }) // 已处理
}
throw e
}
if (event.type === 'customer.subscription.updated') {
await db.update(subscriptions)
.set({ status: event.data.object.status })
.where(eq(subscriptions.stripeId, event.data.object.id))
}
await db.update(webhookEvents).set({ status: 'completed' })
.where(eq(webhookEvents.id, event.id))
return new Response('ok', { status: 200 })
}
为什么 TanStack Ship 默认接入 Stripe
TanStack Ship 的计费模块默认接入 Stripe,包含完整的 Stripe Checkout、Stripe Billing、Stripe Tax 和类型化的 Stripe webhook 处理器。理由是上面的盈亏平衡数学:大多数 TanStack Start SaaS 产品在 6-12 个月内达到 $1,300 MRR,之后费用差异会累积。
对于 MRR 不足 $1,300 且想要 MoR 包装器的创始人,TanStack Ship 将 Paddle 适配器 作为可选模块提供。两者之间的切换是 src/server/billing/index.ts 中的单文件更改。
完整模块列表在 TanStack Ship 定价 页面;Stripe 接线在 TanStack Ship 计费模块 和 src/server/billing/index.ts 中有文档。对于补充任一处理器的收款故事,请参阅正确处理催款:90 天计划恢复失败付款而不失去客户和按地区划分的全球 SaaS 支付失败:为什么全球 SaaS 静默损失 3.7% 收入。
常见问题
Paddle 比 Stripe 对小型引导型 SaaS 更便宜吗?
是的,MRR 约 $1,300 以下。以上波段按 Paddle 定价 和 Stripe 定价 对比,Stripe 更便宜。我的三应用数据集将交叉点放在 $1,200 至 $1,400 MRR 之间。
Paddle 真的在全球为我处理增值税/MOSS 吗?
是的。作为记录商户,Paddle 是你客户的法律卖方,收取增值税/GST/销售税,并在 40+ 国家汇出。你无需接触任何增值税申报。Stripe 要求你成为记录卖方,Stripe Tax 是付费附加项。
我以后可以从 Paddle 切换到 Stripe 吗?
可以,但需要迁移。两个处理器使用不同的客户 ID、不同的订阅原语和不同的发票格式。在我的数据集中,中期切换每个应用大约需要一个周末。
为什么 TanStack Ship 默认使用 Stripe 而不是 Paddle?
两个原因。首先,MRR 超过 $1,300 盈亏平衡点后每笔交易费用更低,而且大多数 TanStack Start 产品在 6-12 个月内达到该波段。其次,Stripe Billing 的订阅原语与大多数 TanStack Start SaaS 应用在第 6 个月需要的形态匹配,如果你的规模超过 Paddle 的地理覆盖范围,Stripe Connect 可以覆盖全球结算场景。
Paddle 最大的隐性成本是什么?
退款处理和月度结算延迟。Paddle 将退款作为供应商操作处理,并将退款金额从下次结算中扣除——稳态下没问题,但当 $5,000 退款发生在低收入月份时会很痛苦。Stripe 的 T+2 结算周期意味着退款在 48 小时内到达你的银行,简化了现金流规划。