Skip to main content
In-Store Payments

Capture a payment

Authorizing a payment is the first step of the payment request process. When you submit a payment request, J.P. Morgan sends an authorization request to the issuing bank to obtain approval for the payment. If approved, the second step of the payment request is to capture the funds from the cardholder’s account.

In this guide, learn about the following payment types and features:  

  • Sale with immediate capture (automatic)
  • Manual capture
    • Full capture
  • Partial capture

Sale with immediate capture

A sale is a combined authorization and capture in a single step that is done automatically and immediately by using the POST /payments endpoint.

  • Used when the final transaction amount is known at the point of interaction (for example, retail POS checkout).
  • Requires card-present metadata to support authorization and settlement.
  • Set captureMethod to NOW and isAmountFinal to true to authorize and capture a transaction.
  • Use device.capabilities and inPerson.entryMethod to indicate how the card was presented to the terminal
    • EMV_CONTACTLESS when a card or wallet is tapped.
    • EMV_CONTACT for when a chip card is inserted.

The following table shows the minimum required fields for a sale transaction:

Required fields for sale
Field name Description Comments
currency The currency for the amount fields as a 3-character ISO 4217 currency code.  
amount Total monetary value of the payment including all taxes and fees. Uses implied decimal places according to the ISO 4217 currency code. For example, EUR and GBP use two decimal places, so €10.00 is sent as 1000.
paymentMethodType.card.accountNumber The card or token number.  
captureMethod The value that determines whether the payment is captured immediately, after a delay (default is 120 minutes), or manually with a separate API call. If excluded, the payment is captured immediately. Set to NOW or don't send in the request, as it defaults to NOW when it's not provided.
isAmountFinal

Indicates if the amount provided is final.

  • true - final amount
  • false - amount may change.
Set to true.
merchant.merchantSoftware.companyName Company name of software integrated to this API.  
merchant.merchantSoftware.productName The name of the product used for marketing purposes from a consumer's perspective.  
merchant.softMerchant.phone Phone number of the merchant. PayFac required field.
merchant.softMerchant.address.line1 First line of the street address. PayFac required field.
merchant.softMerchant.address.line2 Second line of the address. PayFac required field.
merchant.softMerchant.address.city Name of the municipality. PayFac required field.
merchant.softMerchant.address.postalCode The portion of a party's address that is the encoded representation of a geographic area to facilitate mail delivery services. PayFac required field.
merchant.softMerchant.address.countryCode The country code of the address based on Alpha 3 ISO standards. PayFac required field.
merchant.softMerchant.address.addressTypeCode The classification given to the various addresses captured for a party, such as Doing Business As Address, Legal Entity Address, and Tax Address. PayFac required field.
subMerchantSupplementalData. merchantIdentification.subMerchantId The merchant's account as it appears on the accountholder's statement. PayFac required field.
subMerchantSupplementalData. merchantIdentification.serviceEntitlementNumber The unique number assigned to a merchant by a payment brand to process conveyed transactions. PayFac required field.
subMerchantSupplementalData. merchantIdentification.sellerIdentifier A unique identifier generated by the firm to identify the individual Transaction Division processing, using the American Express (AMEX) OptBlue program under the firm's Service Entitlement (SE) Number. PayFac required field.

HTTP Method: POST
Endpoint: /payments
Scenario: Sending a sale (immediate auth & capture) request

{
  "amount": 2900,
  "captureMethod": "NOW",
  "currency": "EUR",
  "initiatorType": "CARDHOLDER",
  "invoiceNumber": "939660",
  "subMerchantSupplementalData": {
    "merchantIdentification": {
      "subMerchantId": "39016507",
      "sellerIdentifier": "123456"
    }
  },
  "merchant": {
    "merchantSoftware": {
      "companyName": "JPMC",
      "productName": "CP1",
      "softwareId": "027C",
      "version": "20240600.1.6"
    },
    "softMerchant": {
      "name": "softmerchant",
      "address": {
        "countryCode": "FRA",
        "postalCode": "068912",
        "line1": "18 BAYARD AVE",
        "state": "FR",
        "city": "Paris"
      }
    },
    "merchantCategoryCode": "6540"
  },
  "merchantDefined": {
    "merchantDefinedData": "HjBerA1jsrYy3eMZCZhy2H"
  },
  "partialAuthorizationSupport": "NOT_SUPPORTED",
  "paymentMethodType": {
    "card": {
      "accountNumber": "4229989999000012=311220114161752",
      "accountNumberType": "TRACK"
    }
  },
  "pointOfInteraction": {
    "device": {
      "applicationInfo": {
        "deviceType": "IPHONE"
      },
      "attendance": "ATTENDED",
      "capabilities": [
        "EMV_CONTACTLESS"
      ],
      "deviceId": "0001",
      "location": "ON_PREMISE",
      "pinCapability": "PIN_ELIGIBLE",
      "terminalDeviceSerialNumber": "P10_C467D3003",
      "vendorId": "0181"
    },
    "inPerson": {
      "emvInformation": {
        "applicationId": "A0000000031010",
        "emvData": "5F2A020840820220008407A00000000310108A0200008F0192950500000000009A032406179C01009F02060000000002009F03060000000000009F0607A00000000310109F100706010A03A000009F1A0208409F1E0834363744333030339F21031453559F2608E42C02D382E2C07E9F2701809F3303E028C09F34033F00009F3501229F360201549F37041DF5C23D9F3901079F4005F000A0A0019F410200039F6E0420700000",
        "emvSequenceNumber": "0002",
        "panSequenceNumber": "01"
      },
      "entryMethod": "EMV_CONTACTLESS",
      "isCardholderPresent": true,
      "pinProcessing": {
        "pinBlock": null,
        "keySequenceNumber": null
      }
    }
  },
  "retailAddenda": {
    "taxAmount": 100,
    "isTaxable": true,
    "purchaseOrderNumber": "1234567877",
    "orderDate": "2019-09-10"
  },
  "cashBackAmount": null
}

Response:

{
  "transactionId": "3a7543c0-8e89-4733-ad83-c15bd6aecf44",
  "requestId": "91af8557-1be5-49b7-ae2f-f118ab54c93b",
  "transactionState": "CLOSED",
  "responseStatus": "SUCCESS",
  "responseCode": "APPROVED",
  "responseMessage": "Transaction approved by Issuer",
  "paymentMethodType": {
    "card": {
      "accountNumberType": "TRACK",
      "cardType": "VI",
      "cardTypeName": "VISA",
      "maskedAccountNumber": "422998XXXXXX0012",
      "accountUpdater": {
        "hostAccountUpdaterStatusCode": "I"
      },
      "networkResponse": {
        "last4CardNumber": "0000",
        "networkTransactionId": "123456789012345",
        "paymentAccountReference": "13456789012345678923452349237",
        "networkResponseCode": "00"
      },
      "authentication": {
        "authenticationValueResponse": {
          "code": "0"
        }
      },
      "paymentAccountReference": "13456789012345678923452349237"
    }
  },
  "captureMethod": "NOW",
  "captureTime": "2026-07-10T15:31:39.562Z",
  "initiatorType": "CARDHOLDER",
  "accountOnFile": "NOT_STORED",
  "isVoid": false,
  "transactionDate": "2026-07-10T15:31:39.562Z",
  "approvalCode": "347309",
  "hostMessage": "00",
  "isAmountFinal": true,
  "amount": 2900,
  "currency": "EUR",
  "remainingRefundableAmount": 2900,
  "remainingAuthAmount": 0,
  "merchant": {
    "merchantId": "109151579001",
    "merchantSoftware": {
      "companyName": "JPMC",
      "productName": "CP1",
      "version": "20240600.1.6",
      "softwareId": "027C"
    },
    "merchantCategoryCode": "6540",
    "softMerchant": {
      "name": "softmerchant",
      "address": {
        "line1": "18 BAYARD AVE",
        "city": "Paris",
        "state": "FR",
        "postalCode": "068912",
        "countryCode": "FRA"
      }
    }
  },
  "retailAddenda": {
    "purchaseOrderNumber": "1234567877",
    "orderDate": "2019-09-10",
    "taxAmount": 100,
    "isTaxable": true
  },
  "partialAuthorizationSupport": "NOT_SUPPORTED",
  "partialAuthorization": false,
  "paymentRequest": {
    "paymentRequestId": "3a7543c0-8e89-4733-ad83-c15bd6aecf44",
    "paymentRequestStatus": "CLOSED",
    "authorizations": [
      {
        "authorizationId": "3a7543c0-8e89-4733-ad83-c15bd6aecf44",
        "amount": 2900,
        "transactionStatusCode": "CAPTURED",
        "authorizationType": "INITIAL",
        "transactionTimestamp": "2026-07-10T15:31:39.562Z",
        "expirationTimestamp": "2031-03-16T00:00:00Z"
      }
    ],
    "captures": [
      {
        "captureId": "3a7543c0-8e89-4733-ad83-c15bd6aecf44",
        "amount": 2900,
        "transactionStatusCode": "CLOSED",
        "captureRemainingRefundableAmount": 2900,
        "referencedAuthorizationIdentifier": "3a7543c0-8e89-4733-ad83-c15bd6aecf44"
      }
    ]
  },
  "invoiceNumber": "939660",
  "subMerchantSupplementalData": {
    "merchantIdentification": {
      "subMerchantId": "39016507",
      "sellerIdentifier": "123456"
    }
  },
  "pointOfInteraction": {
    "device": {
      "capabilities": [
        "EMV_CONTACTLESS"
      ],
      "pinCapability": "PIN_ELIGIBLE",
      "location": "ON_PREMISE",
      "attendance": "ATTENDED",
      "applicationInfo": {
        "deviceType": "IPHONE"
      },
      "vendorId": "0181",
      "terminalDeviceSerialNumber": "P10_C467D3003",
      "deviceId": "0001"
    },
    "inPerson": {
      "isCardholderPresent": true,
      "entryMethod": "EMV_CONTACTLESS",
      "emvInformation": {
        "emvData": "5F2A020840820220008407A00000000310108A0200008F0192950500000000009A032406179C01009F02060000000002009F03060000000000009F0607A00000000310109F100706010A03A000009F1A0208409F1E0834363744333030339F21031453559F2608E42C02D382E2C07E9F2701809F3303E028C09F34033F00009F3501229F360201549F37041DF5C23D9F3901079F4005F000A0A0019F410200039F6E0420700000",
        "applicationId": "A0000000031010",
        "emvSequenceNumber": "0002"
      }
    }
  },
  "merchantDefined": {
    "merchantDefinedData": "HjBerA1jsrYy3eMZCZhy2H"
  },
  "emvKeysVersionNumber": "1773259838"
}

Manual capture

Manual capture is a dual message API call where first call authorizes the payment (POST /payments) and will not capture until you complete the second call. The second call is capture request with captureMethod set as MANUAL using the POST /payments/{id}/captures.

Full capture

Manually capture an authorized transaction by using the POST /payments/{id}/captures endpoint.

  • Use the transactionId from the authorization as the path parameter for {id}.
  • Set the captureMethod to NOW.
  • Set isAmountFinal to true.
  • Often performed after service fulfillment or checkout completion.
  • May include final amount adjustments (within network rules).

HTTP Method: POST
Endpoint: /payments/{id}/captures
Scenario: Sending a manual full capture request.

{
  "captureMethod": "NOW",
  "amount": 15000,
  "currency": "EUR",
  "isAmountFinal": true,
  "merchantOrderNumber": "ORD-PREAUTH-001",
  "merchant": {
    "merchantSoftware": {
      "companyName": "JPMC",
      "productName": "Application Name",
      "version": "1.235"
    },
    "softMerchant": {
      "name": "Sub Merchant Store",
      "phone": "331234567890",
      "address": {
        "line1": "123 Rue Exemple",
        "line2": "Batiment A",
        "city": "Paris",
        "postalCode": "75001",
        "countryCode": "FRA",
        "addressTypeCode": "DOING_BUSINESS_AS"
      }
    }
  },
  "subMerchantSupplementalData": {
    "merchantIdentification": {
      "subMerchantId": " SUB12345",
      "serviceEntitlementNumber": "SE-12345",
      "sellerIdentifier": "SELLER-001"
    }
  }
}

Response:

{
  "transactionId": "f245a015-481f-4af3-87e6-ef853fbf6eec",
  "requestId": "5f60799f-7cca-4982-81c4-8f1be02c86d3",
  "transactionState": "CLOSED",
  "responseStatus": "SUCCESS",
  "responseCode": "ACCEPTED",
  "responseMessage": "Transaction accepted",
  "paymentMethodType": {
    "card": {
      "accountNumberType": "SAFETECH_ENCRYPTION",
      "cardType": "VI",
      "cardTypeName": "VISA",
      "maskedAccountNumber": "400129XXXXXX1488",
      "networkResponse": {
        "last4CardNumber": "0000",
        "networkTransactionId": "123456789012345",
        "paymentAccountReference": "13456789012345678923452349237",
        "networkResponseCode": "00"
      },
      "authentication": {
        "authenticationValueResponse": {
          "code": "0"
        }
      },
      "paymentAccountReference": "13456789012345678923452349237"
    }
  },
  "captureMethod": "NOW",
  "captureTime": "2026-07-13T07:46:46.496Z",
  "initiatorType": "CARDHOLDER",
  "accountOnFile": "NOT_STORED",
  "isVoid": false,
  "transactionDate": "2026-07-13T07:46:46.495Z",
  "approvalCode": "958415",
  "hostMessage": "00",
  "isAmountFinal": true,
  "amount": 2200,
  "currency": "EUR",
  "remainingRefundableAmount": 2200,
  "remainingAuthAmount": 0,
  "totalAuthorizedAmount": 2200,
  "merchant": {
    "merchantId": "109151579001",
    "merchantSoftware": {
      "companyName": "JPMC",
      "productName": "CP1",
      "version": "20240600.1.6",
      "softwareId": "027C"
    },
    "merchantCategoryCode": "4511",
    "softMerchant": {
      "name": "softmerchant",
      "address": {
        "line1": "18 BAYARD AVE",
        "city": "Paris",
        "state": "FR",
        "postalCode": "068912",
        "countryCode": "FRA"
      }
    }
  },
  "partialAuthorizationSupport": "SUPPORTED",
  "partialAuthorization": false,
  "paymentRequest": {
    "paymentRequestId": "f245a015-481f-4af3-87e6-ef853fbf6eec",
    "paymentRequestStatus": "CLOSED",
    "authorizations": [
      {
        "authorizationId": "f245a015-481f-4af3-87e6-ef853fbf6eec",
        "amount": 2200,
        "transactionStatusCode": "CAPTURED",
        "authorizationType": "INITIAL",
        "transactionTimestamp": "2026-07-13T07:46:29.723Z",
        "expirationTimestamp": "2031-03-16T00:00:00Z"
      }
    ],
    "captures": [
      {
        "captureId": "f245a015-481f-4af3-87e6-ef853fbf6eec",
        "amount": 2200,
        "transactionStatusCode": "CLOSED",
        "captureRemainingRefundableAmount": 2200,
        "referencedAuthorizationIdentifier": "f245a015-481f-4af3-87e6-ef853fbf6eec"
      }
    ]
  },
  "invoiceNumber": "939680",
  "subMerchantSupplementalData": {
    "merchantIdentification": {
      "subMerchantId": "39016507",
      "sellerIdentifier": "123456"
    }
  },
  "pointOfInteraction": {
    "device": {
      "capabilities": [
        "EMV_CONTACT"
      ],
      "pinCapability": "NO_PIN",
      "location": "ON_PREMISE",
      "attendance": "ATTENDED",
      "applicationInfo": {
        "deviceType": "IPHONE"
      },
      "vendorId": "0181",
      "terminalDeviceSerialNumber": "P10_C467D3003",
      "deviceId": "0001"
    },
    "inPerson": {
      "isCardholderPresent": true,
      "entryMethod": "EMV_CONTACT"
    }
  },
  "merchantDefined": {
    "merchantDefinedData": "HjBerA1jsrYy3eMZCZhy2H"
  }
}

Partial capture

Captures only a portion of the authorized amount, while the remaining authorization hold is released. Partially capture an authorized transaction by using the POST /payments/{id}/captures endpoint.

  • Use the transactionId from the authorization as the path parameter for {id}.
  • Set the captureMethod to NOW.
  • Specify the capture amount.
  • Set isAmountFinal to true.

HTTP Method: POST
Endpoint: /payments/{id}/captures
Scenario: Sending a manual partial capture request.

{
  "captureMethod": "NOW",
  "amount": 2500,
  "currency": "EUR",
  "isAmountFinal": true,
  "merchantOrderNumber": "ORD-PREAUTH-001",
  "retailAddenda": {
    "orderDate": "2026-06-15",
    "merchantPurchaseDescription": "Partial capture - 1 of 2 items shipped"
  },
  "statementDescriptor": "STORE*PARTIAL SHIP",
  "merchant": {
    "merchantSoftware": {
      "companyName": "JPMC",
      "productName": "Application Name",
      "version": "1.235"
    },
    "softMerchant": {
      "name": "Sub Merchant Store",
      "phone": "491234567890",
      "address": {
        "line1": "Hauptstraße 123",
        "line2": "Gebäude A",
        "city": "Berlin",
        "postalCode": "10115",
        "countryCode": "DEU",
        "addressTypeCode": "DOING_BUSINESS_AS"
      }
    }
  },
  "subMerchantSupplementalData": {
    "merchantIdentification": {
      "subMerchantId": "SUB12345",
      "serviceEntitlementNumber": "SE-12345",
      "sellerIdentifier": "SELLER-001"
    }
  }
}

Response:

{
  "transactionId": "67eb3ba0-8fd6-4c87-a9fb-8d8cf56eca96",
  "requestId": "60a72efb-7929-4029-a5d8-85ac7a6cc79a",
  "transactionState": "CLOSED",
  "responseStatus": "SUCCESS",
  "responseCode": "ACCEPTED",
  "responseMessage": "Transaction accepted",
  "paymentMethodType": {
    "card": {
      "accountNumberType": "TRACK",
      "cardType": "VI",
      "cardTypeName": "VISA",
      "maskedAccountNumber": "422998XXXXXX0012",
      "networkResponse": {
        "last4CardNumber": "0000",
        "networkTransactionId": "123456789012345",
        "paymentAccountReference": "13456789012345678923452349237",
        "networkResponseCode": "00"
      },
      "authentication": {
        "authenticationValueResponse": {
          "code": "0"
        }
      },
      "paymentAccountReference": "13456789012345678923452349237"
    }
  },
  "captureMethod": "NOW",
  "captureTime": "2026-07-14T06:01:41.236Z",
  "initiatorType": "CARDHOLDER",
  "accountOnFile": "NOT_STORED",
  "isVoid": false,
  "transactionDate": "2026-07-14T06:01:41.228Z",
  "approvalCode": "722630",
  "hostMessage": "00",
  "isAmountFinal": true,
  "amount": 2500,
  "currency": "EUR",
  "remainingRefundableAmount": 2500,
  "remainingAuthAmount": 0,
  "totalAuthorizedAmount": 5500,
  "merchantOrderNumber": "ORD-PREAUTH-001",
  "statementDescriptor": "STORE*PARTIAL SHIP",
  "merchant": {
    "merchantId": "109151579001",
    "merchantSoftware": {
      "companyName": "JPMC",
      "productName": "CP1",
      "version": "20240600.1.6",
      "softwareId": "027C"
    },
    "merchantCategoryCode": "6540",
    "softMerchant": {
      "name": "Sub Merchant Store",
      "phone": "491234567890",
      "address": {
        "line1": "Hauptstraße 123",
        "line2": "Gebäude A",
        "city": "Berlin",
        "postalCode": "10115",
        "countryCode": "DEU",
        "addressTypeCode": "DOING_BUSINESS_AS"
      }
    }
  },
  "retailAddenda": {
    "purchaseOrderNumber": "1234567877",
    "orderDate": "2026-06-15",
    "taxAmount": 100,
    "isTaxable": true
  },
  "partialAuthorizationSupport": "NOT_SUPPORTED",
  "partialAuthorization": false,
  "paymentRequest": {
    "paymentRequestId": "67eb3ba0-8fd6-4c87-a9fb-8d8cf56eca96",
    "paymentRequestStatus": "CLOSED",
    "authorizations": [
      {
        "authorizationId": "67eb3ba0-8fd6-4c87-a9fb-8d8cf56eca96",
        "amount": 5500,
        "transactionStatusCode": "CAPTURED",
        "authorizationType": "INITIAL",
        "transactionTimestamp": "2026-07-14T06:01:19.180Z",
        "expirationTimestamp": "2031-03-16T00:00:00Z"
      }
    ],
    "captures": [
      {
        "captureId": "67eb3ba0-8fd6-4c87-a9fb-8d8cf56eca96",
        "amount": 2500,
        "transactionStatusCode": "CLOSED",
        "captureRemainingRefundableAmount": 2500,
        "referencedAuthorizationIdentifier": "67eb3ba0-8fd6-4c87-a9fb-8d8cf56eca96"
      }
    ]
  },
  "invoiceNumber": "939660",
  "subMerchantSupplementalData": {
    "merchantIdentification": {
      "subMerchantId": "SUB12345",
      "serviceEntitlementNumber": "SE-12345",
      "sellerIdentifier": "SELLER-001"
    }
  },
  "pointOfInteraction": {
    "device": {
      "capabilities": [
        "EMV_CONTACTLESS"
      ],
      "pinCapability": "PIN_ELIGIBLE",
      "location": "ON_PREMISE",
      "attendance": "ATTENDED",
      "applicationInfo": {
        "deviceType": "IPHONE"
      },
      "vendorId": "0181",
      "terminalDeviceSerialNumber": "P10_C467D3003",
      "deviceId": "0001"
    },
    "inPerson": {
      "isCardholderPresent": true,
      "entryMethod": "EMV_CONTACT",
      "emvInformation": {
        "emvData": "5F2A020840820220008407A00000000310108A0200008F0192950500000000009A032406179C01009F02060000000002009F03060000000000009F0607A00000000310109F100706010A03A000009F1A0208409F1E0834363744333030339F21031453559F2608E42C02D382E2C07E9F2701809F3303E028C09F34033F00009F3501229F360201549F37041DF5C23D9F3901079F4005F000A0A0019F410200039F6E0420700000",
        "applicationId": "A0000000031010",
        "emvSequenceNumber": "0002"
      }
    }
  },
  "merchantDefined": {
    "merchantDefinedData": "HjBerA1jsrYy3eMZCZhy2H"
  }
}

Payment fields 

Is this page helpful?