We’ve migrated our documentation to a new site, which means some URLs have changed.
Subscriptions

Piano Stripe Billing Integration Guide - Manage Subscriptions

Stripe Billing Integration Series — Part 3 of 3

Previous: ← Part 2: Set Up and Configure Stripe Billing
Earlier: Part 1: Stripe Billing Integration Overview

You are reading: Manage Subscriptions with Stripe Billing

Subscription Operations

All your familiar Piano subscription management features continue to work.

This article provides a general overview of Stripe Billing subscription management. For a complete breakdown of all configuration steps, supported features, and detailed implementation instructions, learn more in Stripe Billing integration.

Supported Operations

  • Update payment methods

  • Toggle auto-renewal on/off

  • Change next billing date

  • Cancel subscriptions immediately

  • Process refunds (full and partial)

  • Upgrades and Downgrades

  • Manual renewal in Dashboard and My Account

Important Notes

Changing Next Billing Date:

When you change a subscriber's next billing date, Piano creates a complimentary period between now and the new date. In the Stripe Dashboard, you may temporarily see a $0 price until the new billing date arrives. This is expected behavior. Also, note due to risk protection only up to 3-year billing periods are supported by Stripe, therefore you cannot set a next bill date beyond 3 years currently.

Canceling Subscriptions:

  • Cancellation without refund: immediate effect

  • Cancellation with refund: refund processes first, then cancellation completes

Payment Method Updates: Non-Stripe payment methods (BYOP) are now supported — see the Non-Stripe Providers section for more details.

Manual Renewal:

The core Manual renewal flow in MyAccount and Dashboard is supported for Stripe payment methods (Stripe CC, Stripe Elements sync, Stripe Apple Pay) and BYOP payment methods. This covers both pre-billing renewal and grace-period escape scenarios.

Upgrade Operations for BYOP Subscriptions : For BYOP subscriptions, the upgrade plan change is applied immediately and payment is collected afterwards. The key difference from Stripe-native is what happens on payment failure:

BYOP Type

Example Methods

On Upgrade Payment Failure

BYOP sync

Synchronous card charge via non-Stripe PSP

Grace period starts

BYOP async

Direct debit, bank transfer (result returns days later)

Subscription cancelled immediately. No grace period.

Multi-currency and Multi-customer Support :

Stripe maintains a separate customer record per currency. Piano automatically detects and resolves multi-currency and multi-customer configurations during migration — no manual setup required.

  • Eligible methods only: Subscribers will only see payment methods eligible for their subscription's customer and currency. If a previously saved method is no longer eligible, the subscriber will be prompted to add a new one.

  • Currency-aware payment method capture: When adding a new Stripe payment method, subscribers select their currency. Piano ensures the method is attached to the correct Stripe customer automatically.

  • Ongoing protection at checkout: Piano's automated fixing tasks progressively align each subscriber to one Stripe customer per currency.

Non-Stripe Providers (BYOP)

Piano's Stripe Billing integration supports publishers who process payments through non-Stripe processors — including Braintree, Datatrans, and other PSPs. Existing and new subscriptions using these payment methods can be switched to Stripe Billing.

BYOP (Bring Your Own Processor) refers to subscriptions where payment is collected through a third-party PSP — such as Braintree or Datatrans — rather than through Stripe's native payment infrastructure. In BYOP mode:

  • Stripe manages the subscription schedule, invoice lifecycle, and billing records.

  • Piano processes the actual payment charge through your configured PSP.

  • All transactions are recorded in Stripe as invoices, maintaining a complete and auditable billing history.

This approach — sometimes called "out-of-band" billing — is Stripe's canonical pattern for publishers who want Stripe Billing's infrastructure while retaining their existing payment processor relationships.

BYOP renewal flow

When a BYOP subscription renews, the following sequence occurs:

Step

Who

What Happens

1

Stripe

Generates and finalizes the renewal invoice on schedule

2

Piano

Extends subscriber access based on invoice finalization

3

Piano → Your PSP

Processes the payment charge through your processor

4a

Piano (success)

Marks the Stripe invoice as paid — subscription stays active

4b

Piano (failure)

Initiates grace period; Piano manages retry attempts via your PSP

BYOP vs. Stripe-native: key differences

Capability

Stripe-Native

BYOP (Non-Stripe)

Payment processing

Stripe

Your PSP (via Piano)

Invoice management

Stripe

Stripe

Subscription lifecycle

Stripe

Stripe

Access extension trigger

invoice.paid

invoice.finalized

Retry / dunning logic

Stripe Smart Retries

Piano retry schedule

Stripe Dashboard reporting

Full

Full (invoices marked as out-of-band)

Subscription switching

BYOP support enables switching to Stripe Billing for all subscription types, even when the subscriber's payment method is non-Stripe:

  • Existing active subscriptions (via the bulk migration process)

  • Newly purchased subscriptions at the point of checkout

  • One-time payments (one-offs)

  • Gift subscriptions

Grace period and retry handling for BYOP

  • Failed renewal payment: subscription enters grace period (duration configurable per publisher).

  • Subscriber access maintained during grace period.

  • Piano retries payment via your PSP on configured retry schedule.

  • Success: invoice marked paid, subscription continues. Exhausted: subscription cancelled.

Note: Smart Retries

Stripe Smart Retries are only available for Stripe-native payment methods. BYOP subscriptions use Piano's retry logic for renewals. A subscriber can switch to a Stripe-native payment method at any time to opt in to Smart Retries.

Subscription Upgrades & Downgrades

Upgrade model: Stripe subscription-first

Piano now uses Stripe's subscription-first model for all upgrades. This means:

  • The subscription plan change is applied to Stripe immediately when an upgrade is initiated, subscription remains the same in Stripe.

  • Payment is collected after the subscription change — not as a prerequisite to it.

  • If payment fails, the subscriber enters a grace period with Stripe Smart Retries — the subscription change is NOT rolled back.

  • All upgrade channels (My Account, Checkout, Publisher Dashboard, API, Action Manager) behave identically.

Note: This is a behavioral change from legacy Piano billing, where immediate upgrades made via MyAccount, Dashboard and API resulted in a rollback (no charge, no change) but not Onsite Upgrades which already follow the subscription-first model.

Supported upgrade types

  • Immediate upgrade (billing_timing=0): The plan change and payment happen at the moment of the upgrade request. Stripe creates a two-phase Subscription Schedule — Phase 1 ends immediately, Phase 2 (new plan) starts with a prorated charge.

  • End-of-billing-cycle upgrade (billing_timing=1): The plan change is scheduled to take effect at the end of the current billing period. Stripe creates a Phase 1 (current plan, runs to period end) and Phase 2 (new plan, starts at period end).

  • Payment-to-payment only: Only upgrades between payment term subscriptions are supported. Dynamic-to-payment and Scheduled-to-payment upgrade offers are not supported and must be disabled before switching.

  • Same currency: Stripe subscription currency is immutable. Cross-currency upgrades are not supported.

  • Pending upgrades: Subscriptions with an already scheduled (deferred) upgrade will not be switched to Stripe Billing until that upgrade executes or is cancelled.

When a subscriber upgrades to a higher tier, access to the new plan is granted immediately. Payment for the upgrade is collected in a separate step after the subscription is updated. If payment fails, the subscription enters a grace period and the subscriber is directed to update their payment method via their account page. The subscription ID remains the same throughout — no new subscription is created.

Supported Features Overview

Scenario

Status

Payment term → Payment term (upgrades and downgrades)

✓ Supported

Immediate upgrade with or without proration

✓ Supported

Deferred upgrade (end of billing period)

✓ Supported

Deferred upgrade with early access to new resource

✓ Supported

Upgrades for BYOP subscriptions

✓ Supported

Suspend / resume upgrade

✓ Supported

Upgrade cancellation (admin)

✓ Supported

Upgrades via My Account, Dashboard, API, on-site

✓ All channels supported

Understanding Your Data in Stripe

Stripe Dashboard Navigation

Your Piano data appears in Stripe as follows:

Home Dashboard: Overview of transactions and subscription activity

Transactions Tab: Shows all payment attempts and completions

  • Note: New subscriptions may show two transactions (one cancelled; one succeeded). This is expected behavior from Stripe's API and is purely visual. The correct payment is associated with your subscription invoice; this only applies to new purchases. Subscribers will only see a single transaction in the Piano Dashboard and on their credit card or bank statement.

Customers Tab: Piano users mapped to Stripe customers

Subscriptions Tab: All active Piano subscriptions

  • View current and upcoming invoices

  • See subscription details and billing schedules

Product Catalog Tab: Piano Resources converted to Stripe Products

  • Includes Piano metadata (Resource titles, IDs)

  • Do not modify products or tax rates directly in Stripe

Tax Rates

Piano automatically creates manual tax rates in Stripe based on your existing Management + Billing tax configuration. These rates are synchronized between systems and should not be modified in the Stripe Dashboard.

Automatic Stripe Tax is not supported in the current phase and must not be enabled as it will lead to conflicts.

Rounding Differences: Due to different rounding rules between Piano's tax providers and Stripe, you may occasionally see differences of $0.01 or equivalent in the smallest currency unit. This only affects excluded tax amounts.

Reporting

Available Stripe Reports

Financial Reports:

  • Balance Summary Report

  • Revenue by Customer Report

  • Revenue by Product Report

Billing Reports:

  • Subscription Analytics Report

  • Subscription Churn Report

  • Monthly Recurring Revenue (MRR) Report

  • Invoice Status Report

  • Revenue Recovery Report

Revenue Recognition Reports:

  • Income Statement (requires Stripe Revenue Recognition - paid feature)

Piano Reports

Your existing Piano Subscription Insights and churn reporting continue to function, with Stripe billing events flowing back to Piano for comprehensive analytics.

Stripe's configured retry policy details (specific retry count and schedule) are not available in Piano reports since they're determined dynamically by AI.

Best Practices

Do's ✓

  • Configure Revenue Recovery in Stripe Dashboard before going live

  • Use Piano Dashboard for all subscription management operations

  • Continue using Piano email notifications (recommended)

  • Review Stripe reports alongside Piano analytics for complete visibility


Don'ts ✗

  • Never modify Product Catalog items directly in Stripe Dashboard

  • Never change tax rates created by Piano in Stripe

  • Avoid making subscriber changes directly in Stripe (use Piano Dashboard)

  • Don't configure multiple Stripe accounts for a single Piano application

  • Don't enable Stripe Tax (not yet supported - use Piano tax configuration)

  • Don't make any direct changes to subscriptions, invoices, or associated entities in Stripe as this will cause out-of-sync states

Minimum Charge Amounts

Stripe enforces minimum chargeable amounts by currency (e.g., $0.50 USD, €0.50 EUR, £0.30 GBP).

If an invoice amount falls below this minimum:

  • Stripe automatically marks the invoice as paid

  • The amount is deducted from customer credit balance if available

  • Otherwise, the customer receives the amount free

This commonly occurs with:

  • Prorated amounts from subscription changes

  • Very small subscription costs

  • Tax-only invoices

  • Remaining balances after partial payments

Troubleshooting

Invoice Validation Errors

Piano validates all invoices before finalization. If validation fails:

  1. Payment collection stops automatically

  2. Access is extended (minimum 3 days to prevent disruption)

  3. Piano support is alerted to investigate

  4. Issue is resolved and invoice re-finalized

Two Transactions Appearing

For new subscriptions, you may see two transactions in Stripe - one cancelled and one succeeded. This is expected behavior from Stripe's API and is purely visual. The correct payment is associated with your subscription invoice; this only applies to new purchases.

Payment Method Changes

Changing a subscriber's payment method between Stripe and a non-Stripe provider is not yet available.

Out-of-Sync Subscriptions

If a discrepancy occurs during validations, Piano will automatically cross-check all relevant states and entities to correct and update the subscription as necessary.

If you use Stripe Billing to directly manipulate Piano-managed Product catalog, Subscriptions, or Invoices and Piano cannot cross-check entities, such subscriptions will become out-of-sync. For out-of-sync subscriptions:

  • Piano will stop managing subscription billing and collection

  • Subscription and transaction data will no longer be accurate in the Piano Dashboard

  • Piano will keep extending access to the original subscription resource(s) while the subscription is active in Stripe

  • You will see a notification in the Subscription details view

If an out-of-sync situation occurs unexpectedly, please contact the Piano support team immediately.

Getting Help

Documentation

Support

For assistance with Piano's Stripe Billing integration:

  • Contact your Piano Account Manager

  • Submit support tickets through Piano Dashboard

  • For Stripe-specific billing questions, consult your Stripe Account Manager

You've reached the end of the Stripe Billing Integration Series

Previous: ← Part 2: Set Up and Configure Stripe Billing
Start over: Part 1: Stripe Billing Integration Overview


Last updated: