> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ripio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting and support

> Where a user can get stuck inside the widget, what unblocks them, and how they reach support.

Errors inside the widget are handled by the widget: the user sees a message in their own language and a way forward, never a code or a stack trace. So when a user tells you they are stuck, what you need is the situation, not an error string.

### Where a user gets stuck, and what unblocks them

| What the user reports                      | What is happening                                                 | What unblocks them                                                                                                                                              |
| ------------------------------------------ | ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| "It asks me for a code and I never get it" | The email step has not completed                                  | Check the address they entered and resend; codes can be requested again after a short wait. See [Sign-in and terms](/ramps-api/widget/flows/identity-and-terms) |
| "It won't let me continue past the terms"  | The current Terms & Conditions are not accepted for that customer | They accept at sign-in. An acceptance you already registered through the API counts. See [Sign-in and terms](/ramps-api/widget/flows/identity-and-terms)        |
| "It says my identity is not verified"      | Verification is pending or was rejected                           | Verification can outlast the widget's wait and finish in review; the approval email closes the loop. See [Identity verification](/ramps-api/widget/flows/kyc)   |
| "I can't see my past operations"           | History is not enabled on your account                            | Nothing is broken — it is off by configuration. See [Partner settings](/ramps-api/widget/configuration/partner-settings)                                        |
| "It says the operation isn't available"    | The country or the payment method is not enabled for your account | Check what your account has enabled per country. See [Countries & payment methods](/ramps-api/overview/countries/overview)                                      |
| "It told me to start over"                 | The session token expired                                         | They restart from your platform, with a fresh token. See below                                                                                                  |
| "My payout never arrived"                  | The destination account could not be paid                         | The order is recoverable by changing the account. See [Recovering a rejected payout](/ramps-api/widget/flows/order-recovery)                                    |

<Note>
  The business rules behind these messages are the same ones you already know from your own integration — an amount over the limit, an account not enabled, a refund already registered. If you need the authoritative behaviour for one of them, the [Ramps API reference](/ramps-api/overview/introduction) is where it is specified.
</Note>

### Session lifetime

The session token you mint has a limited life. A user who leaves the widget open long enough will be told the session ended and asked to start again from your platform — which is why the widget cannot be embedded once and left running. Mint a token when the user is ready to transact.

### Support from inside the widget

The user can open a support form from most screens and describe what went wrong, with a short summary and a longer description. It opens a ticket against their identity, so Ripio's support team already knows who they are and which operations they have.

You are not cut out of it. Tickets raised this way are visible through the same public surface as the ones you create yourself:

* [Create Support Ticket](/ramps-api/support-tickets/create-support-ticket) — raise one on a customer's behalf from your own backend.
* [Support Ticket Webhook Events](/ramps-api/webhooks/support-ticket-events) — `SUPPORT_TICKET.CREATED` and `SUPPORT_TICKET.FAILED`, so your support team can see that a user reached out.

<Note>
  A user in the recovery flow whose emailed link has expired has no way to request a new one, so support is their route. See [Recovering a rejected payout](/ramps-api/widget/flows/order-recovery).
</Note>
