Overview
A session is created every time a customer opens a checkout, whether they're signing up for a subscription, paying a one-off invoice, or saving a payment method. Session details show you the parameters the session was created with, including settings controlled by the Checkout configuration used, and exactly what happened during that checkout attempt: which device and browser the customer used, whether they hit a 3-D Secure challenge, and where they ended up. Use this article to understand what you're looking at and how to use it for troubleshooting.
Where to find session details
Customer details: for every session across that customer's account (subscriptions, invoices, and payment-method updates together). Open the customer and go to the Sessions section. Use this when you don't know which specific subscription or invoice a checkout attempt belongs to.
Subscription details: for recurring and subscription sign-up sessions. Open a subscription and go to the Sessions section.
Invoice details: for one-off payments (charges). Open the invoice and go to the Sessions section.
Note
A subscription or invoice can have more than one session. Every time a customer opens the checkout, including retries after a failed or abandoned attempt, a new session is created. On subscription and invoice pages, the Sessions section only appears once at least one session exists.

What you can do with session details
Customer says the checkout link doesn't work
Check expires in the session summary first — the link may have simply timed out.
Customer's payment failed or they abandoned checkout
Walk through the activity log in order to see exactly where things stopped. A few key events to look for:
SHOW— confirms what device/browser/OS they actually saw, useful if they describe a display issueCARD_VALIDATION— shows if they struggled entering card detailsCHARGE— expand this to see the transaction result, error code, and error message if the payment itself failed
Customer's bank asked them to verify the payment (3-D Secure)
Look for SCA_FRAME (challenge was shown) and SCA_RETURN (result came back). Note that SCA_RETURN isn't clickable in the UI — you'll need to use the copy icon in the "Event list" panel header to pull the full JSON and check the raw result there.
Customer says their card wasn't saved
Check the PM_SAVE event the same way — copy the event list as JSON and look at its result field, plus errorCode/errorMessage if it failed. Also check the recurring field in the summary to confirm the session was even meant to store a card.
You want to reproduce what the customer saw
Each session has a link icon that opens the live checkout page directly.
Escalating to Frisbii support
Just grab the session id (starts with cs_) — that's all support needs to pull up the exact same session on their end.
Session types
The type field tells you what the customer was asked to do in that checkout:
Type | What it means |
|---|---|
| The customer paid a one-off invoice. |
| The customer saved a payment method without an immediate payment — for example, when updating their card on file. |
| The customer signed up for a subscription, and may have paid the first invoice as part of the same checkout. |
Session summary fields
The top of a session shows a summary with these fields:
Field | Description |
|---|---|
| The unique session ID (starts with |
| The kind of session. See Session types above. |
| The language and region the checkout was displayed in (for example, |
| Whether the session stores a payment method for future charges. On a |
| The customer this session belongs to. Click through to their customer record. |
| If the session is tied to a subscription, the subscription it belongs to. Click through to the subscription. |
| If the session is tied to a one-off invoice, the invoice it belongs to. Click through to the invoice. |
| When the session was generated. |
| When the checkout link stops being valid. If a customer reports "the link doesn't work," check this first. |
| The currency used for the transaction. |
| The actual checkout link presented to the customer. |
| Where the customer is redirected if they cancel or the payment fails. |
| Where the customer is redirected after a successful checkout. |
JSON example
{
"id": "cs_7e806516aad736861b3d0935eb14fa9e",
"type": "RECURRING",
"locale": "en_GB",
"expires": "2026-11-05T09:38:18.688+00:00",
"recurring": true,
"customer": "cust-0004",
"created": "2026-08-05T09:38:18.655+00:00",
"currency": "EUR",
"url": "https://checkout.reepay.com/#/cs_7e806516aad736861b3d0935eb14fa9e",
"cancel_url": "https://customer-portal.frisbii.com/#/dashboard?success=false",
"accept_url": "https://customer-portal.frisbii.com/#/dashboard?success=true"
}Session activity log
Below the summary, you'll find a timestamped log of everything that happened during the checkout. Each entry has a name (the action), a type (the outcome - SUCCESS, INFO, or ERROR), and further details specific to that action in data.
Event | What it tells you |
|---|---|
| The customer opened the checkout link. Shows their IP address and browser. If the customer revisits an already-completed session, this can also show a result like |
| The checkout page rendered. Shows device type, screen size, browser, and operating system — useful for confirming what the customer actually saw. |
| The customer's card details were validated field-by-field as they typed (for example, a hint about the expiry date format). Useful for spotting where a customer struggled with the form. |
| A secure token was issued to the checkout page (or failed — click to expand for error/status details if so). |
| The customer was shown a Strong Customer Authentication (3-D Secure) challenge from their bank. |
| A token related to the 3-D Secure flow was requested. |
| The result came back from the 3-D Secure challenge. This event isn't clickable — the admin UI has no expandable detail view for it. To inspect the raw result, use the copy icon in the "Event list" panel header to copy the entire event log as JSON, then find this event in the array. |
| The actual payment attempt was processed. Click to expand for the result, transaction state, transaction error, error code/message, and payment method. |
| The payment method was saved to the customer's account. Like |
| The subscription's payment method was set or changed as part of this session. |
| A custom return URL was passed through and recorded for this session. |
| The customer was redirected back to your site — to the |
| The result came back from a redirect-based payment method (e.g. Vipps, MobilePay, Swish). |
| The result of an age-verification step came back (used by some payment methods for age-restricted purchases). |
| The checkout loaded inside a mobile app's embedded webview rather than a regular browser. |
Note
Depending on which payment method the customer chose, you'll see many more method-specific events — around 90 in total. These include client-load events for Apple Pay and Google Pay (AP_LOAD/AP_FRAME, GP_LOAD/GP_FRAME), and a *_START event for nearly every supported payment method — Klarna (Pay Now/Pay Later/Slice It/Direct Debit/Direct Bank Transfer), PayPal, Swish, Resurs, Vipps (standard/Recurring/ePayment), MobilePay (MPS/MPO), and dozens of localized redirect methods (BLIK, iDEAL, Przelewy24, Giropay, Bancontact, EPS, MB WAY, Multibanco, MyBank, Trustly, TWINT, WeChat Pay, SEPA, and more). These all follow the same name/type/data structure and can be read the same way.
JSON example
[
{
"name": "GET",
"type": "SUCCESS",
"data": {
"ip": "3.124.222.54",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36"
},
"session": "cs_7e806516aad736861b3d0935eb14fa9e",
"timestamp": "2026-08-05T09:38:22.040+00:00"
},
{
"name": "SHOW",
"type": "SUCCESS",
"data": {
"sr": "2560x1392",
"vp": "2560x1271",
"de": "UTF-8",
"sd": 24,
"ul": "de-de",
"os": "windows",
"browser": "chrome",
"device_type": "desktop",
"window_type": "webpage",
"active_module": "/checkout",
"active_url": "https://checkout.reepay.com/#/cs_7e806516aad736861b3d0935eb14fa9e",
"parent_url": "https://checkout.reepay.com/#/cs_7e806516aad736861b3d0935eb14fa9e",
"app_version": "1.503",
"appId": "rp-webpage-1785922702438"
},
"session": "cs_7e806516aad736861b3d0935eb14fa9e",
"timestamp": "2026-08-05T09:38:22.270+00:00"
},
{
"name": "CARD_VALIDATION",
"type": "INFO",
"data": {
"message": "Enter expiration date in MM/YY format",
"fieldName": "CARD_DATE",
"appId": "rp-webpage-1785922702438"
},
"session": "cs_7e806516aad736861b3d0935eb14fa9e",
"timestamp": "2026-08-05T09:38:29.851+00:00"
},
{
"name": "TOKEN",
"type": "SUCCESS",
"data": {
"appId": "rp-webpage-1785922702438"
},
"session": "cs_7e806516aad736861b3d0935eb14fa9e",
"timestamp": "2026-08-05T09:38:36.423+00:00"
},
{
"name": "SCA_FRAME",
"type": "INFO",
"data": {
"acs_url": "https://acs165.sandbox.3dsecure.io/browser/challenge/manual",
"frameType": "3dsv2-challenge",
"metadata": {
"os": "Windows",
"browser": "Chrome",
"window_type": "webpage"
},
"appId": "rp-webpage-1785922702438"
},
"session": "cs_7e806516aad736861b3d0935eb14fa9e",
"timestamp": "2026-08-05T09:38:57.268+00:00"
},
{
"name": "SCA_RETURN",
"type": "INFO",
"data": {
"id": "ct_b008d12f9b0af65c3fdef7362118172d",
"recurring": false,
"action": "challenge",
"isCheckout": null,
"appId": "rp-webpage-1785922840131"
},
"session": "cs_7e806516aad736861b3d0935eb14fa9e",
"timestamp": "2026-08-05T09:40:47.287+00:00"
},
{
"name": "PM_SAVE",
"type": "SUCCESS",
"data": {
"result": "SUCCESS",
"errorMessage": null,
"errorCode": null,
"payment_method": "ca_01a846a293db0650140e29515acc59c0"
},
"session": "cs_7e806516aad736861b3d0935eb14fa9e",
"timestamp": "2026-08-05T09:40:49.085+00:00"
},
{
"name": "REDIRECT_ACCEPT",
"type": "INFO",
"data": {
"uri": "https://customer-portal.frisbii.com/#/dashboard?success=true&id=cs_7e806516aad736861b3d0935eb14fa9e&customer=cust-0004&payment_method=ca_01a846a293db0650140e29515acc59c0"
},
"session": "cs_7e806516aad736861b3d0935eb14fa9e",
"timestamp": "2026-08-05T09:40:49.256+00:00"
}
]