Renewal links, receipts and the customer portal in Stripe
A customer who bought through your Stripe integration can get their key, open the receipt, renew and manage their subscription or orders without writing to you. All of it happens at your Stripe, never Sealcord’s: Sealcord shows no billing page of its own to your customers. This page says what you set up and what the customer sees.
Getting the key after a purchase
Section titled “Getting the key after a purchase”Stripe does not show Sealcord’s key, so Sealcord delivers it.
- Checkout success page. Set the Payment Link’s after-payment confirmation to redirect to
https://api.sealcord.com/purchase/success?checkout_id={CHECKOUT_SESSION_ID}. The page shows the key bought in that checkout, and refreshes itself while Stripe’s webhook has not arrived yet. It shows the key for 7 days after the purchase. - Find your licence. A customer who lost the page opens
console.sealcord.com/find-licence, types the email address they paid with and the payment intent id (
pi_…), and sees their keys any time. Both must match. Stripe’s receipt does not print the payment intent id, so give it to your customer, for example in your own confirmation. Every mismatch answers the same404 purchase_not_found, so nobody can use it to find out who bought what, and it is strictly rate limited.
Customers also find their keys in the Console under My licences, signed in with the email address the licence was issued to.
What a customer can open
Section titled “What a customer can open”In My licences, each licence shows the links your setup supplies. A link appears only when it can work.
| Link | Shows when | Opens |
|---|---|---|
| Receipt on Stripe | A Stripe payment issued the licence, live or ended, and its integration is connected | The receipt of the payment that issued it |
| Renew on Stripe | The licence has expired, its key has an end, and its mapping has a renewal link | Your Stripe Payment Link for the product |
| Manage subscription | The portal is on, the licence is live and a subscription issued it | The customer’s Stripe portal |
| Your orders | The portal is on, the licence is live and a one-time purchase issued it | The customer’s Stripe portal |
The receipt is Stripe’s own, fetched when the customer clicks and never stored. A licence has a receipt once a payment intent is recorded as its order (for a subscription, when its first invoice is paid). A checkout that charged nothing, a trial (also after it converts) and a subscription licence issued from a plan-limit deferral have none. Each link acts only on a licence sent to the signed-in customer’s verified address. Each customer may open receipts and the portal 10 times a minute and 60 an hour in all, so no customer can use up your Stripe rate limit.
Renewal links
Section titled “Renewal links”A mapping’s renewal link is where a customer renews: a Stripe Payment Link that sells that product (Stripe Dashboard, Payment Links). Paste it into the mapping. Sealcord accepts:
| Mode | Address |
|---|---|
| Live | https://buy.stripe.com/<id> |
| Test | https://buy.stripe.com/test_<id> |
A query string, such as prefilled_email, may follow. A Payment Link on your own custom domain,
such as pay.example.com, is refused: Sealcord cannot tell it from any other site, so use the
link’s buy.stripe.com address. Sealcord stores the link as a browser reads it and adds nothing
to it.
Turn on the customer portal
Section titled “Turn on the customer portal”The portal is off until you turn it on, for each integration.
- In Stripe, open Settings, Billing, Customer portal and save a configuration. Test and live mode have their own, so save one in each mode you use. Without one, a customer who clicks is shown “The subscription portal is not available. Write to …” (or “Your orders are not available. Write to …” on a one-time purchase’s licence).
- Give the integration’s key Customer portal, Write in Stripe. Edit the key’s permissions where Stripe lets you. Otherwise create a new restricted key with the read permissions and that one, disconnect the integration, connect it again with the new key (the same integration comes back, with its mappings and the portal setting) and set the signing secret again, because disconnecting erases it.
- In the Console, on the integration, an owner or admin turns on the customer portal.
With the portal on, every live licence from that integration links it: as Manage subscription when a subscription issued the licence, and as Your orders when a one-time purchase did. The portal shows the customer their invoices and subscriptions with you, not only that licence. A licence whose Stripe customer Sealcord does not know (a one-time Payment Link not set to create customers) shows no portal link. Turning the portal on does not check the permission with Stripe: a key without it, or an account without a saved configuration, makes the customer’s click fail with that message. Add what is missing and it works.
Questions
Section titled “Questions”Does the customer ever see Sealcord’s own billing?
Section titled “Does the customer ever see Sealcord’s own billing?”No. Receipts, renewal and the portal belong to you and your Stripe. Sealcord’s billing is for your plan and is only in your Console.
Why does a customer not see a receipt?
Section titled “Why does a customer not see a receipt?”The licence was not issued by a Stripe payment (a hand-issued licence has none), it was a free checkout, a trial or a subscription issued from a plan-limit deferral. For these My licences shows no receipt link at all. If a link shows but does not open, for instance because your key no longer reaches Stripe, the screen says to write to you, at the support address in your workspace settings when you set one.
Can a customer open the portal for a licence I issued by hand?
Section titled “Can a customer open the portal for a licence I issued by hand?”No. The portal needs Stripe’s customer, which a hand-issued licence does not have.