Skip to main content
Jp Morgan Wallet

Approve or reject a PayOut Collection request (Positive Pay)

Overview

When a counterparty requests to direct debit a J.P. Morgan Wallet™ Virtual Transaction Account (VTA) using its Payment Routing Number (PRN), you can review the request and approve or deny it to ensure the transaction is authorized before funds are deducted from your Demand Deposit Account (DDA). This feature is called "Positive Pay."

The following steps outline the high-level process:

  1. A counterparty requests a direct debit of a VTA.
  2. Wallet receives the PayOut Collection request and sends you a notification.
  3. You approve or deny the request by sending your decision to the Wallet API.
  4. If you approve the request and the transaction succeeds, Wallet debits the funds from the VTA and transfers them to the counterparty's external account.

Positive Pay gives you more control over who can pull funds out of your DDA, helping reduce fraud and ensuring funds are debited with your explicit consent. This is in addition to any debit authority that you may have already given to the counterparty institution.

Use cases

The following are examples of use cases where you might use the Positive Pay feature:

  • Merchant services platform: A customer returns an item and requests a refund. The customer should be able to receive a refund by tapping their credit card on a terminal, direct debiting the merchant's VTA. The merchant can approve or deny the refund using the Positive Pay feature.
  • Video game company: A player sells an in-game item in exchange for in-game currency. The player should be able to direct debit the video game company's DDA to receive the in-game currency. The company can approve or deny the sale using the Positive Pay feature.
  • Marketplace platform: A merchant on a marketplace platform wants to cash out its funds early. The merchant should be able to direct debit their VTA and transfer the funds to their external account. The platform can approve or deny the request using the Positive Pay feature.

Key information

The following table describes important information about Positive Pay.

Key information for Positive Pay
Supported branches New York branch, or any of the Chase Affiliate Banks under the New York main office branch
Supported currencies USD
Supported payment rails US ACH
Cut-off time

Monday-Friday, 9:00 PM EST

Note: If you do not approve or deny the request by the cut-off time, Wallet sends the default decision in the block rule.

Returns, recalls, and reversals Completed PayOut Collection transactions are final after they are settled in the DDA. You can request a return, recall, or reversal using channels outside of Wallet such as eServe and J.P. Morgan Access.
Other notes
  • Your Wallet program must have PayOut Collection enabled.
  • Your Wallet program must define the billing DDA (which can be your Wallet DDA or a different J.P. Morgan DDA) and routing number (for example, the ABA) for Positive Pay.
  • You must configure a "block rule" for your Wallet program after enabling Positive Pay and defining the billing DDA and routing number. In the block rule, you configure the types of transactions that require approval as well as the default decision to make if no decision is sent by the cut-off time. The block rule becomes effective the next business day after you configure it.
  • The Transaction_Approval notification type must be enabled in your Wallet program.
  • PayOut Collection approval decisions are not listed in reports.
  • PayOut Collection approval decisions are not available in queries.
  • Even if a PayOut Collection transaction is guaranteed to ultimately fail—for example, if the VTA is closed or has insufficient funds—Wallet still sends you the request to approve or deny it. After you approve the request, Wallet performs validations that determine whether the transaction succeeds or fails.

Endpoints

Send an API request to one of the following endpoints to approve or reject a PayOut Collection request. For the specification, see the API reference.

Endpoints for Positive Pay request
HTTP method Request v2.xx v3.xx
POST Direct Debit transaction decision /payments/approval-decision Not supported

Request

Header parameters

Include the following parameters in the header.

Header parameters for Positive Pay endpoint
Parameter Required / Optional Description
programId Required Your Wallet program ID.

Body parameters

Include the following parameters in the request body.

Body parameters for Positive Pay endpoint
Parameter Required / Optional Description
decisionInformation.approvalIdentification Required ID of the approval request. Must match approvalIdentification in the PayOut Collection notification that you received. Maximum 36 characters.
decisionInformation.approvedAt Required Date and time when the PayOut Collection request was approved or rejected. Must be in local time with the time zone offset from UTC in the following format: YYYY-MM-DDThh:mm:ss.SSS±hhmm
decisionInformation.approverId Required ID of the individual making the decision to approve or reject the PayOut Collection request. Maximum 36 characters.
decisionInformation.approverName Required Name of the individual making the decision to approve or reject the PayOut Collection request. Must be 1-70 characters.
decisionInformation.decision Required Must be one of the following values:
  • ALLOW: Allow the PayOut Collection transaction to execute.
  • DENY: Reject the PayOut Collection request.
decisionInformation.verifiedAt Optional Date and time when the decision to approve or reject the PayOut Collection request was verified. Must be in local time with the time zone offset from UTC in the following format: YYYY-MM-DDThh:mm:ss.SSS±hhmm
decisionInformation.verifierId Optional ID of the individual verifying the decision to approve or reject the PayOut Collection request. Maximum 36 characters.
decisionInformation.verifierName Optional Name of the individual verifying the decision to approve or reject the PayOut Collection request. Maximum 70 characters.
groupHeader.creationDateTime Required Date and time when you created the request. Must be in local time with the time zone offset from UTC in the following format: YYYY-MM-DDThh:mm:ss.SSS±hhmm
groupHeader.messageIdentification Required Unique ID that you set to identify this request. Maximum 36 characters.

Response

If the request is successful, Wallet returns a synchronous response containing much of the information that you provided in the request. It also provides the following fields.

Fields in Positive Pay response
Field Description
decisionInfoAndStatus.errors Array of error objects. Present if status is FAILURE. Each error object contains the following fields:
  • errorCode: The error code.
  • errorMsg: The error description.
decisionInfoAndStatus.status Status of the approval decision. Always one of the following values:
  • FAILURE: Wallet or the payment rail rejected the decision. In this case, errors will be present.
  • SUCCESS: The payment rail accepted the decision.

Notification

When a counterparty initiates a PayOut Collection request, Wallet sends you a notification requesting you to approve or deny the request. The notification contains the following fields related to the request.

Positive Pay notification fields
Field Description
ApprovalRequestInformation.approvalIdentification ID of the approval request. In your decision request, set approvalIdentification to this value.
ApprovalRequestInformation.approvalRequestType The type of request for which approval is requested. Always PAYMENT.
ApprovalRequestInformation.paymentInformation.amount Amount and currency of the funds in the PayOut Collection request.
ApprovalRequestInformation.paymentInformation.cutOffDateTime If you do not approve or deny the request by this date and time, Wallet sends the default decision in your block rule.
ApprovalRequestInformation.paymentInformation.defaultDecision Default decision that Wallet sends if you do not approve or deny the request by the cut-off time.
ApprovalRequestInformation.paymentInformation.paymentIdentification ID of the PayOut Collection transaction.
ApprovalRequestInformation.paymentInformation.postingType The type of posting that will be listed on the DDA when the transaction is completed. Always DEBIT.
ApprovalRequestInformation.paymentInformation.requestedExecutionDate Requested execution date of the PayOut Collection transaction.
ApprovalRequestInformation.paymentInformation.settlementMethod Payment rail of the PayOut Collection transaction. Always ACH.

If you approve the PayOut Collection request and it is successful, Wallet sends a notification of the completed transaction.

See the following examples.

Examples

The following is an example of a notification that Wallet sends after a counterparty requests a PayOut Collection. Use the information in this notification to approve or deny the request.

Example notification: PayOut Collection decision request
{
    "groupHeader": {
        "messageIdentification": "4f8ea741-31ee-4650-9d7f-3b5d7ef0de77",
        "creationDateTime": "2026-02-27T14:05:03.854+0000"
    },
    "approvalRequestInformation": {
        "approvalIdentification": "4f8ea741-31ee-4650-9d7f-3b5d7ef0de77",
        "approvalRequestType": "PAYMENT",
        "paymentInformation": {
            "amount": {
                "amount": 0.03,
                "currency": "USD"
            },
            "postingType": "DEBIT",
            "requestedExecutionDate": "2026-02-27",
            "settlementMethod": "ACH",
            "cutOffDateTime": "2026-02-28T02:00:00.000+0000",
            "defaultDecision": "DENY"
        },
        "accountIdentification": {
            "identification": {
                "other": {
                    "identification": "XXXXXXXXXX"
                }
            }
        },
        "virtualAccountInformation": {
            "virtualAccountIdentification": "VTA-N77064063583730",
            "virtualAccountState": "OPEN",
            "paymentRoutingNumber": "XXXXXXXXXX",
            "postingRestrictions": [],
            "balanceInformation": {
                "balanceType": [
                    {
                        "typeCode": "ITAV",
                        "amount": "0.31"
                    },
                    {
                        "typeCode": "ITBD",
                        "amount": "0.42"
                    },
                    {
                        "typeCode": "XPCD",
                        "amount": "0.42"
                    }
                ],
                "balanceTimestamp": "2026-02-26T18:58:21.586+0000",
                "balanceLimits": {
                    "minimumBalance": "-99999999999.99",
                    "maximumBalance": "999999999999.99"
                }
            }
        },
        "settlementDetails": [
            {
                "key": "originId",
                "value": "1014942302"
            },
            {
                "key": "originName"
            },
            {
                "key": "originCompanyName",
                "value": "Some Name 16char"
            },
            {
                "key": "companyNickName"
            },
            {
                "key": "companyEntryDescription",
                "value": "1ST PAYMEN"
            },
            {
                "key": "originatorDfiIdAba",
                "value": "02100002"
            },
            {
                "key": "standardEntryClassCode",
                "value": "CCD"
            },
            {
                "key": "individualId",
                "value": "N77064072200511"
            },
            {
                "key": "individualName",
                "value": "Debtor Name"
            },
            {
                "key": "traceNumber",
                "value": "0000001"
            }
        ]
    }
}

The following is an example of a request body to approve the previous PayOut Collection request from the counterparty.

Example request: PayOut Collection approval
{
    "groupHeader": {
        "messageIdentification": "ct-N77064072211638-4994-44126985c2",
        "creationDateTime": "2026-02-27T12:00:38.029-0500"
    },
    "decisionInformation": {
        "approvalIdentification": "4f8ea741-31ee-4650-9d7f-3b5d7ef0de77",
        "decision": "ALLOW",
        "approverId": "RS",
        "approverName": "APPROVER NAME",
        "approvedAt": "2026-02-27T12:00:38.029-0500",
        "verifierId": "RS",
        "verifierName": "VERIFIER NAME",
        "verifiedAt": "2026-02-27T12:00:38.029-0500"
    }
}

The following is an example of a response that Wallet returns after you send the previous PayOut Collection approval request.

Example response: PayOut Collection approval
{
    "groupHeader": {
        "messageIdentification": "145c5101-fdf2-4a28-ab19-b7e18806d07c",
        "creationDateTime": "2026-02-27T17:00:49.904+0000"
    },
    "decisionInfoAndStatus": {
        "approvalIdentification": "4f8ea741-31ee-4650-9d7f-3b5d7ef0de77",
        "originalDecision": "ALLOW",
        "status": "SUCCESS",
        "errors": []
    }
}

The following is an example of a notification that Wallet sends after you approve the previous PayOut Collection request and the transaction completes successfully.

Example notification: PayOut Collection
{
    "groupHeader": {
        "messageIdentification": "08e3e525-3e1b-3e1b-3e1b-27314e773e1b",
        "creationDateTime": "2025-11-20T07:30:51.638+0000"
    },
    "originalGroupInformationAndStatus": {
        "originalMessageIdentification": "09dbe2cf-3e1b-4818-a32b-123452f1234",
        "originalMessageNameIdentification": "API-PAYOUTCOLLECTION",
        "originalNumberOfTransactions": 1
    },
    "originalPaymentInformationAndStatus": {
        "originalPaymentInformationIdentification": "3985353212345140TC",
        "transactionInformationAndStatus": [
            {
                "originalEndToEndIdentification": "3212345140TC",
                "transactionStatus": "ACSC",
                "acceptanceDateTime": "2025-11-20T07:30:50.049+0000",
                "accountServicerReference": "3212345140TC",
                "originalTransactionReference": {
                    "amount": {
                        "instructedAmount": {
                            "amount": 465.11,
                            "currency": "USD"
                        }
                    },
                    "requestedExecutionDate": "2025-11-20",
                    "paymentMethod": "BOOK",
                    "remittanceInformation": [
                        {
                            "remittanceInformationText": "ORIG CO NAME:XYZINC.         ORIG ID:9101234505 DESC DATE:251119 CO ENTRY DESCR:MONTHY BILSEC:WEB    TRACE#:041012312342140 EED:25112",
                            "remittanceSequenceNumber": "1"
                        },
                        {
                            "remittanceInformationText": "0   IND ID:12EQL1JABCD                  IND NAME:TOM  ARTY      VXR/1xxxxxxxxxxxx1234                                              ",
                            "remittanceSequenceNumber": "2"
                        },
                        {
                            "remittanceInformationText": "                  ACH TRANSACTION TRN: 3212345140TC",
                            "remittanceSequenceNumber": "3"
                        }
                    ],
                    "ultimateDebtor": {
                        "identification": {
                            "organisationIdentification": {
                                "other": [
                                    {
                                        "identification": "VTA-MERCHANT-001",
                                        "schemeName": {
                                            "proprietary": "virtualAccountIdentification"
                                        }
                                    }
                                ]
                            }
                        }
                    },
                    "debtorAccount": {
                        "identification": {
                            "other": {
                                "identification": "123XXXX938"
                            }
                        },
                        "currency": "USD"
                    },
                    "debtorAgent": {
                        "financialInstitutionIdentification": {
                            "bic": "CHASUS33XXX"
                        }
                    },
                    "creditorAgent": {
                        "financialInstitutionIdentification": {
                            "bic": "UNAVAILABLE"
                        }
                    },
                    "creditorAccount": {
                        "identification": {
                            "other": {
                                "identification": "UNAVAILABLE"
                            }
                        },
                        "currency": "USD"
                    },
                    "receiver": {
                        "name": "XYZ INC."
                    }
                }
            }
        ]
    }
}