RevBridge should block subscriptions it cannot migrate safely.
Unsupported cases are normal in acquisition billing data. The goal is to find them before execution, not during a live migration.
Unsupported subscription shapes
Dry-run blockers can include:
- No billing-relevant source subscriptions to evaluate.
- Stripe Test Clock subscriptions in a broad account scan. Stripe's list API requires filtering by a specific Test Clock or customer to return them, and RevBridge v1 does not ask for a Test Clock ID.
- Destination customers that already have non-terminal subscriptions outside the current RevBridge migration plan. Stripe Customer Data Copy should produce customer shells, not buyer-side subscriptions.
- Multi-item subscriptions whose items bill on different intervals/interval counts or report different
current_period_endtimestamps. Multi-item subscriptions are supported when every item shares one billing interval and one period end. - Subscription schedules and Stripe billing schedules.
- Paused subscriptions.
- Subscription statuses outside
activeand validtrialing, includingincomplete,past_due, andunpaid. - Unsupported trial settings, including unknown missing-payment-method behavior values.
- Stripe Trial Offers on subscription items.
- Manual invoice collection.
- Custom
cancel_attimestamps earlier than the next renewal. A scheduled cancellation at or beyond the next renewal is supported and mirrored exactly onto the destination subscription. - Billing thresholds.
- Pending subscription updates or pending invoice-item intervals. A
pending_setup_intentalone does not block; Stripe attaches one to ordinary shapes such as no-card trials and zero-amount subscriptions, and RevBridge binds the buyer-side payment instrument explicitly regardless. - Billing cycle anchor config.
- Outstanding latest invoice balances.
- Non-zero draft/open/uncollectible customer invoices in either Stripe account.
- Pending source invoice items on the customer or subscription.
- Pending destination invoice items on the customer or recovered destination subscription.
- Subscription presentment details or adaptive-presentment currency state.
- Unknown billing modes or flexible billing configuration fields RevBridge does not yet preserve. Classic and flexible billing modes are both supported; the destination mirrors the source mode and its
proration_discountssetting. - Connect transfer, application-fee, or on-behalf-of settings.
- Custom subscription payment settings, including non-card payment method types, payment method options, non-off save-default behavior, or non-empty future payment setting fields RevBridge does not yet preserve. An explicit card-only
payment_method_typesis allowed because it matches what RevBridge pins on every destination subscription. - Custom subscription invoice settings.
- Customer-level invoice rendering settings.
- Missing current period end.
- Destination subscription already migrated in an unsafe way.
Unsupported price shapes
Dry-run blockers can include:
- Metered prices.
- Recurring intervals outside Stripe's documented
day,week,month, oryearvalues. All documented intervals and interval counts are supported. - Tiered price structures.
- Custom unit amounts.
- Transform quantity behavior.
- Multi-currency prices with
currency_options. - Missing recurring price data.
Unsupported discount or tax cases
Dry-run blockers can include:
- Promotion codes.
- Item-level discounts.
- Customer-level discounts in either Stripe account.
- Non-zero customer balance, invoice credit balance, or cash balance in either Stripe account.
- Customer tax settings or tax IDs in either Stripe account. Explicit price
tax_behavioris supported: clones preserve it verbatim and destination subscriptions always disable automatic tax. - Customer-level invoice rendering settings in either Stripe account.
- Multiple discounts.
- Product-scoped coupons.
- Repeating coupons whose remaining discount window cannot be reproduced by any whole-month clone duration (common on weekly and daily intervals). Repeating coupons with a matchable window are carried with a remaining-months clone; windows that end before the next renewal migrate without the coupon, with a warning.
- Stripe Tax, default tax rates, and item tax rates.
Unsupported payment method cases
Dry-run blockers can include:
- Destination customer has no payment method for a recurring subscription that can collect a future non-zero invoice.
- Payment method mapping is missing.
- Payment method mapping is ambiguous.
- Non-card payment instruments, such as bank debits or wallets, are unsupported in v1.
- Source customer has no usable payment method.
Copied legacy card/source IDs are supported when RevBridge can fingerprint-match the card to exactly one destination card instrument. In that case the destination subscription is created with an explicit default_source. If both a copied legacy source and a modern pm_... PaymentMethod match the same source card fingerprint, RevBridge blocks the subscription as ambiguous instead of guessing which buyer-side instrument Stripe should charge.
True active trials with no source payment method are a warning only when the mapped destination customer has at least one card instrument for operator review. Destination customers with zero cards are blocked when renewal can collect a non-zero amount because that would require a buyer-side payment instrument. Provably non-collecting recurring subscriptions, such as price 0, quantity 0, or a supported forever coupon that fully discounts the subtotal, do not require payment binding.
Resolve before execution
Do not treat blockers as minor warnings. A blocked subscription needs remediation or a documented manual exception path.