Checks
Submit a decision for a check exception
In this tutorial, you’ll learn how to submit a decision for a check exception by using the check fraud protection API.
- Submit a
PAYdecision - Submit a
RETURNdecision with a return reason - Retry a request by using an idempotency key
Before you begin
To submit a check exception decision, you need:
- A registered and fully onboarded Developer Account on the J.P. Morgan Payments Developer Portal.
- An active project that provides you with the credentials used to make a request.
- An exception id for the exception you want to decision.
Submit a decision
Send a POST request to /checks/exceptions/{id}/decision to submit a decision for an exception identified by id.
Decision rules
- Use
returnReasononly when decision.type isRETURN. - When
decision.typeisPAY,returnReasonis not required. - When
decision.typeisRETURN, selectreturnReasonfrom the Positive Pay reason table.
Idempotency rules
This operation supports idempotency by using the Idempotency-Key header.
- Duplicate requests with the same idempotency key within 15 minutes return the cached response.
- Only successful responses (2xx) are cached.
- After the 15-minute idempotency window expires, submitting a decision for an already processed exception returns a 409 Conflict response.
Submit a RETURN decision
Send a POST request to the /checks/exceptions/{id}/decision endpoint to submit a RETURN decision with a return reason.
Request
Json
{
"revision": {
"checkNumber": "123457",
"checkAmount": {
"amount": "150.25",
"currency": "USD"
}
},
"decision": {
"type": "RETURN",
"returnReason": "RTN_REFER_TO_MAKER"
}
}Response
Json
{
"id": "EXC_001",
"debtor": {
"accountNumber": "123456789012",
"countryCode": "US"
},
"checkNumber": "123456",
"checkSequenceNumber": "987654321",
"checkAmount": {
"amount": "150.25",
"currency": "USD"
},
"revision": {
"checkNumber": "123457",
"checkAmount": {
"amount": "150.25",
"currency": "USD"
}
},
"exceptionType": "REVERSE_POSITIVE_PAY",
"status": "DECISIONED",
"statusUpdatedAt": "2026-02-12T18:25:43Z",
"statusUpdateBy": "SYSTEM",
"exceptionProcessDate": "2026-02-12",
"checkPaidDate": "2026-02-12",
"exceptionCutofftime": "2026-02-12T20:00:00Z",
"defaultDecision": {
"type": "PAY"
},
"clientDecision": {
"type": "PAY"
}
}Related
- For more information about required and optional parameters, see Parameters.
- For information about status responses and error codes supported by the checks API, see Error codes.
- For more information about check fraud protection resources, see Resources.