API template library

Chase Global Payments v2 mock API and live sandbox

A WireMock simulation of Chase JPMorgan's REST API — covering payment initiation, by-id and by-reference payment retrieval, and payment returns.

Vendor
Chase JPMorgan
Functionality
Payment initiation and returns
Spec version
2.2.5
Endpoints
5
Stubs
9
Protocol
REST
Validation
AI-validated Before publication, an AI agent exercised these endpoints against the real Chase JPMorgan API through WireMock's recording proxy, and the recorded traffic was used to verify each stub's request and response shapes.

Live sandbox · no signup, no API key

Chase Global Payments v2

A running WireMock Cloud instance of this template, callable right now from a terminal, a script, or an AI agent.

Base URL
https://zez4q.wiremockapi.cloud

POST Create Payment - 201

curl -s -X POST 'https://zez4q.wiremockapi.cloud/payments' \
  -H 'Content-Type: application/json' \
  -d '{}'

POST Create Payment Return - 201

curl -s -X POST 'https://zez4q.wiremockapi.cloud/payments/returns' \
  -H 'Content-Type: application/json' \
  -d '{}'
Method Path Summary
GET /payments Query Payments by endToEndId or paymentId
POST /payments Initiate Payments
GET /payments/{paymentId} Retrieve Payment by paymentId
POST /payments/returns Payment Returns
GET /payments/returns/{returnId} Retrieve Payment Return

Unauthenticated WireMock Cloud demo sandbox for Chase JPMorgan — not an official Chase JPMorgan sandbox, and it returns simulated example data only.

What's inside the Global Payments v2 template

Version 2.2.5 of J.P. Morgan's cross-rail payments API, modeled as two record stores that keep the whole submission. Initiating a payment answers 201 with your body back — debtor, creditor, amounts, the endToEndId inside paymentIdentifiers — plus a minted UUID paymentId, the RECEIVED/RECEIVED status pair, and a statusUpdatedAt stamped at the moment of the call; filing a return does the same under a returnId. Both stores gate their reads on what they issued: a minted id resolves to the full stored record, while an id the store never saw — even a perfectly formed UUID — draws a problem-style Not Found whose traceId is a string of zeros. The query route splits down the middle: asking by paymentId consults the real store and wraps the record in a payments array, while asking by endToEndId always serves the one canonical completed payment, status COMPLETED_BY_JPM, dated April 2026.

  • Payment initiation — echo-and-mint creates producing UUID ids with the RECEIVED status pair
  • Payment retrieval — registry-gated by-id reads plus the query route's stateful paymentId branch
  • Reference lookup — the endToEndId query, fixed on a canonical completed RTP credit
  • Payment returns — return filing and retrieval running the same store mechanics as payments

Frequently asked questions

They answer from different layers. paymentId consults the live store — your created payments come back complete, unknown values 404 — while endToEndId matches any non-empty value and serves the static fixture, whose own reference reads STATICENDTOENID001 (the spec's spelling, one D short). Send both parameters and paymentId wins, because the endToEndId stub only matches when paymentId is absent. One practical consequence: reconciliation-by-reference flows can't find in-session payments here — thread the minted id, not the endToEndId, through your test assertions.

Not in this sandbox — a stored record keeps the status pair it was minted with, however long you poll. The terminal state exists as the endToEndId fixture's COMPLETED / COMPLETED_BY_JPM, so both ends of the lifecycle are observable, just never on the same record. Status-ladder testing — RECEIVED through PENDING to COMPLETED or REJECTED on one id — is scenario work for a private WireMock Cloud copy, where WireMock's stateful scenarios can advance a payment per poll.

Yes — the return intake is deliberately unguarded. It accepts any body, stores it under a fresh returnId, and never checks that the referenced paymentId is real, so orphaned returns are constructible on purpose. The return record itself round-trips faithfully: reason code and amount read back exactly as filed. Enforcement of the payment-return relationship is the kind of cross-record validation a private copy models with request matching on known ids.

The Global Payments v1 template models the earlier three-endpoint surface: fire-and-forget 202 initiation with query-parameter lookups over static fixtures. This v2 sandbox trades that for genuine state — echo-storing creates, id-gated path reads, and a returns ledger. Teams migrating between API versions can hold both templates side by side and diff the contract their client actually exercises.

Vendor names identify APIs represented by WireMock template sources. This page does not imply vendor endorsement, certification, partnership, or official integration status.