Skip to main content
WEBHOOK
oversightDecision
{
  "id": "019bdb2a-960f-789d-8955-21720e6cdef0",
  "debtor": {
    "name": "John Doe",
    "iban": "LT601010012345678901",
    "currency": "EUR",
    "agent": "REVOLT21",
    "address": {
      "townName": "Vilnius",
      "streetName": "Gedimino pr.",
      "buildingNumber": "1",
      "postCode": "01103",
      "country": "LT"
    }
  },
  "creditor": {
    "name": "Jane Smith",
    "iban": "DE89370400440532013000",
    "currency": "EUR",
    "agent": "DEUTDEFF",
    "address": {
      "townName": "Vilnius",
      "streetName": "Gedimino pr.",
      "buildingNumber": "1",
      "postCode": "01103",
      "country": "LT"
    }
  },
  "amount": 10000,
  "currency": "EUR",
  "remittanceInformation": "Invoice payment #12345",
  "status": "PENDING",
  "scheme": "SCT",
  "direction": "OUTBOUND",
  "createdAt": "2024-01-15T10:30:00.000Z",
  "updatedAt": "2024-01-15T10:30:00.000Z",
  "debtorPartyId": "019bdb2a-960f-789d-8955-21720e6cdef1",
  "debtorAccountId": "019bdb2a-960f-789d-8955-21720e6cdef2",
  "creditorPartyId": "019bdb2a-960f-789d-8955-21720e6cdef3",
  "creditorAccountId": "019bdb2a-960f-789d-8955-21720e6cdef4",
  "endToEndId": "E2E-123456",
  "settlementDate": "2024-01-15T00:00:00.000Z"
}
{
  "outcome": "ACCEPTED",
  "postings": [
    {
      "destination": "INTERNAL:CLEARING:FEES",
      "amount": 100,
      "details": "Transaction fee",
      "type": "CREDIT_TRANSFER"
    }
  ],
  "rejectionCode": "AG01"
}

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.
postings
array
Additional postings to execute alongside the payment
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.
The currency from the payment is used for all postings — no need to specify it in the response.
Accept with additional postings:
200
{
  "outcome": "ACCEPTED",
  "postings": [
    {
      "destination": "INTERNAL:CLEARING:FEES",
      "amount": 100,
      "details": "Transaction fee"
    }
  ]
}
Accept without additional postings:
200
{
  "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.
rejectionCode
string
Rejection reason code. Optional — defaults to MS03 if omitted. Supported values:
CodeDescription
AG01Credit transfer forbidden on this type of account
AG02Invalid operation code or transaction format
AM05Duplicate payment
BE04Invalid account address
MD07Beneficiary deceased
MS02By order of the beneficiary
MS03Reason not specified (default)
RR01Missing debtor account or identification
RR02Missing debtor name or address
RR03Missing creditor name or address
RR04Other regulatory reason (AML, sanctions screening, etc.)
200
{
  "outcome": "REJECTED",
  "rejectionCode": "RR04"
}

Body

application/json

Payment oversight decision request

id
string<uuid>
required

Payment ID

Pattern: [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
Example:

"019bdb2a-960f-789d-8955-21720e6cdef0"

debtor
object
required

Debtor details

creditor
object
required

Creditor details

amount
integer
required

Payment amount in minor units

Example:

10000

currency
string
required

Currency code

Example:

"EUR"

remittanceInformation
string
required

Payment description/reference

Example:

"Invoice payment #12345"

status
enum<string>
required

Payment status

Available options:
PENDING
Example:

"PENDING"

scheme
enum<string>
required

Payment scheme

Available options:
SCT,
SCT_INST
Example:

"SCT"

direction
enum<string>
required

Payment direction

Available options:
INBOUND,
OUTBOUND
Example:

"OUTBOUND"

createdAt
string<date-time>
required

Creation timestamp

Example:

"2024-01-15T10:30:00.000Z"

updatedAt
string<date-time>
required

Last update timestamp

Example:

"2024-01-15T10:30:00.000Z"

debtorPartyId
string<uuid> | null

Debtor party ID

Pattern: [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
Example:

"019bdb2a-960f-789d-8955-21720e6cdef1"

debtorAccountId
string<uuid> | null

Debtor account ID

Pattern: [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
Example:

"019bdb2a-960f-789d-8955-21720e6cdef2"

creditorPartyId
string<uuid> | null

Creditor party ID

Pattern: [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
Example:

"019bdb2a-960f-789d-8955-21720e6cdef3"

creditorAccountId
string<uuid> | null

Creditor account ID

Pattern: [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
Example:

"019bdb2a-960f-789d-8955-21720e6cdef4"

endToEndId
string | null

End-to-end identifier

Example:

"E2E-123456"

settlementDate
string<date> | null

Settlement date

Example:

"2024-01-15T00:00:00.000Z"

Response

200 - application/json

Oversight decision

Oversight decision response

outcome
enum<string>
required

Decision outcome

Available options:
ACCEPTED
Example:

"ACCEPTED"

postings
object[] | null

Additional postings to execute (present when accepted)

rejectionCode
enum<string> | null

Rejection code

Available options:
AG01,
AG02,
AM05,
BE04,
MD07,
MS02,
MS03,
RR01,
RR02,
RR03,
RR04
Last modified on February 18, 2026