Paycose Docs
FlowEvents

Billing portal events

What data you get for billing_portal.configuration.created, .configuration.updated, and .session.created.

Fires when a merchant's self-serve billing portal configuration is created or updated, or when a customer opens a portal session.

Configuration events

Prop

Type

{
  "id": "bpc_01J9ABCDEFGHJKMNPQRSTV",
  "object": "billing_portal.configuration",
  "name": "Default portal",
  "active": true,
  "is_default": true,
  "features": {
    "customer_update": { "enabled": true },
    "invoice_history": { "enabled": true },
    "payment_method_update": { "enabled": true },
    "subscription_cancel": { "enabled": true, "mode": "at_period_end" },
    "subscription_update": { "enabled": true }
  },
  "default_return_url": "https://your-app.example/account"
}

.updated uses the identical shape โ€” you get the full current configuration both times, not a diff.

Session events

Prop

Type

{
  "id": "bps_01J9ABCDEFGHJKMNPQRSTV",
  "object": "billing_portal.session",
  "configuration": "bpc_01J9ABCDEFGHJKMNPQRSTV",
  "customer": "cus_01J8XYZABCDEFGHJKMNPQR",
  "return_url": "https://your-app.example/account",
  "expires_at": "2026-07-25T17:50:00Z"
}

The actual portal link is never included here โ€” it's a one-time credential, not something sent over a webhook. Capture it from the synchronous API response when you create the session.

On this page