# order.paid

The order payment was confirmed.

Scope: `orders:read`

Without `customers:read`, the `customer` and `shipping_address` keys are absent from the payload. Each installation receives the webhook according to its own scopes. Orders never include the payment method, gateway or card details.

Sent once per order, when `paid_at` is set. A free order is sent when it is completed.

## Payload `data`

| Field | Type | Required | Description |
|---|---|---|---|
| `id` | string | no | Order ID. |
| `number` | integer | no | Display order number. |
| `status` | pending \| processing \| completed \| cancelled \| returned | no | Order status. |
| `payment_status` | unpaid \| paid \| refunded | no | Payment status. |
| `currency` | SAR | no |  |
| `totals` | object | no | subtotal, discount, shipping and total, as strings with two decimal places. |
| `items` | array | no | product_id, name, kind, quantity, unit_price and total. |
| `order_url` | string \| null | no | The customer's orders page in the store, the same link as the order email. Not a per-order link. |
| `created_at` | date-time | no |  |
| `updated_at` | date-time | no |  |
| `paid_at` | date-time \| null | no |  |
| `refunded_at` | date-time \| null | no |  |
| `customer` | object | no | id, name, phone in E.164 format, and email. Returned with `customers:read`. |
| `shipping_address` | object \| null | no | name, phone (E.164), country, city, district, street, postal_code, short_address_code, building_number, secondary_number and notes; null when the order has no address. Returned with `customers:read`. |
| `resource_version` | integer | no | Always 0 for orders. Order the events of one order by resource.version in the envelope. |


## Example delivery

```http
POST /larm/webhooks HTTP/1.1
Host: app.example.com
Content-Type: application/json
x-larm-event: order.paid
x-larm-event-id: 0b7c2f8e-1d3a-4c5b-9e6f-7a8b9c0d1e2f
x-larm-delivery: 2b9f6c1e-8d4a-4f30-a7e5-c1d9b8a7f604
x-larm-timestamp: 1792060982
x-larm-secret-generation: 1
x-larm-payload-version: 1
x-larm-signature: v1=5d41402abc4b2a76b9719d911017c592e1c7b0d3f6a8e2b4c9d0f1a2b3c4d5e6
```

```json
{
  "app_id": "1f2e3d4c-5b6a-4978-8695-a4b3c2d1e0f9",
  "data": {
    "id": "ord_8Kd2",
    "number": 10482,
    "status": "processing",
    "payment_status": "paid",
    "currency": "SAR",
    "totals": {
      "subtotal": "180.00",
      "discount": "0.00",
      "shipping": "25.00",
      "total": "205.00"
    },
    "items": [
      {
        "product_id": "311",
        "name": "Top-up card 100 SAR",
        "kind": "digital",
        "quantity": 2,
        "unit_price": "90.00",
        "total": "180.00"
      }
    ],
    "order_url": "https://store.example/orders",
    "created_at": "2026-10-15T09:12:44Z",
    "updated_at": "2026-10-15T09:13:01Z",
    "paid_at": "2026-10-15T09:13:01Z",
    "refunded_at": null,
    "customer": {
      "id": "c_2041",
      "name": "Sara Alotaibi",
      "phone": "+966512345678",
      "email": "sara@example.com"
    },
    "shipping_address": null,
    "resource_version": 0
  },
  "id": "0b7c2f8e-1d3a-4c5b-9e6f-7a8b9c0d1e2f",
  "installation_generation": 1,
  "installation_id": "c7e4a1f2-6b3d-4e8a-9c05-1d2f3a4b5c6d",
  "occurred_at": "2026-10-15T09:13:02Z",
  "payload_version": 1,
  "resource": {
    "type": "order",
    "id": "ord_8Kd2",
    "version": 3
  },
  "store_id": "5b1d7a62-0c4e-4f38-9a51-2e7b3c9d8f10",
  "test": false,
  "type": "order.paid"
}
```
