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
captureMethodto NOW andisAmountFinalto true to authorize and capture a transaction. - Use
device.capabilitiesandinPerson.entryMethodto indicate how the card was presented to the terminalEMV_CONTACTLESSwhen a card or wallet is tapped.EMV_CONTACTfor when a chip card is inserted.
The following table shows the minimum required fields for a sale transaction:
| 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.
|
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
transactionIdfrom the authorization as the path parameter for{id}. - Set the
captureMethodto NOW. - Set
isAmountFinalto 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
transactionIdfrom the authorization as the path parameter for{id}. - Set the
captureMethodto NOW. - Specify the capture amount.
- Set
isAmountFinalto 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"
}
}