Apply the antifraud partner's final decision to a received TED in analysis
Applies the antifraud partner’s final decision to a received TED that the partner left in analysis (status=MANUAL_REVIEW, reviewReason=FRAUD_REVIEW). The caller is the client’s integration, with the editor role. The client’s operator resolves a review with resolve-review instead and cannot call this route.
The body is {"analysisId", "decision", "reasons"}: decision is ALLOW or DENY, and analysisId is the id the partner received with its REVIEW. A malformed reasons is dropped and the decision still applies; valid reasons are recorded on the check, replacing the ones the evaluation recorded (the score stays the evaluation’s), and appear in the events and the read API; the body is at most 16 KiB.
| Decision | Result |
|---|---|
ALLOW, before fraudCheck.decideBy | The TED is credited to the recipient account; the response is the CREDITED incoming TED. |
DENY, before fraudCheck.decideBy | The TED is returned to the sender with CodDevTransf 9, whether or not the tenant enabled the automatic return. |
409 TED-0060 is final, do not repeat: the incoming TED is not waiting on this analysis, the analysisId differs, another decision is already recorded, fraudCheck.decideBy has passed, or the desk already tried to credit it and a DENY could return money already paid.
503 is temporary, repeat with the same X-Idempotency: TED-0053 when the decision arrived before the analysis was recorded, or when the same key is still processing (never 409); TED-9002 when the audit trail cannot record the decision; TED-1000 or TED-0080 when the effect did not complete, in which case the decision stays recorded and the repetition finishes it. Every 503 carries Retry-After.
X-Idempotency is required and must be <analysisId>:<decision>; X-Idempotency-Replayed: true indicates a replay.
Authorizations
JWT token that the Lerian Access Manager issues for your institution. Send it in Authorization: Bearer <token> on every call (except the public health probes). The tenant never comes from the body, the query, or the path. Each operation requires a role with the matching permission (see the API overview). Without it, 403 TED-0071. Missing, invalid, or expired token: 401 TED-0070.
Headers
Replay window of the idempotency key, in seconds. Default 300 (5 minutes) when missing or invalid; values outside 30 s to 7 days are adjusted to these limits. Only the value of the FIRST request for a key counts. A change to X-TTL on retries has no effect. Within the window, the original response is replayed byte for byte.
x >= 1Required: <analysisId>:<decision>, for example an-7f3c91:ALLOW. Repeat a 5xx with the SAME key and the SAME body, byte for byte. Same key + same body returns the original response with X-Idempotency-Replayed: true. Same key + different body responds 422 TED-0012. Same key still in processing responds 503 TED-0053 with Retry-After, never 409. Missing or in the wrong format: 400 TED-0011.
Correlation identifier of this request (UUID). Optional: when you omit it, or when the value is not a well-formed UUID, the platform creates a UUID and returns it in the X-Request-Id header of the response. The resolved identifier goes to the logs, spans, and audit events of this request. Keep it to open a support ticket.
Body
Response
Decision applied: CREDITED for ALLOW, RETURN_REQUESTED for DENY. If X-Idempotency-Replayed: true, this is the replay of an earlier decision.
An incoming TED from another institution: amount, parties, regulatory credit deadline, and the state of the credit to the recipient. status=MANUAL_REVIEW with reviewReason indicates that the operation needs a human decision; outside MANUAL_REVIEW the reviewReason is not emitted, and the history of reasons is on the timeline. ledgerCreditId and ledgerRevertId identify the ledger transactions of the credit and of its reversal, when they exist; ledgerCreditId is the evidence CONFIRM_CREDITED expects for a credit already on file.
Current state: RECEIVED (received from the STR, credit decision in progress) → CREDITED (credited to the customer), RECORDED (the institution's own account, terminal), or MANUAL_REVIEW (waits for an operator; see reviewReason); RETURN_REQUESTED (return sent to the STR) → RETURNED (confirmed, terminal). If the STR refuses a return, the TED goes back to MANUAL_REVIEW with reviewReason filled in.
RECEIVED, CREDITED, RECORDED, RETURN_REQUESTED, RETURNED, MANUAL_REVIEW Reason for the manual review. Present only when status=MANUAL_REVIEW; the timeline keeps the history of reasons. From the credit decision: ISPB_BINDING_UNRESOLVED, ACCOUNT_NOT_FOUND, ACCOUNT_INACTIVE, HOLDER_MISMATCH, ACCOUNT_TYPE_INCOMPATIBLE, ENRICHMENT_INCOMPLETE, RAIL_INDETERMINATE, LEDGER_INDETERMINATE, REGISTRY_INDETERMINATE. From the antifraud check: FRAUD_REVIEW (the partner asked for a human review), FRAUD_CHECK_UNAVAILABLE (the partner could not answer; the outcome is unknown) and FRAUD_DENIED (the partner denied it; the TED is returned with code 9). From the return cycle: RETURN_REFUSED_BY_STR, RETURN_REQUEST_MALFORMED, RETURN_CODE_UNMAPPED, RETURN_REJECTED_BY_STR. From the reversal that an operator requested: LEDGER_REVERT_REFUSED (the ledger refused the reversal; the credit was kept) and LEDGER_REVERT_INDETERMINATE (the outcome of the reversal is unknown; the credit may be reversed).

