Skip to main content
Customers sign into the portal with a magic link — no passwords, no accounts to manage. The flow is two endpoints: request a link, then verify the token it carries. POST /portal/auth/request is public (no API key). Call it from your app when a customer clicks “Manage billing”, or let the customer enter their email on a page you host:
The response is identical whether or not the email belongs to a customer — this prevents email enumeration. In development (APP_ENV=development) the response also includes a _dev_link so you can click through without a mailbox.

2. Verify the token

The emailed link points at your portal with a one-time token. Exchanging it starts a 7-day session and sets the portal_session cookie:
From here, every /portal/api/* call is authenticated by the portal_session cookie (browsers send it automatically):

Flow

Security

  • Single-use tokens with a short expiry — a link works once.
  • Sessions last 7 days; POST /portal/api/logout ends one early.
  • Enumeration-safe request endpoint (always a positive response).
Email branding (from-name, logo, subject) is a dashboard setting under Settings → Portal, not an API field — there is no /v1/settings/portal endpoint.

Next Steps

Self-Service

What a signed-in customer can do: invoices, card updates, mandates, disputes, gifts.