# JPMC-PDP Documentation from https://developer.payments.jpmorgan.com # 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 PAY decision - Submit a RETURN decision 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 returnReason only when decision.type is RETURN. - When decision.type is PAY, returnReason is not required. - When decision.type is RETURN, select returnReason from 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](/docs/treasury/checks/capabilities/check-fraud-detection/parameters). - For information about status responses and error codes supported by the checks API, see [Error codes](/api/treasury/checks/error-codes). - For more information about check fraud protection resources, see [Resources](/docs/treasury/checks/capabilities/check-fraud-detection/resources).