Wire Transactions
Integration guide
This guide helps you connect your systems to the J.P. Morgan U.S. Wire API. You’ll learn how to register, set up your environment, send wire payments, and handle errors—so you can manage wire transfers securely and efficiently.
Get started
Step 1: Register for the Developer Portal
- Go to developer.payments.jpmorgan.com and select Sign in / Register.
- Create a new account using your email or a linked social account.
- Check your email for a one-time password (OTP) from noreply@jpmorgan.com.
- Enter the OTP to verify your identity.
- After registration, you’ll get a welcome email with a Quick Start guide.
Tip: Let your J.P. Morgan Sales Representative know when you’re ready to start onboarding.
Set up your environment
Step 2: Get API documentation
- Log in to the Developer Portal.
- Click API Ref at the top.
- Click All products and scroll to Wire Transactions.
- Review the API documentation and schema for details on endpoints and required fields.
Step 3: Obtain certificates
- You need both TLS and digital signature certificates for secure connections.
- Download J.P. Morgan’s public certificates from the Developer Portal.
- For more details, see the Authentication Guide and mTLS with Digital Signature Guide.
Step 4: Choose your environment
- CAT/UAT: For testing and development.
- PROD: For live transactions (after testing is complete).
Initiate a wire payment
Step 5: Build your payment request
- Use the API documentation to format your payment initiation request.
- Only use allowed characters (A-Z, a-z, 0-9, and a few special characters like /, -, ?, :, (, ), ., , ‘, +, and space).
- Make sure all required fields are included (see schema in the Developer Portal).
Sample JSON:
Json
{
"paymentMethod": "TRF",
"paymentTypeInformation": { "serviceLevelCode": "URGP" },
"requestedExecutionDate": "2023-10-12",
"debtor": { "name": "ABC Inc", "postalAddress": { "country": "US" } },
"debtorAccount": { "accountNumber": "1234567890", "currency": "USD" },
"debtorAgent": { "country": "US", "aba": "021000021" },
"creditTransferTransactionInformation": {
"endToEndId": "AA4AFR6QJIFJVRB",
"amount": { "instructedAmount": { "amount": 300.0, "currency": "USD" } }
},
"creditor": { "name": "ALOHA KEIKI", "postalAddress": { "country": "US" } },
"creditorAccount": { "accountNumber": "100567" },
"creditorAgent": { "country": "US", "aba": "334476012" },
"remittanceInformation": { "unstructured": [ "ABC 888-555-3322" ] }
}Track and manage payments
Step 6: Check payment status
- Use the Track-n-Trace API to check the status of your wire payments.
- For SWIFT payments, use the Track-n-Trace with GPI API for global tracking.
Step 7: Handle returns
- To return an incoming wire, send a new payment initiation request with the original endToEndId and today’s date.
- You can return the full or partial amount.
Common payment rejection scenarios
Use this table to identify common payment rejection scenarios, understand their underlying causes, and determine the information you should review or update before resubmitting a payment.
| Error | Meaning | Potential resolution |
|---|---|---|
CH21 |
Party Private ID details are invalid | Verify birthDate, cityOfBirth, countryOfBirth |
| Mandatory field missing/invalid | Missing network-required data | Review payment-network requirements |
| Beneficiary validation error | Beneficiary data failed validation | Review beneficiary details and country requirements |
Support
- For help, email api.service.support@jpmchase.com or call +1-978-805-1200, Option 1.
- Include your name, email, company name, username, and a brief explanation of your issue.
- Maintenance windows are usually Saturday 8:00 PM ET to Sunday 5:00 AM ET (shifting to 5:00 PM ET in August 2024).