Callbacks
J.P. Morgan’s Global Payments API supports callbacks to notify your application of real-time status updates when an event occurs. This approach is more efficient for both the API provider and clients, as it eliminates the need for applications to constantly poll for data to receive status updates.
Before you begin
To enable callbacks, you'll need to:
- Contact your J.P. Morgan Representative to initiate an implementation request when you're ready to start using our Treasury Services API.
- Complete the implementation process to receive the certificate necessary to set up a new callback. For more information, see Getting Started.
How callbacks work
Upon receiving a payment initiation request, the system returns an HTTP 201 (Created) status. This response includes the endToEndId and paymentId in the response body. Subsequently, the payment triggers a callback to your registered callback URL with a RECEIVED status. As the payment progresses through various status changes, additional callbacks are sent to keep you updated.
The payment initiation status callback response is typically received within 30 seconds. The Global Payments API consistently delivers the latest and most accurate information regarding the payment. In the event of an HTTP error, we automatically retry the request until the error is resolved.
Callbacks are available aross all payment rails, including wires.
Payment status callbacks
The callbacks are a notification to your client through the Global Payment API. For more information, see the Global Payments Open API Specification.
Confirm callback response
The following response shows a payment in the REJECTED state:
{
"specversion": "1.0.0",
"id": "624f39ab-d6fd-43ac-8d61-2992406070f9",
"time": "2025-12-12T16:22:16.205+00:00",
"type": "Payment.Rejected",
"source": "payment/v2/payments?endToEndId=SHKsZNQTJGxOvoB",
"dataschema": "urn:com.jpmorgan.payments/payment-event",
"data": {
"payments": [
{
"paymentId": "019b135e-ad7e-7000-a7ec-b42b96d56be3",
"requestedExecutionDate": "2025-12-12",
"paymentStatus": "REJECTED",
"paymentSubStatus": "REJECTED_BY_JPM",
"statusUpdatedAt": "2025-12-12T16:22:16.205+00:00",
"paymentIdentifiers": {
"endToEndId": "SHKsZNQTJGxOvoB"
},
"paymentType": "RTP",
"transferType": "CREDIT",
"clearingSystem": {},
"exceptions": [
{
"code": "10001",
"message": "Field must be present/paymentPurpose/categoryPurpose/code",
"location": "BODY",
"field": "$.paymentPurpose.categoryPurpose.code",
"additionalContext": [
{
"type": "ISO20022",
"code": "FF06",
"message": "Category Purpose code is missing or invalid"
}
]
}
]
}
]
}
}The following response shows a payment in the COMPLETED state:
{
"specversion": "1.0",
"id": "ab64fbef-b32d-428d-ab3d-841712c0dca7",
"time": "2025-11-10T14:42:04Z",
"type": "Payment.Completed",
"source": "/payment/v2/payments/69d93dec-9887-4701-865f-0750e3b1b93c",
"dataschema": "urn:com.jpmorgan.payments/payment-event",
"data": {
"payments": [
{
"paymentId": "69d93dec-9887-4701-865f-0750e3b1b93c",
"paymentStatus": "COMPLETED",
"paymentSubStatus": "COMPLETED_BY_JPM",
"statusUpdatedAt": "2025-11-10T14:42:04Z",
"paymentIdentifiers": {
"endToEndId": "MXRTPTEST2"
},
"paymentType": "RTP",
"transferType": "CREDIT",
"requestedExecutionDate": "2025-11-10",
"clearingSystem": {
"reference": "Tjp6nH-j02p6T"
}
}
]
}
}Resources
Status response types
A status message communicates the current status of a payment. For example, the RECEIVED status signifies that the payment has been received and is queued for processing. In certain situations, a status may include a sub-status to offer additional details. For example, the PROCESSING status may have a sub-status of "Processing by J.P. Morgan," indicating that we're actively processing the payment.
The following table contains the supported statuses, sub-statuses, and their descriptions for the Global Payments API:
| Status | Sub-status | Description |
|---|---|---|
RECEIVED |
RECEIVED |
The payment request was received and will process accordingly. |
ACCEPTED |
ACCEPTED |
The payment was accepted at the initiation layer. |
PROCESSING |
PROCESSING_BY_JPM |
The payment is being processed by J.P. Morgan. |
PENDING_CLIENT_ACTION |
Payment is currently on hold, customer is required to perform an action for the payment to continue processing. | |
PENDING_COMPLIANCE_REVIEW |
Payment is under review of J.P. Morgan Compliance. | |
PENDING_FRAUD_REVIEW |
Payment is on hold to review possible fraud. | |
PENDING_FUNDING_REVIEW |
Payment is pending funding in J.P. Morgan. | |
PENDING_JPM_REVIEW |
Payment is currently on hold. | |
SCHEDULED |
The payment is scheduled for future execution. | |
PENDING_POSTING |
The payment has been processed by J.P. Morgan, sent to the clearing network, and is awaiting a response. | |
CANCELED |
CANCELED |
The payment was canceled by the client. |
REJECTED |
REJECTED |
The payment has been rejected. |
REJECTED_BY_JPM |
The payment has been rejected by J.P. Morgan. | |
COMPLETED |
COMPLETED_BY_JPM |
The payment was fully processed by J.P. Morgan and the necessary movement of money within J.P. Morgan accounts has occurred. It's no longer under the control of J.P. Morgan. |
SENT_TO_CLEARING |
Payment instruction has been sent to the clearing network. | |
DELIVERED_TO_RECIPIENT |
The payment was applied to the receiver's account. | |
RETURNED |
RETURNED |
The payment was returned by an external party, such as a clearinghouse or beneficiary bank. |
This table lists all possible status responses that are supported by Global Payments; not all statuses are applicable to each payment method. To see supported status responses for each payment method, refer to their individual Resources page.