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

# Roqqett webhooks

> Subscribe to Roqqett webhook events for checkout sessions, failed payments, refunds and reconciliation.

<Warning>
  Roqqett webhook events aren't delivered yet. Until they are, confirm outcomes by polling [Retrieve a checkout session](/api-reference/checkout-sessions/retrieve-a-checkout-session) and [Retrieve a refund](/api-reference/refunds/retrieve-a-refund). The embedded checkout's [V1 webhooks](/pages/roqqett/embedded-checkout#step-5-handle-the-webhook) work as before.
</Warning>

Roqqett events are delivered through Equals webhooks, like every other Equals event. See [How it works](/pages/webhooks/how-it-works) for signatures and retries.

## Subscribe to an event

Create one webhook for each event type you want. To receive events for some of your checkouts only, add a `filters` object with up to 100 checkout IDs. Leave out `filters` to receive events for every checkout.

<Note>
  **POST** `/v2/webhooks`
</Note>

```bash theme={null}
curl -i -X POST \
  'https://api.equalsmoney.com/v2/webhooks' \
  -H 'Authorization: ApiKey {apiKey}' \
  -H 'Content-Type: application/json' \
  -d '{
    "accountId": "F12345",
    "webhookEventTypeName": "RoqqettCheckoutSessionCompleted",
    "url": "https://shop.example.com/webhooks/roqqett",
    "sharedSecret": "123e4567-e89b-12d3-a456-426614174100",
    "enabled": true,
    "filters": {
      "checkoutId": { "in": ["6f1c2d0e-7a4b-4e2f-9c1d-3b5a7e9f0a12"] }
    }
  }'
```

`filters` only supports `checkoutId` with the `in` operator. Any other key is rejected with `400`. To remove a filter, update the webhook with `"filters": null`. See [Create webhooks](/pages/webhooks/create-webhooks) for the other fields.

## Event types

| Webhook event type name | Webhook event type ID | When |
| - | - | - |
| [`RoqqettCheckoutSessionCompleted`](#checkout-session-events) | `cd880360-8c8b-4472-946f-150a93526c94` | The payer paid. |
| [`RoqqettCheckoutSessionCancelled`](#checkout-session-events) | `c9d8cc34-5fab-4acd-b4b2-a32ecfa3c132` | The session was cancelled. |
| [`RoqqettCheckoutSessionAbandoned`](#checkout-session-events) | `8803ea5f-ea6f-4752-b68b-27cfcf5d931d` | The session ended without being paid. |
| [`RoqqettCheckoutSessionExpired`](#checkout-session-events) | `02a90ff9-567d-4e54-99ef-a4db1269e999` | The session passed its expiry time without being paid. |
| [`RoqqettPaymentFailed`](#roqqettpaymentfailed) | `5f37fef2-b533-4ba6-be73-59a42416fb8d` | A payment attempt failed. The payer can retry while the session is open. |
| [`RoqqettRefundCompleted`](#roqqettrefundcompleted) | `9e7a29dc-7769-40b3-8669-72124c99c2e4` | A refund completed. |
| [`RoqqettPaymentReconciled`](#roqqettpaymentreconciled) | `8898e11b-f5bb-4e6d-ad08-fea7ed81ec27` | A payment was matched to a transaction in your settlement account. |

Every Roqqett event includes these fields, as well as `webhookEventTypeName` and `messageId`:

| Field | Description |
| - | - |
| `accountId` | Your account ID. |
| `productName` | The Equals product your account belongs to. |
| `checkoutId` | The checkout the session was taken on. |
| `checkoutSessionId` | The checkout session. |
| `merchantReference` | Your reference from the checkout session. |
| `occurredAt` | When the event happened. |

### Checkout session events

The four checkout session events share one payload.

```json theme={null}
{
  "body": {
    "accountId": "F12345",
    "checkoutId": "6f1c2d0e-7a4b-4e2f-9c1d-3b5a7e9f0a12",
    "checkoutSessionId": "0b8e5c3a-2f1d-4c6b-8a9e-7d4f2c1b0a93",
    "merchantReference": "ORDER-10421",
    "type": "SHOPPING",
    "status": "COMPLETED",
    "amount": { "amount": "54.99", "currencyCode": "GBP" },
    "paymentId": "d3579e67-f9f5-4bd8-9e32-a043c91fea24",
    "orderId": "6bcafe48-c6ff-11ec-9d64-0242ac120002",
    "occurredAt": "2026-10-07T11:58:04Z",
    "messageId": "66854098-aac7-4084-938e-bc2e62fb6a44",
    "webhookEventTypeName": "RoqqettCheckoutSessionCompleted"
  }
}
```

| Field | Description |
| - | - |
| `type` | `SHOPPING` or `TOP_UP`. |
| `status` | `COMPLETED`, `CANCELLED`, `ABANDONED` or `EXPIRED`. |
| `amount` | The session amount. |
| `paymentId` | The payment. Always present on `RoqqettCheckoutSessionCompleted`. On the other events, `null` unless the payer started a payment. |
| `orderId` | The order created by a completed `SHOPPING` session. `null` for `TOP_UP` sessions. |

### RoqqettPaymentFailed

Adds `paymentId`, `amount` and `failureReason`, which is one of `REJECTED_BY_BANK`, `TIMED_OUT` or `TECHNICAL_ERROR`.

### RoqqettRefundCompleted

Adds `paymentId` (the payment that was refunded), `refundId`, `amount` and `reason`.

### RoqqettPaymentReconciled

Adds `paymentId`.
