> ## Documentation Index
> Fetch the complete documentation index at: https://rain-sandbox-trial.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# raindrop_balance.requested

<Update label="v1.0.0" description="initial release">
  ### raindrop\_balance.requested webhook

  Added the `raindrop_balance.requested` webhook. Rain sends this synchronous webhook to PARTNER\_ONCHAIN tenants when it needs a user's current Raindrops balance. Your endpoint must return the user's `availableBalance` within 1500ms.

  <Info>
    This is a synchronous request/response webhook, not an event notification. Rain waits for your response before proceeding with the travel redemption flow. PARTNER\_OFFCHAIN tenants do not receive this webhook because Rain manages their balance ledger.
  </Info>

  Rain signs the raw JSON request body with your webhook signing key and sends the hex HMAC-SHA256 digest in the `Signature` header. Verify this signature before returning a balance.

  #### Request Payload

  | Field      | Type     | Description                            |
  | ---------- | -------- | -------------------------------------- |
  | `id`       | `string` | Webhook ID                             |
  | `resource` | `string` | Always `"raindrop_balance"`            |
  | `action`   | `string` | Always `"requested"`                   |
  | `version`  | `string` | The webhook version                    |
  | `body.id`  | `string` | The user ID to look up the balance for |

  #### Headers

  | Header         | Description                                                            |
  | -------------- | ---------------------------------------------------------------------- |
  | `Content-Type` | `application/json`                                                     |
  | `Accept`       | `application/json`                                                     |
  | `Signature`    | Hex HMAC-SHA256 of the raw request body using your webhook signing key |

  #### Example Request

  ```json theme={null}
  {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "resource": "raindrop_balance",
      "action": "requested",
      "version": "1.0.0",
      "body": {
          "id": "user_def456"
      }
  }
  ```

  #### Expected Response

  Your endpoint must return a JSON response with the user's available balance as a string.

  | Field              | Type     | Description                                                         |
  | ------------------ | -------- | ------------------------------------------------------------------- |
  | `availableBalance` | `string` | The user's available Raindrops balance as a string (e.g., `"5000"`) |

  Return a non-2xx status, malformed JSON, or no response within 1500ms and Rain treats the balance as unavailable. The calling travel-balance or travel-redemption request receives `503 Service Unavailable`.

  #### Example Response

  ```json theme={null}
  {
      "availableBalance": "5000"
  }
  ```
</Update>
