Skip to main content
Jp Morgan Wallet

Move funds between virtual accounts (Virtual-to-Virtual)

Overview

A Virtual-to-Virtual (V2V) transaction virtually transfers funds within a J.P. Morgan Wallet™ Demand Deposit Account (DDA), from one Virtual Transaction Account (VTA) to another.

Some examples of moving funds between VTAs are:

  • From the Default (Reconciliation) VTA to another VTA in cases where payments are returned
  • From a counterparty's VTA to a revenue VTA
  • Between VTAs in cases of errors

For an overview of payment types in Wallet, see Payments.

Use cases

The following are examples of use cases where you might execute a V2V 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 "revenue VTA." It keeps a portion of the funds, and executes a V2V transaction to transfer the rest from the revenue 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 "revenue VTA." Then, it executes a V2V transaction to transfer the funds from the revenue 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 "revenue VTA." It keeps a portion of the funds, and executes a V2V transaction to transfer the rest from the revenue 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 V2V transactions.

Key information for V2V
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 V2V
Payment flows
  • Domestic, same currency: All Wallet-supported currencies
  • Domestic, Foreign Exchange (FX): Not supported
  • Cross-border, same currency: Not supported
  • Cross-border, FX: Not supported
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 V2V transactions when we configure your Wallet program. For more information, ask your J.P. Morgan representative.

Reporting

V2V transactions appear on your daily TRANSACTION ACTIVITY reports.

The following table is an example of what a V2V transaction on a TRANSACTION ACTIVITY report might look like.

TRANSACTION ACTIVITY report example
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 3/10/2026
REQUESTED VALUE DATE 3/10/2026
VALUE DATE 3/10/2026
CLIENT TXN ID 2026031000312915
TXN TYPE V2V
DEBTOR ACCOUNT XXXXXXXXXX
DEBTOR VIRTUAL ACCOUNT ID SANGITA-VA-01
DEBTOR AGENT JPMORGAN CHASE BANK N.A.
DEBTOR AGENT ID CHASUS33XXX
DEBIT AMOUNT 0.01
DEBIT CURRENCY USD
CREDITOR ACCOUNT XXXXXXXXXX
CREDITOR VIRTUAL ACCOUNT SANGITA-VA-03
CREDITOR AGENT JPMORGAN CHASE BANK N.A.
CREDITOR AGENT ID CHASUS33XXX
CREDIT AMOUNT 0.01
CREDIT CURRENCY USD
STATUS COMPLETED
PRN XXXXXXXXXX
BATCH ID V2V2026031000312915
MATCHED REFERENCE ID 2026031000312915

Notes

Note the following points about V2V transactions.

  • You can view V2V transactions in Wallet reports and queries.
  • You can only initiate one transaction per request.
  • Both the debited VTA and the credited VTA must be held at the same branch, use the same currency, and be located in the same Wallet program.
  • You must include both an ultimate debtor and an ultimate creditor in the request body because you must specify the VTA to debit and the VTA to credit.

Important parameters

The following sections list important parameters in the V2V 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.

Header parameters for V2V request
Parameter Required / Optional Description
programId Required Your Wallet program ID.
transactionType Required The type of the transaction. Set to V2V.

Body parameters

Note the following important body parameters for V2V.

groupHeader

The groupHeader object contains information about the batch of transactions.

V2V: groupHeader
Parameter Required / Optional Description
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
controlSum Optional Sum of the transaction amounts in the request.
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.

V2V: groupHeader
{
    "groupHeader": {
        "messageIdentification": "G1750764132",
        "creationDateTime": "2025-06-24T11:22:11.000+0000",
        "numberOfTransactions": 1,
        "controlSum": 50
    }
}

paymentInformation

The paymentInformation object contains parameters related to the payment.

V2V: paymentInformation
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.

V2V: paymentInformation
{
    "paymentInformation": {
        "paymentInformationIdentification": "V2VG1750764132",
        "numberOfTransactions": 1,
        "controlSum": 50,
        "paymentMethod": "BOOK",
        "requestedExecutionDate": "2025-06-24"
    }
}

paymentInformation.debtorAccount

The paymentInformation.debtorAccount object contains information about the bank account of the debtor.

V2V: paymentInformation.debtorAccount
Parameter Required / Optional Description
identification.other.identification Required ID of the Wallet DDA. The debited VTA and the credited VTA must be located in the same Wallet DDA. Maximum 34 characters.

The following code snippet is an example of the paymentInformation.debtorAccount object.

V2V: paymentInformation.debtorAccount
{
    "paymentInformation": {
        "debtorAccount": {
            "identification": {
                "other": {
                    "identification": "XXXXXXXXXX"
                }
            }
        }
    }
}

paymentInformation.debtorAgent

The paymentInformation.debtorAgent object contains information about the debtor bank branch.

V2V: paymentInformation.debtorAgent
Field Required / Optional Description
financialInstitutionIdentification.bic Required SWIFT BIC of the branch where the Wallet DDA is located. The debited VTA and the credited VTA must be located in the same branch. Maximum 11 characters.

The following code snippet is an example of the paymentInformation.debtorAgent object.

V2V: paymentInformation.debtorAgent
{
    "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.

paymentInformation.creditTransferTransactionInformation
Parameter Required / Optional Description
amount.instructedAmount.amount Required Amount of money to transfer between VTAs. Must be less than or equal to the amount currently in the ultimate debtor VTA. Maximum 18 digits with six decimal places.
amount.instructedAmount.currency Required Currency of the funds in the Wallet DDA.
creditorAccount.identification.other.identification Conditionally required ID of the Wallet DDA. The debited VTA and the credited VTA must be located in the same Wallet DDA. Maximum 34 characters. Required if creditorAccount is present.
creditorAgent.financialInstitutionIdentification.bic Required SWIFT BIC of the branch where the Wallet DDA is located. The debited VTA and the credited VTA must be located in the same branch. 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 VTA to credit.
ultimateCreditor.identification.organisationIdentification.other.schemeName.proprietary Required Set to virtualAccountIdentification.
ultimateDebtor.identification.organisationIdentification.other.identification Required ID of the VTA to debit.
ultimateDebtor.identification.organisationIdentification.other.schemeName.proprietary Required Set to virtualAccountIdentification.

The following code snippet is an example of the paymentInformation.creditTransferTransactionInformation object.

V2V: paymentInformation.creditTransferTransactionInformation
{
    "paymentInformation": {
        "creditTransferTransactionInformation": [
            {
                "paymentIdentification": {
                    "endToEndIdentification": "G1750764132"
                },
                "amount": {
                    "instructedAmount": {
                        "amount": 50,
                        "currency": "USD"
                    }
                },
                "ultimateDebtor": {
                    "identification": {
                        "organisationIdentification": {
                            "other": [
                                {
                                    "identification": "VAID00002",
                                    "schemeName": {
                                        "proprietary": "virtualAccountIdentification"
                                    }
                                }
                            ]
                        }
                    }
                },
                "creditorAgent": {
                    "financialInstitutionIdentification": {
                        "bic": "CHASUS33XXX"
                    }
                },
                "creditorAccount": {
                    "identification": {
                        "other": {
                            "identification": "XXXXXXXXXX"
                        }
                    }
                },
                "ultimateCreditor": {
                    "identification": {
                        "organisationIdentification": {
                            "other": [
                                {
                                    "identification": "VTA-G1731681820",
                                    "schemeName": {
                                        "proprietary": "virtualAccountIdentification"
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        ]
    }
}

Examples

Request with minimum required data

The following example shows a request with the minimum data required to execute a V2V transaction from one VTA to another.

V2V: Request with minimum required data
{
    "groupHeader": {
        "messageIdentification": "G1750764132",
        "creationDateTime": "2025-06-24T11:22:11.000+0000",
        "numberOfTransactions": 1
    },
    "paymentInformation": {
        "paymentInformationIdentification": "V2VG1750764132",
        "paymentMethod": "BOOK",
        "requestedExecutionDate": "2025-06-24",
        "debtorAccount": {
            "identification": {
                "other": {
                    "identification": "XXXXXXXXXX"
                }
            }
        },
        "debtorAgent": {
            "financialInstitutionIdentification": {
                "bic": "CHASUS33XXX"
            }
        },
        "creditTransferTransactionInformation": [
            {
                "paymentIdentification": {
                    "endToEndIdentification": "G1750764132"
                },
                "amount": {
                    "instructedAmount": {
                        "amount": 50,
                        "currency": "USD"
                    }
                },
                "ultimateDebtor": {
                    "identification": {
                        "organisationIdentification": {
                            "other": [
                                {
                                    "identification": "VAID00002",
                                    "schemeName": {
                                        "proprietary": "virtualAccountIdentification"
                                    }
                                }
                            ]
                        }
                    }
                },
                "creditorAgent": {
                    "financialInstitutionIdentification": {
                        "bic": "CHASUS33XXX"
                    }
                },
                "ultimateCreditor": {
                    "identification": {
                        "organisationIdentification": {
                            "other": [
                                {
                                    "identification": "VTA-G1731681820",
                                    "schemeName": {
                                        "proprietary": "virtualAccountIdentification"
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        ]
    }
}

Request with optional data

The following example shows a request to execute a V2V transaction from one VTA to another with optional parameters.

V2V: Request with optional data
{
    "groupHeader": {
        "messageIdentification": "G1750764132",
        "creationDateTime": "2025-06-24T11:22:11.000+0000",
        "numberOfTransactions": 1,
        "controlSum": 50
    },
    "paymentInformation": {
        "paymentInformationIdentification": "V2VG1750764132",
        "numberOfTransactions": 1,
        "controlSum": 50,
        "paymentMethod": "BOOK",
        "requestedExecutionDate": "2025-06-24",
        "debtorAccount": {
            "identification": {
                "other": {
                    "identification": "XXXXXXXXXX"
                }
            }
        },
        "debtorAgent": {
            "financialInstitutionIdentification": {
                "bic": "CHASUS33XXX"
            }
        },
        "creditTransferTransactionInformation": [
            {
                "paymentIdentification": {
                    "endToEndIdentification": "G1750764132"
                },
                "amount": {
                    "instructedAmount": {
                        "amount": 50,
                        "currency": "USD"
                    }
                },
                "ultimateDebtor": {
                    "identification": {
                        "organisationIdentification": {
                            "other": [
                                {
                                    "identification": "VAID00002",
                                    "schemeName": {
                                        "proprietary": "virtualAccountIdentification"
                                    }
                                }
                            ]
                        }
                    }
                },
                "creditorAgent": {
                    "financialInstitutionIdentification": {
                        "bic": "CHASUS33XXX"
                    }
                },
                "creditorAccount": {
                    "identification": {
                        "other": {
                            "identification": "XXXXXXXXXX"
                        }
                    }
                },
                "ultimateCreditor": {
                    "identification": {
                        "organisationIdentification": {
                            "other": [
                                {
                                    "identification": "VTA-G1731681820",
                                    "schemeName": {
                                        "proprietary": "virtualAccountIdentification"
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        ]
    }
}

Response

The following is the synchronous response to the previous example request.

V2V: Response
{
    "groupHeader": {
        "messageIdentification": "e79209a2-4809-465f-989d-1d227be6729f",
        "creationDateTime": "2025-06-24T11:22:15.000+0000"
    },
    "originalGroupInformationAndStatus": {
        "originalMessageIdentification": "G1750764132",
        "originalMessageNameIdentification": "API-V2V",
        "originalCreationDateTime": "2025-06-24T11:22:11.000+0000",
        "originalNumberOfTransactions": 1,
        "originalControlSum": 50,
        "groupStatus": "ACTC",
        "statusReasonInformation": [],
        "numberOfTransactionsPerStatus": [
            {
                "detailedNumberOfTransactions": "1",
                "detailedStatus": "ACTC",
                "detailedControlSum": 50
            }
        ]
    },
    "originalPaymentInformationAndStatus": {
        "originalPaymentInformationIdentification": "V2VG1750764132",
        "paymentInformationStatus": "ACTC",
        "statusReasonInformation": [],
        "numberOfTransactionsPerStatus": [
            {
                "detailedNumberOfTransactions": "1",
                "detailedStatus": "ACTC",
                "detailedControlSum": 50
            }
        ],
        "transactionInformationAndStatus": [
            {
                "originalEndToEndIdentification": "G1750764132",
                "transactionStatus": "ACTC",
                "statusReasonInformation": [],
                "acceptanceDateTime": "2025-06-24T11:22:15.346+0000",
                "accountServicerReference": "ed5d7f04-dfaa-4e96-8d5d-758439ad69b5",
                "originalTransactionReference": {
                    "amount": {
                        "instructedAmount": {
                            "amount": 50,
                            "currency": "USD"
                        }
                    },
                    "requestedExecutionDate": "2025-06-24",
                    "paymentMethod": "BOOK",
                    "ultimateDebtor": {
                        "identification": {
                            "organisationIdentification": {
                                "other": [
                                    {
                                        "identification": "VAID00002",
                                        "schemeName": {
                                            "proprietary": "virtualAccountIdentification"
                                        }
                                    }
                                ]
                            }
                        }
                    },
                    "debtorAccount": {
                        "identification": {
                            "other": {
                                "identification": "XXXXXXXXXX"
                            }
                        },
                        "currency": "USD",
                        "name": "WALLET DDA"
                    },
                    "debtorAgent": {
                        "financialInstitutionIdentification": {
                            "bic": "CHASUS33XXX"
                        }
                    },
                    "creditorAgent": {
                        "financialInstitutionIdentification": {
                            "bic": "CHASUS33XXX"
                        }
                    },
                    "creditorAccount": {
                        "identification": {
                            "other": {
                                "identification": "XXXXXXXXXX"
                            }
                        },
                        "currency": "USD"
                    },
                    "ultimateCreditor": {
                        "identification": {
                            "organisationIdentification": {
                                "other": [
                                    {
                                        "identification": "VTA-G1731681820",
                                        "schemeName": {
                                            "proprietary": "virtualAccountIdentification"
                                        }
                                    }
                                ]
                            }
                        }
                    }
                }
            }
        ]
    }
}

Notification

The following is the asynchronous notification that Wallet sends after completing the previous example request.

V2V: Notification
{
    "groupHeader": {
        "messageIdentification": "13a56e71-f2e3-46b4-876f-b59ba5ed9b57",
        "creationDateTime": "2025-06-24T11:22:21.731+0000"
    },
    "originalGroupInformationAndStatus": {
        "originalMessageIdentification": "G1750764132",
        "originalMessageNameIdentification": "API-V2V",
        "originalNumberOfTransactions": 1
    },
    "originalPaymentInformationAndStatus": {
        "originalPaymentInformationIdentification": "V2VG1750764132",
        "transactionInformationAndStatus": [
            {
                "originalEndToEndIdentification": "G1750764132",
                "transactionStatus": "ACSC",
                "statusReasonInformation": [
                    {
                        "additionalInformation": [
                            "/eventType/PaymentComplete",
                            "/POSTED-BALANCE:ultimateCreditor:ACCOUNT-TYPE/TRANSACTION",
                            "/POSTED-BALANCE:ultimateCreditor:VERSION/1",
                            "/POSTED-BALANCE:ultimateCreditor:ITBD/60.0",
                            "/POSTED-BALANCE:ultimateCreditor:ITAV/60.0",
                            "/POSTED-BALANCE:ultimateCreditor:XPCD/60.0",
                            "/POSTED-BALANCE:ultimateCreditor:EFFECTIVE-DATE/2025-06-24",
                            "/POSTED-BALANCE:ultimateCreditor:TIMESTAMP/2025-06-24T11:22:17.792+00:00",
                            "/POSTED-BALANCE:ultimateDebtor:ACCOUNT-TYPE/TRANSACTION",
                            "/POSTED-BALANCE:ultimateDebtor:VERSION/1",
                            "/POSTED-BALANCE:ultimateDebtor:ITBD/899532864.37420",
                            "/POSTED-BALANCE:ultimateDebtor:ITAV/897039147.92420",
                            "/POSTED-BALANCE:ultimateDebtor:XPCD/899532960.22420",
                            "/POSTED-BALANCE:ultimateDebtor:EFFECTIVE-DATE/2025-06-24",
                            "/POSTED-BALANCE:ultimateDebtor:TIMESTAMP/2025-06-24T11:22:17.792+00:00"
                        ]
                    }
                ],
                "acceptanceDateTime": "2025-06-24T11:22:16.194+0000",
                "originalTransactionReference": {
                    "amount": {
                        "instructedAmount": {
                            "amount": 50,
                            "currency": "USD"
                        }
                    },
                    "requestedExecutionDate": "2025-06-24",
                    "paymentMethod": "BOOK",
                    "ultimateDebtor": {
                        "identification": {
                            "organisationIdentification": {
                                "other": [
                                    {
                                        "identification": "XXXXXXXXX",
                                        "schemeName": {
                                            "proprietary": "virtualAccountIdentification"
                                        }
                                    }
                                ]
                            }
                        }
                    },
                    "debtorAccount": {
                        "identification": {
                            "other": {
                                "identification": "XXXXXXXXXX"
                            }
                        },
                        "currency": "USD"
                    },
                    "debtorAgent": {
                        "financialInstitutionIdentification": {
                            "bic": "XXXXXXXXXXX"
                        }
                    },
                    "creditorAgent": {
                        "financialInstitutionIdentification": {
                            "bic": "XXXXXXXXXXX"
                        }
                    },
                    "creditorAccount": {
                        "identification": {
                            "other": {
                                "identification": "XXXXXXXXXX"
                            }
                        },
                        "currency": "USD"
                    },
                    "ultimateCreditor": {
                        "identification": {
                            "organisationIdentification": {
                                "other": [
                                    {
                                        "identification": "XXXXXXXXXXXXXXX",
                                        "schemeName": {
                                            "proprietary": "virtualAccountIdentification"
                                        }
                                    }
                                ]
                            }
                        }
                    }
                }
            }
        ]
    }
}