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

# Request payment oversight decision

> Ledger sends a POST request with payment details for an oversight decision. Returns 200 with an outcome of ACCEPTED or REJECTED.

## Response Handling

Ledger expects a **200** response with an `OversightResponse` body. The `outcome` field determines whether the payment is accepted or rejected.

**Fallback behavior** — If your endpoint returns a non-200 status code, an invalid response body, or times out, Ledger applies a fallback based on payment direction:

* **Outbound payments** — Ledger rejects the payment with rejection code `MS03`.
* **Inbound payments** — Ledger accepts the payment with no additional postings.

### Accepting a payment

Return `outcome: "ACCEPTED"` with an optional array of additional postings to execute alongside the payment.

<ResponseField name="postings" type="array">
  Additional postings to execute alongside the payment

  <Expandable title="Posting object properties">
    <ResponseField name="destination" type="string" required>
      Destination account address (e.g., `INTERNAL:CLEARING:FEES`)
    </ResponseField>

    <ResponseField name="amount" type="integer" required>
      Amount in minor units (cents)
    </ResponseField>

    <ResponseField name="details" type="string" required>
      Description or reason for the posting
    </ResponseField>
  </Expandable>
</ResponseField>

The source account for each posting defaults to the party's account from the payment — the debtor account for outgoing payments and the creditor account for incoming payments. Only the `destination` needs to be specified.

<Note>The currency from the payment is used for all postings — no need to specify it in the response.</Note>

**Accept with additional postings:**

```json 200 theme={null}
{
  "outcome": "ACCEPTED",
  "postings": [
    {
      "destination": "INTERNAL:CLEARING:FEES",
      "amount": 100,
      "details": "Transaction fee"
    }
  ]
}
```

**Accept without additional postings:**

```json 200 theme={null}
{
  "outcome": "ACCEPTED"
}
```

### Rejecting a payment

Return `outcome: "REJECTED"` with an optional rejection code. If the code is not provided or unrecognized, it defaults to `MS03`.

<ResponseField name="rejectionCode" type="string">
  Rejection reason code. Optional — defaults to `MS03` if omitted. Supported values:

  | Code   | Description                                              |
  | ------ | -------------------------------------------------------- |
  | `AG01` | Credit transfer forbidden on this type of account        |
  | `AG02` | Invalid operation code or transaction format             |
  | `AM05` | Duplicate payment                                        |
  | `BE04` | Invalid account address                                  |
  | `MD07` | Beneficiary deceased                                     |
  | `MS02` | By order of the beneficiary                              |
  | `MS03` | Reason not specified (default)                           |
  | `RR01` | Missing debtor account or identification                 |
  | `RR02` | Missing debtor name or address                           |
  | `RR03` | Missing creditor name or address                         |
  | `RR04` | Other regulatory reason (AML, sanctions screening, etc.) |
</ResponseField>

```json 200 theme={null}
{
  "outcome": "REJECTED",
  "rejectionCode": "RR04"
}
```


## OpenAPI

````yaml webhook oversightDecision
openapi: 3.1.0
info:
  title: Ledger Client API
  version: 1.0.0
  description: API for Oversight decision
servers: []
security: []
tags:
  - name: Oversight API
    description: Payment oversight decision API contract
  - name: oversightDecision
paths: {}

````