Skip to main content
Jp Morgan Wallet

J.P. Morgan Wallet™

The J.P. Morgan Wallet™ API enables you to leverage virtual accounts to facilitate payments to a large number of counterparties. You can send requests 24 hours a day, 365 days a year and make domestic, cross-border, same-currency, and foreign currency payments.

This documentation describes the business logic and use cases of the API. For the full specification, see the API reference.

Capabilities

Wallet transforms one treasury account into an embedded payment engine for global money movement. Wallet is built for scale—Wallet moves billions of dollars and handles millions of transactions each month.

Manage payments at scale

Instantly manage payments at scale within your own platform or interface across counterparties, currencies, payment methods, and regions, with infrastructure backed by the world's most trusted bank.

Set up virtual accounts

Set up fully routable virtual accounts for each counterparty, tracking and reconciling across funds owed and received—in real-time, with full transparency.

Maximize revenue growth

Maximize revenue growth and cost efficiency with industry-leading financial configurability and control.

What you can build

Wallet supports rapid business expansion and is highly scalable. You can use Wallet to:

  • Create a scalable sub-ledgering system under a single physical account to manage transactions at an individual counterparty level.
  • Put counterparties at the center of the solution to retain them within your ecosystem.
  • Gain access to real-time, low-value and high-value payment rails and pay counterparties around the world.
  • Effectively manage receipts by assigning virtual accounts and clearing routable numbers to each counterparty.

How it works

Using Wallet, you maintain a single physical account, then create virtual accounts for individual counterparties to record amounts owed and settled with our global payment network.

You initiate payments and transfers which we record and process. We provide access to information about these transactions through real-time queries and regular reports.

Each Wallet solution contains the following components:

  • A source funding Demand Deposit Account (DDA)
  • A Wallet DDA
  • A sub-ledger hierarchy structure containing virtual accounts
  • A unique program ID
  • Secure APIs
  • Payment methods
  • Daily reports

You can set up and manage your Wallet program by following these high-level steps:

  1. Establish a source funding DDA and a Wallet DDA.
  2. Create a project in the Payments Developer Portal (PDP).
  3. Set up relevant payment systems (for example, ACH).
  4. Set up a virtual account structure.
  5. Start moving money and making payments.

Use cases

Wallet targets a wide variety of clients that need to facilitate payments to numerous counterparties. Here are some examples of use cases for Wallet:

  • Pay sellers on e-commerce platforms
  • Pay developers on app stores
  • Pay workers on gig economy platforms
  • Pay airline customers for inconvenience
  • Pay businesses on travel marketplaces
  • Pay out rewards to customers
  • Pay players and publishers on gaming platforms
  • Collect utility payments
  • Collect subscription payments
  • Collect rent payments on real estate
  • Collect insurance premiums

Compliance with industry standards

Wallet complies with industry standards to provide a familiar experience for developers:

  • RESTful: Wallet adheres to the Representational State Transfer (REST) architectural style.
  • JSON format: Wallet uses the JavaScript Object Notation (JSON) format for serializing and transmitting request and response objects between applications. JSON is a lightweight data format compared to XML.
  • ISO-compliant payment services: Wallet provides a set of payment-related services, such as payment initiation, changes, cancellation, and tracking. All bank-related API services leverage the data structure elements from ISO20022.

Endpoints

Wallet has the following endpoints for managing virtual accounts and transactions.

Virtual accounts

Wallet endpoints related to virtual accounts
HTTP method Request Description v2.xx v3.xx
POST Create a virtual account Create a Virtual Transaction Account (VTA) or a Virtual Summary Account (VSA). /wallets/batch /wallets
GET Get details about a virtual account Get details about a Virtual Transaction Account such as the ID of the parent virtual account and the virtual account state. /wallets/{accountIdentification} /wallets/{accountIdentification}
GET Get the balance of a virtual account Get the balance of a Virtual Transaction Account, including or excluding pending transactions. /wallets/{accountIdentification}/balance Not supported
POST Update a virtual account Update the attributes of a Virtual Transaction Account such as its state and minimum/maximum balance. Not supported /wallets/{accountIdentification}/update
POST Add a posting restriction to a virtual account Restrict certain types of transactions (debits, credits, or both) from being posted to a Virtual Transaction Account. Not supported /wallets/{accountIdentification}/postingrestriction
POST Remove a posting restriction from a virtual account Remove a posting restriction that was previously added to a Virtual Transaction Account. Not supported /wallets/{accountIdentification}/postingrestriction/remove
POST Get virtual accounts based on filters Get a list of virtual accounts based on filters such as the parent ID or the minimum/maximum balance. Not supported /wallets/search

Transactions

Wallet endpoints related to transactions
HTTP method Request Description v2.xx v3.xx
POST Initiate PayIn, PayTo, PayInto, and Virtual-to-Virtual (V2V) transactions Initiate transactions that do not move physical funds outside of the J.P. Morgan ecosystem. /payments/batch Not supported
POST Initiate PayOut transactions Move funds from virtual accounts in your Wallet program to physical external bank accounts. Use payment rails such as ACH, WIRE, and real-time payment, and pay in either domestic or foreign exchange currencies. /payments/advanced-batch /payments/advanced-batch
POST Initiate PayInto Collection transactions / Issued Direct Debit Transfers (IDDT) Move funds from physical external bank accounts into your Wallet virtual accounts. /direct-debits/advanced-batch Not supported
POST Approve or reject a PayOut Collection request (Positive Pay) Approve or deny a request to direct debit a virtual account to ensure the transaction is authorized before funds are deducted from your Wallet account. /payments/approval-decision Not supported
GET Get details about a transaction Get details about a transaction such as the status and the acceptance date/time. /payments/{paymentIdentification} Not supported
GET Get the transaction history Get a list of transactions, optionally filtering by date range. /payments Not supported
POST Get transactions based on filters Get a list of transactions, filtering on parameters such as the end-to-end ID or the acceptance date/time. /payments/advanced-search Not supported

Note: The API version can change with future enhancements. Always use PDP for the most current information. We communicate any changes to the versioning of the APIs through release notes.

Availability

We strive to maintain access to Wallet during business hours (US-EST), evenings, and weekends. However, we do not guarantee availability.

Reasons the environment might not be available include:

  • Scheduled software updates and infrastructure upgrades
  • Unplanned outages

Get started

If you're ready to start using the Wallet API, see Getting started to set up your Wallet program.