> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.crisscross.money/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.crisscross.money/_mcp/server.

# Senegal Mobile Money

> Mobile money operators and approval flows for Senegal (SEN) on CrissCross.

Mobile money in Senegal (`SEN`) is available through the operators below. Set `payerDetails.location` to `SEN` on the checkout session and pass the operator's `provider` slug on the payment. The operators enabled for your account are configured during onboarding.

For how a payment works, what you collect, sandbox testing, and error codes, see the [Mobile Money overview](/payment-method-mobile-money). For the end-to-end API sequence, see [Direct API: Mobile Money](/direct-api-integration-mobile-money).

### Operators

| Operator | `paymentDetails.provider` | Approval flow                                     |
| -------- | ------------------------- | ------------------------------------------------- |
| Orange   | `orange`                  | Handset prompt (USSD / push, PIN)                 |
| Free     | `free`                    | Handset prompt (USSD / push, PIN)                 |
| Wave     | `wave`                    | Redirect (QR on desktop, app deep link on mobile) |

### Wave

Unlike the handset-prompt operators, **Wave** approves through a redirect:

1. You initiate the payment as usual.
2. The customer's device is redirected to a page hosted by Wave. On desktop it shows a **QR code** the customer scans with the Wave app; on mobile it **deep links** straight into the Wave app.
3. The customer approves the transaction in the Wave app.
4. The customer is redirected back — to the **hosted checkout** if you use it, or to your **merchant page** (the session `redirectUrl`) on a Direct API flow.

As with the handset flow, the transaction stays `pending` until Wave confirms the outcome, which arrives by webhook and on the transaction state.