Move funds from settlement virtual account to a counterparty's virtual account (PayTo)
Overview
A PayTo transaction virtually transfers funds within a J.P. Morgan Wallet™ Demand Deposit Account (DDA), from the PayIn Settlement Virtual Transaction Account (VTA) to a counterparty's VTA.
After executing the PayTo transaction, you can execute a Virtual-to-Virtual (V2V) transaction to transfer the funds to another VTA, or execute a PayOut transaction to transfer the funds to a counterparty's external account.
For an overview of payment types in Wallet, see Payments.
Use cases
The following are examples of use cases where you might execute a PayTo transaction:
Merchant services platform: Needs to allocate funds to pay its merchants. When a customer pays at one of its terminals, it transfers the funds to its PayIn Settlement VTA. It transfers a portion of the funds to its "revenue VTA," and executes a PayTo transaction to transfer the rest from the PayIn Settlement VTA to the merchant's VTA. Finally, it pays out the funds to the merchant's DDA.
Video game company: Needs to allocate funds representing in-game currency for its players. When a player buys in-game currency, the company transfers the funds to its PayIn Settlement VTA. Then, it executes a PayTo transaction to transfer the funds from the PayIn Settlement VTA to the player's VTA.
Marketplace platform: Needs to allocate funds to pay its sellers. When a customer buys something, the platform transfers the funds to its PayIn Settlement VTA. It transfers a portion of the funds to its "revenue VTA," and executes a PayTo transaction to transfer the rest from the PayIn Settlement VTA to the seller's VTA. Finally, it pays out the funds to the seller's DDA.
Key information
The following table describes important information about PayTo.
| Production endpoint | v3.x: Not supported | v2.x: https://apigateway.jpmorgan.com/tsapi/v2/jpmwallet/payments/batch |
|---|---|---|
| Client testing endpoint | v3.x: Not supported | v2.x: https://apigatewaycat.jpmorgan.com/tsapi/v2/jpmwallet/payments/batch |
| API reference | v3.x: N/A | v2.x: Initiate one or many PayIn, PayTo, PayInto or v2v transfers |
| Supported branches | All Wallet-supported J.P. Morgan Chase Bank branches (see Reference - Supported branches and their Business Identifier Codes) | |
| Supported currencies | All Wallet-supported currencies (see Reference - Supported account currencies by branch) | |
| Supported account types | Demand Deposit Account (DDA) | |
| Payment type | PayTo | |
| Payment flows |
|
|
| Transaction limit | No limit | |
| Cut-off time | Virtual accounting is available 24x7. | |
| Settlement period | N/A | |
| Returns, recalls, and reversals | Not supported - send a V2V request to transfer funds back to original VTA | |
| Service level code | N/A | |
Prerequisites
We enable PayTo transactions when we configure your Wallet program. For more information, ask your J.P. Morgan representative.
Reporting
PayTo transactions appear on your daily TRANSACTION ACTIVITY reports.
The following table is an example of what a PayTo transaction on a TRANSACTION ACTIVITY report might look like.
| CLIENT ID | 0001318690 |
|---|---|
| PROGRAM ID | 1000000003 |
| BUSINESS PROCESSING DATE | 3/10/2026 |
| BANK NAME | JPM New York |
| WALLET DDA NUMBER | XXXXXXXXXX |
| WALLET CURRENCY | USD |
| RECEIVED DATE | 7/3/2020 |
| REQUESTED VALUE DATE | 3/10/2026 |
| VALUE DATE | 3/10/2026 |
| CLIENT TXN ID | SMOKE-drJtIDzUTv |
| TXN TYPE | PAYTO |
| DEBTOR ACCOUNT | XXXXXXXXXX |
| DEBTOR AGENT | JPMORGAN CHASE BANK N.A. |
| DEBTOR AGENT ID | CHASUS33XXX |
| DEBIT AMOUNT | 0.1 |
| DEBIT CURRENCY | USD |
| CREDITOR ACCOUNT | XXXXXXXXXX |
| CREDITOR VIRTUAL ACCOUNT | SANGITA-VA-04 |
| CREDITOR AGENT | JPMORGAN CHASE BANK N.A. |
| CREDITOR AGENT ID | CHASUS33XXX |
| CREDIT AMOUNT | 0.1 |
| CREDIT CURRENCY | USD |
| STATUS | COMPLETED |
| PRN | XXXXXXXXXX |
| BATCH ID | SMOKE-kEihEUMhpQ |
| MATCHED REFERENCE ID | WALHHBHPXPN0934 |
Notes
Note the following points about PayTo transactions.
- You can view PayTo transactions in Wallet reports and queries.
- A PayTo transaction moves funds within the virtual account structure and has no impact on the Wallet DDA balance.
- You can only initiate one transaction per request.
- The counterparty's VTA must be within the same Wallet program as the debited PayIn Settlement VTA.
- You must include the ultimate creditor in the request body because you must specify the specific VTA that Wallet should credit.
Important parameters
The following sections list important parameters in the PayTo request along with their requirements.
Not all parameters are listed here—for a complete list, see the API reference.
Header parameters
Include the following parameters in the header.
| Parameter | Required / Optional | Description |
|---|---|---|
programId |
Required | Your Wallet program ID. |
transactionType |
Required | The type of the transaction. Set to PAYTO. |
Body parameters
Note the following important body parameters for PayTo.
groupHeader
The groupHeader object contains information about the batch of transactions.
| Parameter | Required / Optional | Description |
|---|---|---|
controlSum |
Optional | Sum of the transaction amounts in the request. |
creationDateTime |
Required | Date and time when the request was created. Must be in local time with the time zone offset to UTC in the following format: YYYY-MM-DDThh:mm:ss±hh:mm |
messageIdentification |
Required | Unique request ID. Maximum 35 characters. |
numberOfTransactions |
Required | Total number of transactions in the request. Must be 1. |
The following code snippet is an example of the groupHeader object.
{
"groupHeader": {
"messageIdentification": "SK230516135601",
"creationDateTime": "2023-05-16T17:56:00.000+0000",
"numberOfTransactions": 1,
"controlSum": 1000.00
}
}paymentInformation
The paymentInformation object contains parameters related to the payment.
| Parameter | Required / Optional | Description |
|---|---|---|
controlSum |
Optional | Sum of the transaction amounts in the batch. |
numberOfTransactions |
Optional | Total number of transactions in the batch. Must be 1. |
paymentInformationIdentification |
Required | Unique ID of the payment. Maximum 35 characters. |
paymentMethod |
Required | Set to BOOK. For more information about payment methods, see Payments - Payment methods. |
requestedExecutionDate |
Required | Date when the transaction should be executed in YYYY-MM-DD format. Must be either the date that you submit the request (T) or the previous day (T-1). |
The following code snippet is an example of the paymentInformation object.
{
"paymentInformation": {
"paymentInformationIdentification": "PayToSK230516135601",
"numberOfTransactions": 1,
"controlSum": 1000.00,
"paymentMethod": "BOOK",
"requestedExecutionDate": "2023-05-16"
}
}paymentInformation.debtorAccount
The paymentInformation.debtorAccount object contains information about the bank account of the debtor.
| Parameter | Required / Optional | Description |
|---|---|---|
identification.other.identification |
Required | ID of the Wallet DDA. Maximum 34 characters. |
The following code snippet is an example of the paymentInformation.debtorAccount object.
{
"paymentInformation": {
"debtorAccount": {
"identification": {
"other": {
"identification": "XXXXXXXXXX"
}
}
}
}
}paymentInformation.debtorAgent
The paymentInformation.debtorAgent object contains information about the debtor bank branch.
| Field | Required / Optional | Description |
|---|---|---|
financialInstitutionIdentification.bic |
Required | SWIFT BIC of the branch where the Wallet DDA is located. Maximum 11 characters. Either the BIC (this parameter) or the routing number (financialInstitutionIdentification.clearingSystemMemberIdentification) is required. |
The following code snippet is an example of the paymentInformation.debtorAgent object.
{
"paymentInformation": {
"debtorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33XXX"
}
}
}
}paymentInformation.creditTransferTransactionInformation
The paymentInformation.creditTransferTransactionInformation object contains information about the transaction such as the creditor, the ultimate debtor, and the ultimate creditor.
| Parameter | Required / Optional | Description |
|---|---|---|
amount.instructedAmount.amount |
Required | Amount of money to transfer from the PayIn Settlement VTA to the counterparty's VTA. Must be less than or equal to the amount currently in the PayIn Settlement VTA. Maximum 18 digits with six decimal places. |
amount.instructedAmount.currency |
Required | Currency of the funds in the Wallet DDA. |
creditorAccount.identification.IBAN |
Optional | International Bank Account Number (IBAN) of the creditor bank account. Maximum 34 characters. You do not need to provide the creditorAccount parameter because the funds stay within the Wallet DDA. |
creditorAccount.identification.other.identification |
Optional | ID of the Wallet DDA. Maximum 34 characters. You do not need to provide the creditorAccount parameter because the funds stay within the Wallet DDA. |
creditorAgent.financialInstitutionIdentification.bic |
Required | SWIFT BIC of the branch where the Wallet DDA is located. Maximum 11 characters. |
paymentIdentification.endToEndIdentification |
Required | Unique ID for tracing requests and responses for this transaction. Maximum 16 characters. |
ultimateCreditor.identification.organisationIdentification.other.identification |
Required | ID of the counterparty's VTA to credit. |
ultimateCreditor.identification.organisationIdentification.other.schemeName.proprietary |
Required | Set to virtualAccountIdentification. |
The following code snippet is an example of the paymentInformation.creditTransferTransactionInformation object.
{
"paymentInformation": {
"creditTransferTransactionInformation": [
{
"paymentIdentification": {
"endToEndIdentification": "SK230516135601"
},
"amount": {
"instructedAmount": {
"amount": 1000.00,
"currency": "USD"
}
},
"creditorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33XXX"
}
},
"creditorAccount": {
"identification": {
"other": {
"identification": "XXXXXXXXXX"
}
}
},
"ultimateCreditor": {
"identification": {
"organisationIdentification": {
"other": [
{
"identification": "VAID00001",
"schemeName": {
"proprietary": "virtualAccountIdentification"
}
}
]
}
}
}
}
]
}
}Examples
Request with minimum required data
The following example shows a request with the minimum data required to execute a PayTo transaction from the PayIn Settlement VTA to a counterparty's VTA.
{
"groupHeader": {
"messageIdentification": "SK230516135601",
"creationDateTime": "2023-05-16T17:56:00.000+0000",
"numberOfTransactions": 1
},
"paymentInformation": {
"paymentInformationIdentification": "PayToSK230516135601",
"paymentMethod": "BOOK",
"requestedExecutionDate": "2023-05-16",
"debtorAccount": {
"identification": {
"other": {
"identification": "XXXXXXXXXX"
}
}
},
"debtorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33XXX"
}
},
"creditTransferTransactionInformation": [
{
"paymentIdentification": {
"endToEndIdentification": "SK230516135601"
},
"amount": {
"instructedAmount": {
"amount": 1000.00,
"currency": "USD"
}
},
"creditorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33XXX"
}
},
"ultimateCreditor": {
"identification": {
"organisationIdentification": {
"other": [
{
"identification": "VAID00001",
"schemeName": {
"proprietary": "virtualAccountIdentification"
}
}
]
}
}
}
}
]
}
}Request with optional data
The following example shows a request to execute a PayTo transaction from the PayIn Settlement VTA to a counterparty's VTA with optional parameters.
{
"groupHeader": {
"messageIdentification": "SK230516135601",
"creationDateTime": "2023-05-16T17:56:00.000+0000",
"numberOfTransactions": 1,
"controlSum": 1000.00
},
"paymentInformation": {
"paymentInformationIdentification": "PayToSK230516135601",
"numberOfTransactions": 1,
"controlSum": 1000.00,
"paymentMethod": "BOOK",
"requestedExecutionDate": "2023-05-16",
"debtorAccount": {
"identification": {
"other": {
"identification": "XXXXXXXXXX"
}
}
},
"debtorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33XXX"
}
},
"creditTransferTransactionInformation": [
{
"paymentIdentification": {
"endToEndIdentification": "SK230516135601"
},
"amount": {
"instructedAmount": {
"amount": 1000.00,
"currency": "USD"
}
},
"creditorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33XXX"
}
},
"creditorAccount": {
"identification": {
"other": {
"identification": "XXXXXXXXXX"
}
}
},
"ultimateCreditor": {
"identification": {
"organisationIdentification": {
"other": [
{
"identification": "VAID00001",
"schemeName": {
"proprietary": "virtualAccountIdentification"
}
}
]
}
}
}
}
]
}
}Response
The following is the synchronous response to the previous example request.
{
"groupHeader": {
"messageIdentification": "1e56bd7f-3440-4e6e-a821-c99717b4e975",
"creationDateTime": "2023-05-16T17:56:03.000+0000"
},
"originalGroupInformationAndStatus": {
"originalMessageIdentification": "SK230516135601",
"originalMessageNameIdentification": "API-PAYTO",
"originalCreationDateTime": "2023-05-16T17:56:00.000+0000",
"originalNumberOfTransactions": 1,
"originalControlSum": 1000,
"groupStatus": "ACTC",
"statusReasonInformation": [],
"numberOfTransactionsPerStatus": [
{
"detailedNumberOfTransactions": "1",
"detailedStatus": "ACTC",
"detailedControlSum": 1000
}
]
},
"originalPaymentInformationAndStatus": {
"originalPaymentInformationIdentification": "PayToSK230516135601",
"paymentInformationStatus": "ACTC",
"statusReasonInformation": [],
"numberOfTransactionsPerStatus": [
{
"detailedNumberOfTransactions": "1",
"detailedStatus": "ACTC",
"detailedControlSum": 1000
}
],
"transactionInformationAndStatus": [
{
"originalEndToEndIdentification": "SK230516135601",
"transactionStatus": "ACTC",
"statusReasonInformation": [],
"acceptanceDateTime": "2023-05-16T17:56:03.611+0000",
"accountServicerReference": "c78385c4-cc2c-4d46-87b7-c532d92dcaa7",
"originalTransactionReference": {
"amount": {
"instructedAmount": {
"amount": 1000,
"currency": "USD"
}
},
"requestedExecutionDate": "2023-05-16",
"paymentMethod": "BOOK",
"debtorAccount": {
"identification": {
"other": {
"identification": "0123456789"
}
},
"currency": "USD",
"name": "WALLET DDA"
},
"debtorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33XXX"
}
},
"creditorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33XXX"
}
},
"creditorAccount": {
"identification": {
"other": {
"identification": "0123456789"
}
},
"currency": "USD",
"name": "WALLET DDA"
},
"ultimateCreditor": {
"identification": {
"organisationIdentification": {
"other": [
{
"identification": "VAID00001",
"schemeName": {
"proprietary": "virtualAccountIdentification"
}
}
]
}
}
}
}
}
]
}
}Notification
The following is the asynchronous notification that Wallet sends after completing the previous example request.
{
"groupHeader": {
"messageIdentification": "9ca88265-8ea7-4fcc-a26f-8131d9843c69",
"creationDateTime": "2023-05-16T17:56:10.567+0000"
},
"originalGroupInformationAndStatus": {
"originalMessageIdentification": "SK230516135601",
"originalMessageNameIdentification": "API-PAYTO",
"originalNumberOfTransactions": 1
},
"originalPaymentInformationAndStatus": {
"originalPaymentInformationIdentification": "PayToSK230516135601",
"transactionInformationAndStatus": [
{
"originalEndToEndIdentification": "SK230516135601",
"transactionStatus": "ACSC",
"statusReasonInformation": [
{
"additionalInformation": [
"/eventType/PaymentComplete"
]
}
],
"acceptanceDateTime": "2023-05-16T17:56:07.322+0000",
"originalTransactionReference": {
"amount": {
"instructedAmount": {
"amount": 1000,
"currency": "USD"
}
},
"requestedExecutionDate": "2023-05-16",
"paymentMethod": "BOOK",
"debtorAccount": {
"identification": {
"other": {
"identification": "0123456789"
}
},
"currency": "USD"
},
"debtorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33XXX"
}
},
"creditorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33XXX"
}
},
"creditorAccount": {
"identification": {
"other": {
"identification": "0123456789"
}
},
"currency": "USD"
},
"ultimateCreditor": {
"identification": {
"organisationIdentification": {
"other": [
{
"identification": "VAID00001",
"schemeName": {
"proprietary": "virtualAccountIdentification"
}
}
]
}
}
}
}
}
]
}
}