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

# Request API webhooks

> request_money.* and operation.* events for request-money create, errors, and settlement

## Overview

Configure one HTTPS webhook URL in the [Partner Portal](https://raas-widgets-partner-portal-sandbox.up.railway.app/) (**Settings → Webhooks**). Request API deliveries use the same RaaS Widgets signing and retry model as every other partner event.

Delivery headers: `X-RAAS-Event`, `X-RAAS-Timestamp`, `X-RAAS-Signature`. See [Webhook security](/raas-widgets/webhooks/security).

## Events for request money

| Event                   | When                                                         |
| ----------------------- | ------------------------------------------------------------ |
| `request_money.created` | Successful `POST /v1/request-money`                          |
| `request_money.failed`  | Error on `POST` or `GET` under `/v1/request-money`           |
| `operation.created`     | Sender creates the fulfilling transfer (`requestId` present) |
| `operation.completed`   | Transfer settled                                             |
| `operation.failed`      | Transfer failed                                              |
| `operation.cancelled`   | Transfer cancelled (including funding expiry)                |

<Info>
  `request_money.updated` is **not** emitted. Track payer progress and settlement with `operation.*` events. Correlate using **`requestId`** from `request_money.created`.
</Info>

### If you previously used older event names

| Previous name       | Current name                                                   |
| ------------------- | -------------------------------------------------------------- |
| `operation_created` | `request_money.created`                                        |
| `operation_updated` | Use `operation.created` / `completed` / `failed` / `cancelled` |
| `operation_error`   | `request_money.failed`                                         |

Signature headers are the platform `X-RAAS-*` set (not the older `X-Webhook-*` names). Full catalog: [Webhook events](/raas-widgets/webhooks/events).

## request\_money.created

```json theme={null}
{
  "event": "request_money.created",
  "timestamp": "2026-07-23T14:30:00.000Z",
  "data": {
    "legacyOperationReferenceId": "Ab3xY9mK",
    "linkId": "link_acme_fund_req_01",
    "fundRequestLink": "https://<fund-request-host>/link_acme_fund_req_01",
    "landingLink": "https://app.example.com/pay?ref=Ab3xY9mK",
    "waLink": "https://wa.me/…",
    "referenceId": "Ab3xY9mK",
    "requestId": "req_abc123",
    "userReferenceId": "user-8842",
    "amount": 150.5,
    "currency": "GTQ",
    "status": "pending",
    "statusDetails": null
  }
}
```

Persist `requestId` and deliver `fundRequestLink` (or your landing / WhatsApp wrapper) to the sender.

## request\_money.failed

```json theme={null}
{
  "event": "request_money.failed",
  "timestamp": "2026-06-29T12:00:00.000Z",
  "data": {
    "path": "/v1/request-money",
    "method": "POST",
    "referenceId": "Ab3xY9mK",
    "errorCode": "OFAC_HIT",
    "httpStatus": 403,
    "message": "Identity check rejected: global.watch.list.ofac",
    "details": {
      "restrictionKey": "global.watch.list.ofac"
    }
  }
}
```

Emitted in addition to the synchronous HTTP error so systems that only consume webhooks still see create failures.

## Settlement — operation.\*

When the sender completes the fund-request flow:

1. `operation.created` — `status: created`, includes `requestId`
2. Later: `operation.completed` | `operation.failed` | `operation.cancelled`

There is no `operation.expired`; funding expiry maps to **`cancelled`**. Status meanings: [Operation lifecycle](/raas-widgets/ops/operation-lifecycle).

## Delivery and retries

Same as the platform: up to **5** attempts with backoff, **30s** timeout, acknowledge with `2xx` quickly, keep handlers idempotent. Details: [Webhooks overview](/raas-widgets/webhooks/overview).

## Next steps

<CardGroup cols={2}>
  <Card title="Lifecycle" icon="arrows-split-up-and-left" href="/raas-widgets/request-api/lifecycle">
    End-to-end ask → operation journey.
  </Card>

  <Card title="All webhook events" icon="list" href="/raas-widgets/webhooks/events">
    Full partner event catalog and payloads.
  </Card>

  <Card title="Security" icon="shield" href="/raas-widgets/webhooks/security">
    HMAC verification examples.
  </Card>
</CardGroup>
