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

Does Piano support Stripe's Automatic card updates feature?

How It Works: Tokenization and Stripe-Managed Updates

Piano does not store full card details. Sensitive card data is stored ("vaulted") in Stripe. During checkout, Stripe tokenizes the payment method and returns a payment token to Piano. Piano stores the token plus limited, non-sensitive display data — for example, the last 4 digits and an expiration date.

When a card is reissued, Stripe can keep the underlying payment method current via card network updates. As a result, billing can continue without the customer re-entering card details, because charges are made using the existing token and Stripe uses the updated card information behind the scenes.

Enabling Stripe Account Updater in Piano

For Stripe, Account Updater is effectively enabled automatically once your Piano environment is connected to Stripe.

For more information on how to configure the Stripe payment provider in Piano, please refer to the Stripe payment provider article here.

To utilize the Automatic Card Updates feature, Piano sends a request to the Stripe API to add a webhook endpoint — one endpoint per Piano application (AID). See Limitations below for more details.

If you are unsure whether Stripe is applying updates for a specific card, Stripe is the source of truth for whether an issuer participates and whether an update has occurred.

Why a Card May Look Expired in Piano but Still Charge Successfully

It is possible for a card to appear expired (or outdated) in the Piano dashboard and/or the user's My Account page, while payments still succeed in Stripe. This happens because Piano charges using the Stripe token, and Stripe may have already updated the underlying card details associated with that token. Piano's stored display fields (such as expiry date) may not always refresh immediately — or at all — based solely on Stripe's behind-the-scenes update.

What this means operationally:

  • Do not assume billing will fail just because the expiry date displayed in Piano is in the past.

  • If you suspect increased declines, review specific affected users and compare transaction details in both systems.

When Stripe Updates Will (and Won't) Be Reflected in Piano

Stripe's automatic updates ensure successful billing, but they do not guarantee the Piano UI will always show the newest card metadata.

Typically updated for cards added through Piano: Automatic updates apply most reliably to payment methods originally added through a Piano checkout flow.

Updates made directly in Stripe may not show in Piano: If card details are changed directly in Stripe, those changes may not appear in Piano (dashboard or My Account) unless the payment method is later:

  • used in a Piano checkout,

  • updated by the user via their account (where supported by the provider/flow), or

  • added or updated by a customer service representative through Piano tools.

Editing Cards in My Account When Using Stripe

With Stripe as the payment provider, users generally cannot edit an existing card in-place within Piano's My Account or the publisher dashboard. Instead, the supported workflow is:

  1. Add a new card.

  2. Set it as the default payment method.

  3. Delete the old card (if desired).

If your My Account implementation does not allow adding a card, verify you are using the default/standard My Account Wallet components template, or that your customized UI still includes the add-card capability.

Discrepancies: Piano Shows One Card but Stripe Charged Another

If you notice that Stripe charged a card that does not match what Piano displays, the most common cause is Stripe Automatic Card Updates. Stripe may have updated the underlying card number or expiry while the token remained valid, allowing charging to continue.

Recommended checks:

  • Confirm the charge and payment method details in Stripe for the specific transaction.

  • Compare with the payment method details stored/displayed in Piano.

  • If further clarity is needed on why a particular update occurred (or didn't), contact Stripe Support, as the update logic depends on issuer/network participation.

Apple Pay Subscriptions via Stripe

For Apple Pay transactions processed by Stripe, card changes (such as a new expiration date or updated card number) may also be handled via Stripe's automatic updates. As with standard cards, Piano uses a Stripe token rather than storing full card data. UI display in Piano may not immediately reflect Stripe's updated card metadata, even when billing continues successfully.

Troubleshooting Checklist

If you are investigating card updates or unexpected declines:

  • Identify the payment provider (Stripe vs. another provider).

  • In Stripe, check whether the payment method for the subscription/customer shows updated details.

  • In Piano, note that displayed expiry/last 4 digits may be stale even if billing is working correctly.

  • If a user needs to force a visible update or switch cards, have them add a new card and set it as default.

  • If declines are increasing, analyze specific user accounts and payment attempts rather than relying on the displayed expiration date alone.

Limitations

To utilize the Automatic Card Updates feature, Piano sends a request to the Stripe API to add a webhook endpoint. One webhook endpoint is added per Piano application (AID). If you are using one Stripe account for multiple applications (AIDs) and enable this feature for all of them, Piano will request to create as many endpoints as you have Piano apps.

There is a limit of 16 webhooks per account on Stripe's end. If you need to use Piano with Stripe across more than 16 apps, we recommend setting up multiple Stripe accounts, as the limit applies per Stripe account. For example, setting up 2 separate Stripe accounts would allow you to accommodate up to 32 Piano apps with the Automatic Card Updates feature enabled.

Last updated: