This page explains the concepts. To turn it on step by step, follow the customer-portal setup guide.
A separate customer-facing API
The Customer Portal is a customer-facing surface: your customers sign in passwordlessly with a magic link and manage their own billing. It is a separate API from the merchant/v1 API — portal endpoints live under
/portal and authenticate with a session cookie, not your API key. Your
backend never proxies these calls; you only kick off the magic link.
What a signed-in customer can do today:
View & pay invoices
List invoices, open the hosted checkout, download a PDF.
Update the card on file
Stripe SetupIntent for cards, or re-authorize a UPI AutoPay mandate.
Raise a dispute
Query or dispute one of their own invoices.
Redeem a gift code
Apply a gift code to their account.
Subscription cancellation is handled by the separate
cancel-flows feature (surveys, retention
offers, confirmation) rather than a raw portal endpoint.
How authentication works
There is no merchant-side “create session” call. Your app (or the customer) posts the email; Recurso emails the link; clicking it starts the session. Full flow in Magic Links.Portal API surface
All data endpoints require theportal_session cookie set by
/portal/auth/verify.
Branding & configuration
Portal branding (logo, colors, support email) and which self-service actions are exposed are dashboard settings, not API calls — configure them under Settings → Portal in the Recurso dashboard. There is no/v1/settings/portal endpoint.
Security
- Time-limited magic links — single-use tokens, short expiry.
- Session cookie —
portal_session, valid 7 days. - Email-enumeration safe —
/portal/auth/requestalways responds positively, whether or not the email exists. - Audit trail — portal actions land in the append-only audit log.
Next Steps
Magic Links
The passwordless auth flow, end to end.
Self-Service
Invoices, card updates, mandates, disputes.
Cancellation Flows
Surveys, retention offers, and confirmation.
Gifts
How gift codes are purchased and redeemed.