Non-Stripe Providers (BYOP)
BYOP (Bring Your Own Processor) enables clients to continue using their existing non-Stripe payment processor, such as Braintree or Datatrans, while Piano manages the full subscription lifecycle through Stripe Billing. In this model, Stripe acts as the subscription engine (schedules, invoices, renewal logic), while your processor handles the actual charge.
This means you get Stripe Billing's invoice and subscription scheduling combined with your existing payment infrastructure. Note: Stripe Smart Retries only support Stripe-native payment methods. For BYOP subscriptions, the grace period and retry logic configured in Passive Churn Prevention apply instead. Retries continue to be managed in Piano and by your processor, as specified by your PSP integration in Piano.
BYOP renewal flow
The key difference in BYOP is which Stripe webhook event triggers subscription renewal in Piano. With Stripe-native payments, the invoice.paid event signals successful collection. With BYOP, the invoice.finalized event is used instead, since the actual payment is collected "out-of-band" by your processor.
|
Event |
Stripe-native |
BYOP |
|---|---|---|
|
|
Ignored for synchronous payments. For asynchronous payments (SEPA, Bacs, ACH) it initiates the renewal and sets the payment to PENDING. |
Triggers Piano subscription renewal, including the payment request to your processor and access extension |
|
|
Triggers renewal + access extension |
Confirms payment (informational) |
|
|
Starts Smart Retry grace period |
Starts grace period; your processor retries out-of-band |
|
|
Expires Piano subscription |
Expires Piano subscription |
BYOP vs Stripe-native comparison
|
Capability |
Stripe-native |
BYOP |
|---|---|---|
|
Payment processing |
Stripe handles charge |
Your processor handles charge, reflected as out-of-band in Stripe |
|
Subscription lifecycle |
Stripe Billing |
Stripe Billing |
|
Renewal trigger |
|
|
|
Smart Retries |
Fully supported |
Grace period only; retries managed by Passive Churn Prevention and your processor |
|
Invoice emails |
Optional (Stripe sends) |
Must be disabled to avoid a double charge. A Stripe invoice cannot be paid directly on a BYOP subscription. |
|
Multi-currency |
1 customer per currency |
1 customer per currency (same rule applies) |
|
Payment method management |
Via Piano/Stripe |
Via Piano/managed by your processor; Piano stores token reference |
Subscription Payment method changes
Clients can switch a subscriber's payment method between Stripe-native and BYOP within Piano. When switching, Piano updates the subscription's billing context and ensures the correct renewal trigger (invoice.paid vs invoice.finalized) is applied going forward. This transition is handled transparently without interrupting the subscriber's access.
Grace period
For BYOP subscriptions, the grace period is managed by Piano rather than Stripe Smart Retries. When invoice.finalized is received and your processor has not yet confirmed payment, Piano extends subscriber access for the configured grace period while your processor retries the charge. If the charge is not collected within the grace period, Piano expires the subscription.
Where the grace period is configured: grace period length is set per term under Manage → Terms. When Passive Churn Prevention is enabled, the length comes from a churn prevention logic under Management → Churn Prevention, which overrides term-level values with a 15-day default.
Your grace period settings continue to apply to BYOP subscriptions, because Piano still runs the retries. For Stripe-native subscriptions they are ignored: Stripe determines the retry schedule, and the grace period equals the billing period.
Payment method management
Non-Stripe payment methods are stored as references in Piano. When a subscriber updates their payment method in MyAccount, the token is updated in your processor and the reference is updated in Piano. Stripe does not hold the actual payment method for BYOP subscribers.
Multi-currency and multi-customer support
Piano fully supports subscribers transacting in multiple currencies. Because Stripe requires a separate customer object per currency, Piano automatically creates and manages additional Stripe customer records where needed. This happens transparently. From your perspective, there is one subscriber, and Piano handles the Stripe-side customer mapping.
This applies equally to both Stripe-native and BYOP subscribers. Your existing multi-currency business rules continue to operate as configured in Piano. In case of multiple concurrently active subscriptions in different currencies on a single subscriber, user will be asked to select currency in the MyAccount to ensure the payment method is properly associated with customer and currency in Stripe.
BYOP subscription operations
All standard Piano subscription management operations are available for BYOP subscriptions:
-
Auto-renew toggle on/off
-
Immediate cancellation (with or without refund)
-
Changing next billing date
-
Payment method update (updating token reference in your processor)
-
Subscription switching between BYOP and Stripe-native (in case you use both)
Upgrade operations for BYOP
Upgrade and downgrade operations for BYOP subscriptions follow the same 2:1 mapping as Stripe-native upgrades: Piano cancels the existing subscription and creates a new one with the target term and a proration credit applied, while in Stripe Billing subscription remains the same and a result of upgrade or downgrade is represented as an updated subscription Schedule period only, effectively retaining the same subscription. Piano calculates the proration amount, which is applied as net amount to the specified subscription schedule phase in Stripe.