# AI Editor RSP — Pricing Contract

日期：2026-06-10
站点：https://aieditorrsp.net
适用 PRD：AIE 中文 PRD v4
状态：可直接给产品 / 设计 / 前端 / 后端 / QA 引用

## 1. 合同结论

AIE 首版公开定价采用三档主套餐：Free / Pro / Business。

Credit Pack 不是公开第三套餐，只能作为 Pro 用户的 add-on，在 Pro 额度不足或耗尽时作为次级入口出现。

定价不服务首访销售，服务生成能力的清晰边界。AIE 的基础价值仍然是 Copy Prompt：永久免费、无需登录、不消耗 credits、不受 provider / checkout / paid 状态影响。

## 2. 不可变原则

1. Copy Prompt 永远免费。
2. 付费只卖真实实现的 live generation、更多生成额度、HD/no-watermark、保存、批量、商用工作流等能力。
3. provider-disabled 或 provider-preview 时，不能展示可真实购买的生成套餐 checkout。
4. Business / Team / API 在 seat、invoice、team workspace、API、SLA、批量后台未实现前，只能 Contact / Waitlist。
5. 禁止出现 Unlimited / unlimited generation / unlimited credits 文案。
6. Stripe Checkout 启用时，Stripe Tax、billing address、tax id collection、webhook、refund、subtotal/tax/total 账务字段是上线硬闸门。
7. 失败生成、provider error、network timeout、safety rejection、upload validation failure 不扣 credits。

## 3. Public Pricing Plans

| Plan | Public | Checkout | Price | Allowance | Primary CTA | Secondary CTA |
|---|---:|---:|---|---|---|---|
| Free | yes | no | $0 | Copy all public prompts; provider-live 时 2 successful preview edits/day | Copy Prompt | Try in Editor |
| Pro Monthly | yes | yes, only when provider-live + checkout-enabled | $19/month | 200 successful edits/month | Upgrade to Pro | Start yearly |
| Pro Yearly | yes | yes, only when provider-live + checkout-enabled | $180/year, shown as $15/mo billed annually, Save 21% | 200 successful edits/month | Start yearly | Upgrade monthly |
| Business / Team | yes | no in v1 | Contact / Waitlist | Custom credits / workflow interest list only | Contact us | Join Business waitlist |
| Credit Pack | no as public plan | Pro add-on only | $15 / 100 add-on credits | 100 credits, 12-month expiry | Buy add-on credits | Contact for volume |

## 4. Plan Contracts

### 4.1 Free

定位：SEO 获客与首访价值交付。

包含：

- 浏览首页、RSP hub、Prompt Library、provider pages、effect detail。
- 复制所有 public active prompts。
- 查看 before/after 或 sample preview。
- 使用 search / filter / sort。
- Open / Try in Editor，并预填 effect slug 与 prompt。
- 上传预览流程。
- provider-live 且策略允许时：2 successful preview edits/day。

限制：

- 不支持 HD / no-watermark，除非真实实现并明确作为免费权益。
- 不支持批量生成。
- 不支持保存历史 / 收藏夹，除非登录和数据层已实现。
- 不保证外部 provider 生成完全一致。

展示条件：

- 所有 provider 状态都可展示 Free。
- provider-disabled / provider-preview 时，Free 只能强调 Copy Prompt、external use、upload preview、waitlist，不能暗示 live generation。

禁用条件：

- Copy Prompt 不得禁用，除非该 prompt 因安全、版权、合规或 abuse 下架。
- Free generation 仅在 provider-live 且 quota 可读时启用。

CTA：

- 主 CTA：Copy Prompt
- 次 CTA：Try in Editor
- quota available + provider-live：Generate free preview
- quota exhausted：Sign in to continue / Upgrade to Pro / Copy Prompt instead，按 auth state 显示
- provider disabled：Copy Prompt + Get notified when generation is live

Quota exhausted 行为：

- anonymous exhausted：主 CTA = Sign in to continue；次级链接 = See Pro pricing；禁止 Buy credit pack。
- signed-in-free exhausted：主 CTA = Upgrade to Pro；次级链接 = View plan details / Copy Prompt instead；禁止 credit pack 主入口。

### 4.2 Pro

定位：个人创作者、求职者、电商轻用户、社交图片高频用户。

价格：

- Monthly：$19/month。
- Yearly：$180/year，前台显示 $15/mo billed annually，Save 21%。

包含：

- 200 successful edits/month。
- 当前所有 live templates：1 credit / successful image edit。
- provider failure / unsafe prompt block / upload validation failure / network timeout：0 credit。
- HD / no-watermark：仅真实实现后展示；未实现时不得作为权益。
- Saved prompts / favorites / recent edits：仅登录和数据层真实实现后展示；未实现时不得作为权益。
- Priority generation：仅 provider / queue 真实支持后展示；未实现时不得作为权益。
- 商用场景 prompt packs：headshot、product photo、thumbnail、social creator，可作为内容权益展示，不等于商用法律保证。

限制：

- 不是 unlimited。
- 200 credits/month 到期重置，不 rollover。
- provider outage 时不能生成，不扣额度。
- 月额度用尽后进入 quota-exhausted；可等下月重置或购买 Pro add-on credits。

展示条件：

- provider-live + checkout-enabled：可展示 Upgrade / Start yearly 并进入 checkout。
- provider-live + checkout-disabled：展示 Pro waitlist，不跳 checkout。
- provider-disabled / provider-preview：展示 generation not live，CTA 降级为 Get notified / Join waitlist，不允许购买生成套餐。

禁用条件：

- provider 非 live：禁用真实购买生成套餐。
- checkout-disabled：禁用 Stripe checkout。
- paid-disabled：Pricing 只显示 waitlist / contact，不显示可购买权益。

CTA：

- provider-live + checkout-enabled：Upgrade to Pro / Start yearly。
- checkout-disabled：Join Pro waitlist。
- provider-disabled：Copy Prompt for free + Get notified when generation is live。
- signed-in-pro：Manage plan / View usage。

Quota exhausted 行为：

- Pro 用户月额度耗尽：主 CTA = Buy 100 add-on credits · $15。
- 次级链接 = Switch to yearly / Contact us for team volume / Copy Prompt instead。
- 仍可复制 prompt、打开 editor、上传预览；Generate 不调用 provider，直到 quota 恢复或 add-on credit 到账。

### 4.3 Credit Pack / Add-on Credits

定位：Pro 用户临时增加生成额度，不替代订阅。

规则：

- 不是公开主套餐。
- 不给 anonymous / Free 独立购买。
- 只对 active Pro users 展示。
- 推荐显示时机：monthly credits < 20 或 quota exhausted。
- 价格：$15 / 100 add-on credits。
- 有效期：购买后 12 个月。
- 可叠加到 purchased_credits。
- 消耗顺序：monthly_credits → purchased_credits → free_daily。
- 失败生成不扣 add-on credits。
- refund / tax / receipt 走 Stripe 规则。

展示条件：

- provider-live + checkout-enabled + signed-in-pro。
- Pro quota low / exhausted 时作为 account panel 或 quota panel 次级入口。

禁用条件：

- anonymous、signed-in-free、provider-disabled、provider-preview、checkout-disabled、paid-disabled。
- 非 active Pro 访问 `/api/checkout/stripe?plan=credit_pack` 必须 403 或 redirect 到 `/pricing`，不得创建 Stripe Session。

CTA：

- 主 CTA 仅在 Pro exhausted：Buy 100 add-on credits · $15。
- 非 Pro 不展示 Buy credit pack。

### 4.4 Business / Team / API

定位：电商、代理商、内容团队、批量产品图和品牌 workflow 线索承接。

v1 状态：Contact / Waitlist only。

可展示：

- Custom monthly credits。
- Batch product photo prompts interest。
- Brand-safe prompt workflow interest。
- Team review / approval interest。
- API / bulk generation interest list。
- Priority support interest。

不能展示为已实现：

- seat management。
- invoice billing。
- team workspace。
- admin / permission。
- API SLA。
- bulk generation checkout。
- enterprise security package。

展示条件：

- 所有 provider 状态下都可展示为 Contact / Waitlist。
- 不得与 Pro checkout 同级误导为可立即购买团队能力。

禁用条件：

- seat / invoice / team / API 未实现前，Business checkout 永远禁用。

CTA：

- Contact us。
- Join Business waitlist。

## 5. Provider / Paid / Checkout 降级规则

| Runtime State | Pricing 展示 | Pro CTA | Credit Pack | Business | Checkout |
|---|---|---|---|---|---|
| provider-disabled + paid-disabled | Copy Prompt free + generation waitlist | Get notified | hidden | Contact / waitlist | disabled |
| provider-disabled + checkout-enabled | 必须警示 generation not live | Get notified when generation is live | hidden | Contact / waitlist | generation checkout disabled |
| provider-preview + checkout-disabled | preview-only / waitlist | Join Pro waitlist | hidden | Contact / waitlist | disabled |
| provider-preview + checkout-enabled | 不允许购买 live generation | Join Pro waitlist | hidden | Contact / waitlist | generation checkout disabled |
| provider-live + paid-disabled | 可解释未来套餐 | Join waitlist | hidden | Contact / waitlist | disabled |
| provider-live + checkout-disabled | 展示套餐但不售卖 | Join Pro waitlist | hidden | Contact / waitlist | disabled |
| provider-live + checkout-enabled | Free / Pro / Business 公开展示 | Upgrade / Start yearly | Pro add-on secondary only | Contact / waitlist | Pro monthly/yearly enabled; credit_pack Pro-only |

硬规则：

- `checkout_enabled=true` 不能单独决定可售卖；必须同时 `provider_state=provider-live`。
- `provider_state!=provider-live` 时，所有涉及 generation 的购买 CTA 必须降级。
- Pricing 页面始终先声明 Copy Prompt is free；Generation depends on provider availability；No unlimited generation；Provider failure does not charge credits。

## 6. Paywall / Quota Exhausted 行为合同

### 6.1 Anonymous + quota exhausted

文案：

> You used today’s free preview edits. Sign in to continue with Pro credits, or copy the prompt and use it externally.

主 CTA：Sign in to continue

次级链接：See Pro pricing、Copy Prompt instead

禁止：Buy credit pack、Billing options、多个同权按钮。

### 6.2 Signed-in Free + quota exhausted

文案：

> You’re out of free edits. Pro includes 200 successful edits each month. Failed provider calls never consume credits.

主 CTA：Upgrade to Pro

次级链接：View plan details、Copy Prompt instead

禁止：Buy credit pack as primary、Credit Pack checkout、Contact 同权按钮。

### 6.3 Signed-in Pro + quota exhausted

文案：

> Your monthly Pro credits are used. Add 100 credits for this account, valid for 12 months, or keep copying prompts for free.

主 CTA：Buy 100 add-on credits · $15

次级链接：Switch to yearly、Contact us for team volume、Copy Prompt instead

禁止：继续调用 provider、静默失败、隐藏 reset / usage 状态。

### 6.4 Provider unavailable / provider error

文案：

> Provider unavailable. No credits were charged. You can copy the prompt and try it externally.

主 CTA：Copy Prompt

次级链接：Try again、Use externally、Get notified

禁止：扣 credits、强推 checkout、展示 generation success。

## 7. Metering / Cost Guardrail

当前成本假设：

- 主 provider 成本按 $0.04 / successful image edit 保守估算。
- 1 successful image edit = 1 credit。
- Pro monthly 200 credits 满额 provider 成本约 $8。
- Pro monthly $19 扣除 Stripe fee 后仍有正毛利。
- Pro yearly $180 等效 $15/月，满额 provider 成本约 $8/月，仍可接受但需监控高使用用户。
- Credit Pack 最低 $15/100，不能低于订阅单位价格，否则反向锚定。

未来能力计费：

- HD export：2 credits / successful output，仅真实实现后展示。
- Batch：每张 successful output 1 credit；如果 HD，则每张 2 credits。
- 不同 provider 成本差异变大时，必须在 backend pricing config 增加 per-provider cost guardrail，不能继续所有模板同价。

## 8. Stripe / Tax / Billing / Webhook / Refund 验收规则

### 8.1 Checkout Session 必需参数

所有 Stripe Checkout Session 必须包含：

```ts
automatic_tax: { enabled: true }
billing_address_collection: 'required'
tax_id_collection: { enabled: true }
```

还必须包含：

- plan id / price id / user id / entitlement metadata。
- success_url / cancel_url。
- mode 区分 subscription 与 payment。
- credit_pack 必须验证 active Pro entitlement 后才创建 Session。

### 8.2 Billing / Accounting

订单、后台、webhook、财务导出必须区分：

- subtotal：不含税商品金额。
- tax：Stripe Tax 计算出的 VAT / GST / Sales Tax。
- total：subtotal + tax。
- tax_payable：代收税款，不计入收入。
- currency。
- customer country / billing address country。
- tax id collection status。

禁止：

- 把 total 全部计为 revenue。
- 把税额为 0 直接判定为 Stripe Tax 失败。California / New York 等电子服务场景可能按 tax code 计算为 0，需要看 Stripe Tax result。

### 8.3 Webhook 必需事件

必须处理并有测试证据：

- `checkout.session.completed`
- `customer.subscription.created`
- `customer.subscription.updated`
- `customer.subscription.deleted`
- `invoice.payment_succeeded`
- `invoice.payment_failed`
- `charge.refunded` 或 refund 相关事件

Webhook 硬要求：

- 验签通过后才处理。
- 幂等处理 event id。
- subscription 成功后写入 Pro entitlement、period start/end、monthly credits。
- subscription 取消/失败后降级或标记 grace period。
- credit_pack payment 成功后写入 purchased_credits、expiry、ledger entry。
- refund 后必须回滚或冻结对应 credits，并记录 ledger。

### 8.4 Refund

退款规则：

- Pro subscription refund：按 Stripe refund result 更新 subscription / entitlement 状态。
- Credit Pack refund：未使用 credits 全额回收；已使用 credits 进入人工 review 或按 policy 扣减。
- 所有 refund 记录必须保留 subtotal / tax / total / refunded_amount / refunded_tax。
- Refund policy 页面必须存在 `/refund`，并从 pricing/footer 可访问。

### 8.5 Stripe Tax 账号核对

上线前必须验证：

- Stripe key 与 Dashboard account id 一致。
- live/test mode 一致。
- Stripe Tax settings 可用。
- tax registrations 状态记录在上线 evidence 中。
- 8 个 registration 处于 Collecting and filing 的假设不能替代代码验收。

## 9. Machine-readable Pricing Contract

```json
{
  "project": "aieditorrsp",
  "version": "2026-06-10.prd-v4-pricing-contract",
  "currency": "USD",
  "public_plan_count": 3,
  "primary_paid_plan": "pro",
  "copy_prompt": {
    "free": true,
    "requires_auth": false,
    "requires_credits": false,
    "blocked_by_provider_state": false,
    "blocked_by_paid_state": false
  },
  "billing_toggle": {
    "enabled": true,
    "default": "yearly",
    "monthly_label": "$19/mo",
    "yearly_label": "$15/mo billed annually",
    "yearly_price": 180,
    "yearly_discount_percent": 21
  },
  "plans": [
    {
      "id": "free",
      "name": "Free",
      "public": true,
      "checkout_enabled": false,
      "price_monthly": 0,
      "display_conditions": ["all_provider_states"],
      "disabled_conditions": ["free_generation_when_provider_not_live", "free_generation_when_quota_unknown_or_exhausted"],
      "limits": {
        "copy_public_prompts": true,
        "successful_preview_edits_per_day_when_live": 2,
        "credits_per_successful_edit": 1,
        "hd_export": false,
        "batch": false,
        "saved_history": "only_if_implemented"
      },
      "cta_by_state": {
        "default": "Copy Prompt",
        "provider_live_quota_available": "Generate free preview",
        "anonymous_exhausted": "Sign in to continue",
        "signed_in_free_exhausted": "Upgrade to Pro",
        "provider_disabled": "Get notified when generation is live"
      }
    },
    {
      "id": "pro",
      "name": "Pro",
      "public": true,
      "checkout_enabled_when": ["provider_live", "checkout_enabled"],
      "checkout_disabled_when": ["provider_disabled", "provider_preview", "paid_disabled", "checkout_disabled"],
      "price_monthly": 19,
      "price_yearly": 180,
      "checkout_plans": ["pro_monthly", "pro_yearly"],
      "limits": {
        "monthly_credits": 200,
        "credits_per_successful_edit": 1,
        "monthly_credits_rollover": false,
        "failed_provider_calls_charge_credits": false,
        "unsafe_prompt_or_validation_failures_charge_credits": false,
        "future_hd_export_credits": 2,
        "future_batch_credits": "successful_outputs * (hd ? 2 : 1)"
      },
      "cta_by_state": {
        "provider_live_checkout_enabled": "Upgrade to Pro",
        "provider_live_checkout_disabled": "Join Pro waitlist",
        "provider_disabled_or_preview": "Get notified when generation is live",
        "signed_in_pro": "Manage plan"
      }
    },
    {
      "id": "business",
      "name": "Business / Team",
      "public": true,
      "checkout_enabled": false,
      "price_mode": "contact_or_waitlist",
      "business_cta_mode": "contact_or_waitlist",
      "entitlement_implemented": false,
      "allowed_claims": ["custom monthly credits interest", "batch workflow interest", "brand-safe workflow interest", "team review interest", "API interest list"],
      "forbidden_claims_until_implemented": ["seat management", "invoice billing", "team workspace", "admin permissions", "API SLA", "bulk checkout"],
      "cta": "Contact us"
    }
  ],
  "credit_pack_policy": {
    "public_plan": false,
    "standalone_public_purchase": false,
    "eligible_user_states": ["signed-in-pro", "pro-quota-low", "pro-quota-exhausted"],
    "checkout_enabled_when": ["provider_live", "checkout_enabled", "active_pro_user"],
    "non_pro_checkout_behavior": "403_or_redirect_to_pricing_without_stripe_session",
    "checkout_plan": "credit_pack",
    "price": 15,
    "credits": 100,
    "price_per_credit": 0.15,
    "expires_after_days": 365,
    "stackable": true,
    "consumption_order": ["monthly_credits", "purchased_credits", "free_daily"],
    "primary_cta_only_for": ["pro_quota_exhausted"],
    "hidden_for": ["anonymous", "signed-in-free", "provider-disabled", "provider-preview", "paid-disabled", "checkout-disabled"]
  },
  "paywall": {
    "anonymous_exhausted": {
      "primary_cta": "Sign in to continue",
      "secondary_links": ["See Pro pricing", "Copy Prompt instead"],
      "forbidden_ctas": ["Buy credit pack", "Billing options", "multiple equal buttons"]
    },
    "signed_in_free_exhausted": {
      "primary_cta": "Upgrade to Pro",
      "secondary_links": ["View plan details", "Copy Prompt instead"],
      "forbidden_ctas": ["Buy credit pack", "Contact as equal CTA", "multiple equal buttons"]
    },
    "signed_in_pro_exhausted": {
      "primary_cta": "Buy 100 add-on credits · $15",
      "secondary_links": ["Switch to yearly", "Contact us for team volume", "Copy Prompt instead"]
    },
    "provider_unavailable": {
      "primary_cta": "Copy Prompt",
      "secondary_links": ["Try again", "Use externally", "Get notified"],
      "credits_charged": false
    }
  },
  "checkout_enabled_plans": ["pro_monthly", "pro_yearly"],
  "checkout_enabled_plans_conditional": ["credit_pack_for_active_pro_only"],
  "business_checkout_enabled": false,
  "forbidden_words": ["unlimited", "unlimited generation", "unlimited credits"],
  "credit_metering": {
    "credits_per_successful_generation": 1,
    "charged_only_after_provider_success": true,
    "failed_provider_call_charged": false,
    "upload_validation_failure_charged": false,
    "unsafe_prompt_block_charged": false,
    "current_hd_or_batch_available": false,
    "future_hd_credits": 2,
    "future_batch_credits_formula": "successful_outputs * (hd ? 2 : 1)"
  },
  "cost_guardrail": {
    "estimated_provider_cost_per_successful_edit": 0.04,
    "free_daily_limit": 2,
    "pro_monthly_credits": 200,
    "pro_monthly_full_usage_provider_cost": 8.0,
    "minimum_credit_pack_price_if_enabled": 15,
    "monitor_high_usage_users": true
  },
  "tax_requirements": {
    "stripe_tax_required": true,
    "checkout_session_params": {
      "automatic_tax": { "enabled": true },
      "billing_address_collection": "required",
      "tax_id_collection": { "enabled": true }
    },
    "accounting_fields": ["subtotal", "tax", "total", "tax_payable", "currency", "billing_country", "tax_id_status"],
    "tax_is_revenue": false,
    "merchant_of_record_note": "Stripe Tax is not Merchant of Record; Nextfield Labs LLC remains operator unless a MoR provider is adopted."
  },
  "webhook_requirements": [
    "checkout.session.completed",
    "customer.subscription.created",
    "customer.subscription.updated",
    "customer.subscription.deleted",
    "invoice.payment_succeeded",
    "invoice.payment_failed",
    "charge.refunded"
  ],
  "implementation_blockers": [
    "Remove public Credit Pack pricing card",
    "Add Free / Pro / Business public pricing with monthly/yearly toggle",
    "Gate Pro checkout by provider-live + checkout-enabled",
    "Gate credit_pack checkout to active Pro users only",
    "Return single-primary-CTA paywall per auth/quota state",
    "Display Copy Prompt free and provider availability before purchase CTA",
    "Add visible 1 successful edit = 1 credit disclosure",
    "Verify Stripe Tax, billing address, tax id collection, webhook signature, refund ledger, subtotal/tax/total fields"
  ]
}
```

## 10. Design / Frontend / Backend / QA Acceptance Checklist

### 10.1 Design

- [ ] Pricing 页面公开主卡只有 Free / Pro / Business。
- [ ] Credit Pack 不作为公开主套餐卡出现。
- [ ] Monthly / Yearly toggle 或等价 segmented control 明确可见。
- [ ] Yearly 默认视觉优先，显示 `$15/mo billed annually` 和 `Save 21%`。
- [ ] Pricing 首段先说明 Copy Prompt is free。
- [ ] provider-disabled / preview 状态有清楚提示，不出现误导购买 CTA。
- [ ] Business 卡只显示 Contact / Waitlist，不像可购买套餐。
- [ ] Quota exhausted 面板每个状态只有一个主 CTA。
- [ ] Copy Prompt instead 作为低摩擦退路存在。

### 10.2 Frontend

- [ ] `/pricing` 按 Free / Pro / Business 渲染。
- [ ] public pricing 不渲染 Credit Pack 主卡。
- [ ] provider-disabled / provider-preview 时 Pro CTA 降级为 waitlist / notify。
- [ ] checkout-disabled 时所有付费 CTA 不跳 Stripe。
- [ ] anonymous exhausted 不显示 Buy credit pack。
- [ ] signed-in-free exhausted 不显示 Credit Pack checkout。
- [ ] signed-in-pro exhausted 才显示 Buy 100 add-on credits · $15。
- [ ] UI 明确 `1 successful edit = 1 credit`。
- [ ] UI 明确 `Failed provider calls never consume credits`。
- [ ] 禁止出现 unlimited 相关文案。

### 10.3 Backend

- [ ] `/api/credits` 不向 anonymous / signed-in-free 返回可购买 credit_pack 主 action。
- [ ] `/api/checkout/stripe?plan=credit_pack` 对非 active Pro 返回 403 或 redirect，不创建 Stripe Session。
- [ ] Pro checkout 仅在 provider-live + checkout-enabled + paid-enabled 时创建 Stripe Session。
- [ ] Stripe Checkout Session 包含 automatic_tax、billing_address_collection、tax_id_collection。
- [ ] Webhook 验签、幂等、subscription entitlement、credit ledger、refund rollback 均有测试证据。
- [ ] provider 失败、safety rejection、network timeout、upload validation failure 不扣 credits。
- [ ] 订单记录保存 subtotal / tax / total / tax_payable。

### 10.4 QA / Product Acceptance

- [ ] 匿名用户可免费 Copy Prompt。
- [ ] provider-disabled 时不能真实购买生成套餐。
- [ ] provider-preview 时不能承诺 live generation。
- [ ] provider-live + checkout-enabled 时 Pro monthly/yearly checkout 可用。
- [ ] Free quota exhausted 后主 CTA 正确，且无 credit pack 入口。
- [ ] Pro quota exhausted 后 add-on credit CTA 正确。
- [ ] Business 只有 Contact / Waitlist。
- [ ] Stripe Tax 参数可从代码或测试 session 证据验证。
- [ ] webhook 测试覆盖 subscription、payment failed、refund。
- [ ] 页面无 unlimited 文案。
