Push to Debit Card
Overview
The J.P. Morgan Wallet™ Push to Debit Card feature allows clients with a USD Wallet program in New York, or any of the other 14 Chase Affiliate Banks, to send a USD payment to a recipient’s US bank account using the account’s Mastercard or VISA debit card number. With Push to Debit Card, you can make payouts anytime - 24 hours/day, 365 days/year. You receive electronic notification of payment completion or rejection within 90 seconds, and a completed payment is irrevocable. Funds are available in the recipient’s account within 30 minutes of transaction initiation.
Recipients don’t have to wait for a business banking day to be paid. Clients can satisfy their customers' growing demand to get paid fast and reliably without being required to provide a bank account and routing number. The Push to Debit Card service is secure, Payment Card Industry (PCI)-compliant, and processed using established and ubiquitous VISA and Mastercard card networks.
The high-level business flow is as follows.
- You collect the debit card number and expiration date using your PCI-compliant solution.
- You initiate a USD-USD Push to Debit Card payout request using our PCI-compliant API endpoint.
- We tokenize the card number and securely lock the actual and tokenized card data.
- We validate the request to your Wallet program.
- We send a payment message to the Visa card network containing the actual card number.
- The Visa network sends a payout with the actual card number to the recipient's US bank that issued the Mastercard or Visa debit card.
- The receiving US bank posts the amount to the recipient's bank account linked to the debit card.
- The recipient gets access to the funds deposited to the bank account within 30 minutes.
For the full technical specifications, see the API reference.
Supported use cases
Push to Debit Card supports Business to Consumer (B2C) as well as Business to Business (B2B) paying on behalf of a third party (TP3). For example:
- e-Commerce businesses that need to pay their marketplace sellers
- e-Commerce marketplace sellers that need to pay their suppliers
- Transportation/delivery companies that need to pay their drivers
- Higher education institutions that need to pay their students and teachers
- Insurance companies that need to pay their insureds
- Airlines that need to pay their passengers and frequent flyer participants
- Companies that need to pay rebates, rewards, due compensation, and incentives
Key information
The following table describes important information about Push to Debit Card.
| Production endpoint | https://api-mtls.merchant.jpmorgan.com/tsapi/v3/jpmwallet/payments/advanced-batch |
|---|---|
| Client testing endpoint | https://apigatewaycat-pci.jpmorgan.com/tsapi/v3/jpmwallet/payments/advanced-batch |
| Supported branches | New York branch, or any of Chase's US affiliate banks |
| Supported currencies | USD |
| Supported account types | Demand Deposit Account (DDA) |
| Payment type | Issued Credit Transfer (ICDT) Note: Incoming credit receipts are not supported. |
| Payment flows |
|
| Transaction limit | $125,000 (you can request a lower limit) |
| Cut-off time | N/A |
| Returns, recalls, and reversals | Not supported. If you need the recipient to return money that has already been paid out, you must do that outside of the Push to Debit Card flow. |
| Service level code | Must be NURGPC |
Requirements
Push to Debit Card requests must adhere to the following requirements.
- You must send requests to the correct PCI-compliant Pay to Debit Card endpoint. If you attempt to send a Pay to Debit Card request to a non-PCI-compliant payout endpoint, the payment is rejected immediately with the error
Unsupported API. We do not store any information from the request. - The card in the creditor account must be a debit card issued by a US bank. If the card in the creditor account was not issued by a US bank, or if it’s a credit card, the transaction is rejected.
- The requested execution date must be either the date that you submit the request, or the previous date, in
YYYY-MM-DDformat. If the date is in the past, Wallet processes the payment immediately. - To comply with card network data schema rules, certain data fields are limited in size. The data in Push to Debit Card payment requests must meet size requirements, or the payment is rejected. For more information, see the API reference.
Card tokenization
You must have your own PCI-compliant solution to securely collect your customers' debit card numbers and expiration date information. Wallet does not provide an iFrame solution for this capability.
You use a J.P. Morgan PCI-compliant endpoint to transmit an individual Push to Debit Card payout instruction containing the actual card number and expiration date information.
We use a PCI-compliant process to tokenize the actual card number to an alias number, except the last four digits. We securely lock both the actual and tokenized card number pair in a vault until just before the payment is released out to the card network. When the payment is released, the tokenized number is replaced with the actual number.
You can view the masked card number, with only the last three digits visible, on transaction notifications, transaction query results, and on your Wallet daily transaction activity report. The last digits of the masked card number are from the actual card number. Clients never receive an actual card number or tokenized card number. Masking example: xxxxxxxxxxxxx123
Reporting
Push to Debit Card transactions appear on your daily transaction activity reports. The Creditor account row displays the masked, tokenized card number with only the last three digits visible. The Settlement method row displays P2C indicating a Push to Debit Card transaction.
The following table is an example of what a daily transaction activity report with Push to Debit Card transactions might look like.
| Creditor account | XXXXXXXXXXXXX003 | XXXXXXXXXXXXX003 |
|---|---|---|
| Creditor name | Creditor's account name | Creditor's account name |
| Creditor virtual account | VTA1-ID-upTo35characters-1234567890 | VTA2-ID-upTo35characters-1234567890 |
| Ultimate creditor name | Ultimate Creditor Name | Ultimate Creditor Name |
| Creditor agent | JPMORGAN CHASE BANK N.A. | JPMORGAN CHASE BANK N.A. |
| Creditor agent ID | CHASUS33XXX | CHASUS33XXX |
| Credit amount | 12 | 12 |
| Credit currency | USD | USD |
| Status | REJECTED | COMPLETED |
| Settlement method | P2C | P2C |
| PRN | 1234567890 | 1234567890 |
| Remittance info | Remittance information: AaBbCc123/-?:().,'+ @{} | Remittance information: AaBbCc123/-?:().,'+ @{} |
Important fields
The following sections list important fields in the Push to Debit Card JSON request body along with their requirements. Not all fields are listed here - for a complete list, see the API reference.
paymentInformation
The paymentInformation object contains the bulk of the fields related to the Push to Debit Card request.
| Field | Required / Optional | Requirements |
|---|---|---|
| paymentInformation.paymentMethod | Required | Must be TRF. |
| paymentInformation.requestedExecutionDate | Required | Must be either the date that you submit the request, or the previous date, in YYYY-MM-DD format. If the date is in the past, Wallet processes the payment immediately. |
| paymentInformation.paymentTypeInformation.serviceLevel.proprietary | Required | Must be NURGPC. |
The following code snippet is an example of the paymentInformation object.
"paymentInformation": {
"paymentInformationIdentification": "P2C{{$randomInt}}",
"numberOfTransactions": 1,
"controlSum": 0.02,
"paymentMethod": "TRF",
"requestedExecutionDate": "2025-08-08",
"paymentTypeInformation": {
"serviceLevel": {
"proprietary": "NURGPC"
}
},debtor
The paymentInformation.debtor object contains fields for the debtor's name and address.
| Field | Required / Optional | Requirements |
|---|---|---|
| paymentInformation.debtor.name | Required | Must be 1-30 characters. No special characters. |
| paymentInformation.debtor.postalAddress.addressType | Optional | Must be 1-4 characters. |
| paymentInformation.debtor.postalAddress.streetName | Optional | Must be 1-35 characters. No special characters. |
| paymentInformation.debtor.postalAddress.buildingNumber | Optional | Must be 1-16 characters. No special characters. |
| paymentInformation.debtor.postalAddress.postCode | Optional | Must be 5-9 characters for US. No special characters. |
| paymentInformation.debtor.postalAddress.townName | Optional | Must be 1-25 characters. No special characters. |
| paymentInformation.debtor.postalAddress.countrySubDivision | Optional | Must be two characters. |
| paymentInformation.debtor.postalAddress.country | Optional | Must be US. |
The following code snippet is an example of the paymentInformation.debtor object.
"debtor": {
"name": "Debtor Name",
"postalAddress": {
"addressType": "ADDR",
"streetName": "WASHINGTON BLVD",
"buildingNumber": "575",
"postCode": "07310",
"townName": "JERSEY CITY",
"countrySubDivision": "NJ",
"country": "US"
}
},debtorAccount
The paymentInformation.debtorAccount object contains fields for your Wallet DDA number and the currency of the funds to be transferred.
| Field | Required / Optional | Requirements |
|---|---|---|
| paymentInformation.debtorAccount.identification.other.identification | Required | Your Wallet DDA number. |
| paymentInformation.debtorAccount.currency | Required | Must be USD. |
The following code snippet is an example of the paymentInformation.debtorAccount object.
"debtorAccount": {
"identification": {
"other": {
"identification": "XXXXXXXX"
}
},
"currency": "USD",
"name": "Debtor Account Name"
},debtorAgent
The paymentInformation.debtorAgent object contains fields for the BIC and country of the J.P. Morgan branch of the Wallet program.
| Field | Required / Optional | Requirements |
|---|---|---|
| paymentInformation.debtorAgent.financialInstitutionIdentification.bic | Required | Must be CHASUS33. |
The following code snippet is an example of the paymentInformation.debtorAgent object.
"debtorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33",
"postalAddress": {
"country": "US"
}
}
},creditTransferTransactionInformation
The paymentInformation.creditTransferTransactionInformation object contains fields related to the end-to-end ID, transaction amount, ultimate debtor, and creditor information.
paymentIdentification
The paymentInformation.creditTransferTransactionInformation.paymentIdentification object contains the end-to-end ID of the transaction.
| Field | Required / Optional | Requirements |
|---|---|---|
| paymentInformation.creditTransferTransactionInformation.paymentIdentification.endToEndIdentification | Required | Maximum length is 16 characters. |
The following code snippet is an example of the paymentInformation.creditTransferTransactionInformation.paymentIdentification object.
"paymentIdentification": {
"endToEndIdentification": "P2CE2E{{randomInt}}"
},amount
The paymentInformation.creditTransferTransactionInformation.amount object contains fields related to the transaction amount.
| Field | Required / Optional | Requirements |
|---|---|---|
| paymentInformation.creditTransferTransactionInformation.amount.instructedAmount.amount | Required | Must be between 0.01 and your Wallet transaction limit. Default transaction limit is 125,000. |
| paymentInformation.creditTransferTransactionInformation.amount.instructedAmount.currency | Required | Must be USD. |
The following code snippet is an example of the paymentInformation.creditTransferTransactionInformation.amount object.
"amount": {
"instructedAmount": {
"amount": 0.01,
"currency": "USD"
}
},ultimateDebtor
The paymentInformation.creditTransferTransactionInformation.ultimateDebtor object contains fields related to the ultimate debtor. The name and address are required if you execute the transaction on behalf of a third party.
| Field | Required / Optional | Requirements |
|---|---|---|
| paymentInformation.creditTransferTransactionInformation.ultimateDebtor.name | Required if transaction executed on behalf of third party | Must be 1-20 characters. No special characters. |
| paymentInformation.creditTransferTransactionInformation.ultimateDebtor.postalAddress.addressType | Optional | Maximum length is four characters. |
| paymentInformation.creditTransferTransactionInformation.ultimateDebtor.postalAddress.streetName | Required if transaction executed on behalf of third party | Must be 1-35 characters. No special characters. |
| paymentInformation.creditTransferTransactionInformation.ultimateDebtor.postalAddress.buildingNumber | Optional | Must be 1-16 characters. No special characters. |
| paymentInformation.creditTransferTransactionInformation.ultimateDebtor.postalAddress.postCode | Required if transaction executed on behalf of third party | Must be 5-9 characters for US. No special characters. |
| paymentInformation.creditTransferTransactionInformation.ultimateDebtor.postalAddress.townName | Required if transaction executed on behalf of third party | Must be 1-25 characters. No special characters. |
| paymentInformation.creditTransferTransactionInformation.ultimateDebtor.postalAddress.countrySubDivision | Required if transaction executed on behalf of third party | Must be two characters. |
| paymentInformation.creditTransferTransactionInformation.ultimateDebtor.postalAddress.country | Required if transaction executed on behalf of third party | Must be US. |
| paymentInformation.creditTransferTransactionInformation.ultimateDebtor.identification.privateIdentification.other.identification | Required | The Virtual Transaction Account (VTA) ID within your Wallet program to debit. |
| paymentInformation.creditTransferTransactionInformation.ultimateDebtor.identification.privateIdentification.other.schemeName.proprietary | Required | Must be virtualAccountIdentification. |
The following code snippet is an example of the paymentInformation.creditTransferTransactionInformation.ultimateDebtor object.
"ultimateDebtor": {
"name": "Ult Dbtr Name",
"postalAddress": {
"addressType": "ADDR",
"streetName": "WASHINGTON BLVD",
"postCode": "07310",
"townName": "JERSEY CITY",
"countrySubDivision": "NJ",
"country": "US"
},
"identification": {
"privateIdentification": {
"other": [
{
"identification": "VAID00002",
"schemeName": {
"proprietary": "virtualAccountIdentification"
}
}
]
}
}
},creditorAgent
The paymentInformation.creditTransferTransactionInformation.creditorAgent object contains fields related to the J.P. Morgan branch of the Wallet program.
| Field | Required / Optional | Requirements |
|---|---|---|
| paymentInformation.creditTransferTransactionInformation.creditorAgent.financialInstitutionIdentification.bic | Required | Can be either CHASUS33 or CHASEUSXXX. |
The following code snippet is an example of the paymentInformation.creditTransferTransactionInformation.creditorAgent object.
"creditorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33",
"postalAddress": {
"country": "US"
}
}
},creditor
The paymentInformation.creditTransferTransactionInformation.creditor object contains fields for the creditor's name and address. The postalAddress fields are optional, but provide them if you have them.
| Field | Required / Optional | Requirements |
|---|---|---|
| paymentInformation.creditTransferTransactionInformation.creditor.name | Required | Must be 1-30 characters. No special characters. |
| paymentInformation.creditTransferTransactionInformation.creditor.postalAddress.streetName | Optional, but provide if you have it | Must be 1-35 characters for US. No special characters. |
| paymentInformation.creditTransferTransactionInformation.creditor.postalAddress.buildingNumber | Optional, but provide if you have it | Must be 1-16 characters. No special characters. |
| paymentInformation.creditTransferTransactionInformation.creditor.postalAddress.postCode | Optional, but provide if you have it | Must be 5-9 characters for US. No special characters. |
| paymentInformation.creditTransferTransactionInformation.creditor.postalAddress.townName | Optional, but provide if you have it | Must be 1-25 characters. |
| paymentInformation.creditTransferTransactionInformation.creditor.postalAddress.countrySubDivision | Optional, but provide if you have it | Must be two characters. |
| paymentInformation.creditTransferTransactionInformation.creditor.postalAddress.country | Optional |
Must be US. |
The following code snippet is an example of the paymentInformation.creditTransferTransactionInformation.creditor object.
"creditor": {
"name": "Creditor Name",
"postalAddress": {
"streetName": "Thorpe St",
"buildingNumber": "1691",
"postCode": "33611",
"townName": "Tampa",
"countrySubDivision": "FL",
"country": "US"
}
},creditorAccount
The paymentInformation.creditTransferTransactionInformation.creditorAccount object contains fields related to the debit card to transfer the funds to.
| Field | Required / Optional | Requirements |
|---|---|---|
| paymentInformation.creditTransferTransactionInformation.creditorAccount.identification.other.identification | Required | The actual debit card number. Must be 16 characters. |
| paymentInformation.creditTransferTransactionInformation.creditorAccount.expiryDate | Required | The actual debit card expiration date in MMYY format. |
| paymentInformation.creditTransferTransactionInformation.creditorAccount.type.code | Required | The creditor account type code. Must be CARD. |
| paymentInformation.creditTransferTransactionInformation.creditorAccount.currency | Required | Must be USD. |
The following code snippet is an example of the paymentInformation.creditTransferTransactionInformation.creditorAccount object.
"creditorAccount": {
"identification": {
"other": {
"identification": "XXXXXXXX"
}
},
"expiryDate": "2603",
"type": {
"code": "CARD"
},
"currency": "USD"
},remittanceInformation
The paymentInformation.creditTransferTransactionInformation.remittanceInformation object contains unstructured remittance information.
| Field | Required / Optional | Requirements |
|---|---|---|
| paymentInformation.creditTransferTransactionInformation.remittanceInformation.unstructured | Optional | Must be 1-16 characters. |
The following code snippet is an example of the paymentInformation.creditTransferTransactionInformation.remittanceInformation object.
"remittanceInformation": {
"unstructured": [
"RemittanceMax16"
]
}Examples
The following examples show how to format a Push to Debit Card JSON request body for different use cases.
Pay counterparty directly with no ultimate debtor (minimum required data)
This example shows the minimum data required to pay a counterparty directly with no ultimate debtor (non-TP3). The example does not include the remittanceInformation field - see the examples with ultimate debtors for examples of that field.
{
"groupHeader": {
"messageIdentification": "202511120927040",
"creationDateTime": "2025-11-12T09:27:03.546+0000",
"numberOfTransactions": 1,
"initiatingParty": {
"name": "ewallet"
},
"controlSum": 9
},
"paymentInformation": {
"paymentInformationIdentification": "202511120927040",
"numberOfTransactions": 1,
"controlSum": 9,
"requestedExecutionDate": "2025-11-12",
"paymentMethod": "TRF",
"paymentTypeInformation": {
"serviceLevel": {
"proprietary": "NURGPC"
}
},
"debtor": {
"name": "Debtor Name"
},
"debtorAccount": {
"currency": "USD",
"identification": {
"other": {
"identification": "XXXXXXXXXX"
}
}
},
"debtorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33"
}
},
"creditTransferTransactionInformation": [
{
"paymentIdentification": {
"endToEndIdentification": "202511120927040"
},
"amount": {
"instructedAmount": {
"currency": "USD",
"amount": 9
}
},
"creditor": {
"name": "Creditor Name"
},
"ultimateDebtor": {
"identification": {
"privateIdentification": {
"other": [
{
"identification": "SANG-VA-04",
"schemeName": {
"proprietary": "virtualAccountIdentification"
}
}
]
}
}
},
"creditorAccount": {
"identification": {
"other": {
"identification": "XXXXXXXXXXXXXXXX"
}
},
"type": {
"code": "CARD"
},
"expiryDate": "2709"
}
}
]
}
}Pay on behalf of a third party with an ultimate debtor (minimum required data)
This example shows the minimum data required to pay on behalf of a third party (TP3) with an ultimate debtor. The example includes the remittanceInformation field.
{
"groupHeader": {
"messageIdentification": "202511120927046",
"creationDateTime": "2025-11-12T09:27:03.546+0000",
"numberOfTransactions": 1,
"initiatingParty": {
"name": "ewallet"
},
"controlSum": 9
},
"paymentInformation": {
"paymentInformationIdentification": "202511120927046",
"numberOfTransactions": 1,
"controlSum": 9,
"requestedExecutionDate": "2025-11-12",
"paymentMethod": "TRF",
"paymentTypeInformation": {
"serviceLevel": {
"proprietary": "NURGPC"
}
},
"debtor": {
"name": "Debtor Name"
},
"debtorAccount": {
"currency": "USD",
"identification": {
"other": {
"identification": "XXXXXXXXXX"
}
}
},
"debtorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33"
}
},
"creditTransferTransactionInformation": [
{
"paymentIdentification": {
"endToEndIdentification": "202511120927046"
},
"amount": {
"instructedAmount": {
"currency": "USD",
"amount": 9
}
},
"creditor": {
"name": "Creditor Name"
},
"ultimateDebtor": {
"name": "ultimateDebtorName",
"postalAddress": {
"streetName": "270 Park Ave",
"postCode": "10017",
"townName": "New York",
"countrySubDivision": "NY",
"country": "US"
},
"identification": {
"privateIdentification": {
"other": [
{
"identification": "SANG-VA-04",
"schemeName": {
"proprietary": "virtualAccountIdentification"
}
}
]
}
}
},
"creditorAccount": {
"identification": {
"other": {
"identification": "XXXXXXXXXXXXXXXX"
}
},
"type": {
"code": "CARD"
},
"expiryDate": "2709"
},
"remittanceInformation": {
"unstructured": [
"Maximum 16 chars"
]
}
}
]
}
}Pay on behalf of a third party with an ultimate debtor (with optional data)
This example shows how to pay on behalf of a third party with an ultimate debtor, including both required and optional data. The examples includes the remittanceInformation field.
{
"groupHeader": {
"messageIdentification": "202511120927048",
"creationDateTime": "2025-11-12T09:27:03.546+0000",
"numberOfTransactions": 1,
"initiatingParty": {
"name": "ewallet"
},
"controlSum": 9
},
"paymentInformation": {
"paymentInformationIdentification": "202511120927048",
"numberOfTransactions": 1,
"controlSum": 9,
"requestedExecutionDate": "2025-11-12",
"paymentMethod": "TRF",
"paymentTypeInformation": {
"serviceLevel": {
"proprietary": "NURGPC"
}
},
"debtor": {
"name": "Debtor Name",
"postalAddress": {
"streetName": "789 Park st",
"postCode": "10016",
"townName": "New York",
"countrySubDivision": "NY",
"country": "US"
}
},
"debtorAccount": {
"currency": "USD",
"identification": {
"other": {
"identification": "XXXXXXXXXX"
}
}
},
"debtorAgent": {
"financialInstitutionIdentification": {
"bic": "CHASUS33"
}
},
"creditTransferTransactionInformation": [
{
"paymentIdentification": {
"endToEndIdentification": "202511120927048"
},
"amount": {
"instructedAmount": {
"currency": "USD",
"amount": 9
}
},
"creditor": {
"name": "Creditor Name",
"postalAddress": {
"streetName": "456 Avenue",
"postCode": "10014",
"townName": "New York",
"countrySubDivision": "NY",
"country": "US"
}
},
"ultimateDebtor": {
"name": "ultimateDebtorName",
"postalAddress": {
"streetName": "270 Park Ave",
"postCode": "10017",
"townName": "New York",
"countrySubDivision": "NY",
"country": "US"
},
"identification": {
"privateIdentification": {
"other": [
{
"identification": "SANG-VA-04",
"schemeName": {
"proprietary": "virtualAccountIdentification"
}
}
]
}
}
},
"creditorAccount": {
"identification": {
"other": {
"identification": "XXXXXXXXXXXXXXXX"
}
},
"type": {
"code": "CARD"
},
"expiryDate": "2709"
},
"remittanceInformation": {
"unstructured": [
"Maximum 16 chars"
]
}
}
]
}
}