> ## 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.

# Authorize Transactions

> Configure default authorization settings and register a webhook to approve or decline transactions in real time.

<Check>
  **Partner-managed Programs only:**

  This page applies to Partner-managed Programs.
</Check>

To approve or decline transactions in real time, register a webhook and understand the timeout behavior. Rain waits a short, fixed window for your decision on every authorization.

## Registering an authorization webhook

To gain real-time control over transaction approvals, register an [authorization webhook](/docs/transaction#spend) in your [developer dashboard](/docs/connect-webhooks). When a user initiates a transaction, Rain sends a `transaction.requested` webhook containing:

* User details
* Card information
* Merchant details
* Transaction amount and currency

Your response is the decision: any `2xx` status approves the authorization, and any other status declines it, optionally with a [`rejectionCode`](/docs/authorization-partner-managed#rejection-codes) in the body.

## Timeouts and defaults

Rain sends the webhook once, with no retry, and waits **1.5 seconds** for your response — the card networks bound the whole authorization round trip, so respond from a fast path, not a queue. What happens without a timely decision:

* **Timeout:** Rain declines the authorization with reason `webhook_timeout` by default. Rain can configure your program to approve on timeout instead; ask your Rain contact if you prefer fail-open.
* **Any other webhook failure** (no webhook registered, unreachable URL, malformed response): Rain declines the authorization.
