Authorize 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:
- Pre-authorizattion
- Partial authorization support
- Retrieve authorization details
Before you begin
- Determine your payment use cases including how you need to support capture and if you need to support partial authorizations.
- Understand the minimum requirements for a simple payment.
Pre-authorization
Pre-authorize funds at the Point of Sale (POS) and obtain approval from issuing bank by using the POST /payments endpoint.
- Typically used in scenarios where the final amount is not yet known (hospitality, fuel, rentals).
- Requires card-present indicators (for example, entry mode and device/terminal details) in addition to standard eCommerce fields.
- The authorization hold must later be followed by a completion/capture or reversal action within network-defined timelines.
- The authorization expires on the date and time provided in the paymentRequest.authorizations.expirationTimestamp
- Set
captureMethodto MANUAL andisAmountFinalto false for pre-authorization transactions.
The following table shows the minimum required fields for a pre-auth transaction request:
| 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 MANUAL for pre-auth. |
isAmountFinal |
Indicates if the amount provided is final.
|
|
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 pre-authorization request
{
"amount": 2900,
"captureMethod": "MANUAL",
"currency": "EUR",
"initiatorType": "CARDHOLDER",
"invoiceNumber": "939660",
"isAmountFinal": false,
"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_CONTACT"
],
"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_CONTACT",
"isCardholderPresent": true,
"pinProcessing": {
"pinBlock": null,
"keySequenceNumber": null
}
}
},
"retailAddenda": {
"taxAmount": 100,
"isTaxable": true,
"purchaseOrderNumber": "1234567877",
"orderDate": "2019-09-10"
},
"cashBackAmount": null
}Response:
{
"transactionId": "a0fd7392-bb9a-440b-96ac-2767dd9d161f",
"requestId": "491f9f9e-ac41-4b8e-b418-1a8c48419845",
"transactionState": "AUTHORIZED",
"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": "MANUAL",
"initiatorType": "CARDHOLDER",
"accountOnFile": "NOT_STORED",
"isVoid": false,
"transactionDate": "2026-07-10T16:10:14.981Z",
"approvalCode": "208802",
"hostMessage": "00",
"isAmountFinal": false,
"amount": 2900,
"currency": "EUR",
"remainingAuthAmount": 2900,
"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": "a0fd7392-bb9a-440b-96ac-2767dd9d161f",
"paymentRequestStatus": "PENDING",
"authorizations": [
{
"authorizationId": "a0fd7392-bb9a-440b-96ac-2767dd9d161f",
"amount": 2900,
"transactionStatusCode": "AUTHORIZED",
"authorizationType": "INITIAL",
"transactionTimestamp": "2026-07-10T16:10:14.981Z",
"expirationTimestamp": "2031-03-16T00:00:00Z"
}
]
},
"invoiceNumber": "939660",
"subMerchantSupplementalData": {
"merchantIdentification": {
"subMerchantId": "39016507",
"sellerIdentifier": "123456"
}
},
"pointOfInteraction": {
"device": {
"capabilities": [
"EMV_CONTACT"
],
"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"
},
"emvKeysVersionNumber": "1773259838"
}Partial authorization
Partially authorize payments to receive approval for a portion of the original amount when the full amount cannot be approved by using the POST /payments endpoint.
- Often used in debit or prepaid use cases where available balance is insufficient.
- Requires additional card-present-specific fields for reconciling multiple tenders against a single purchase.
- Set
partialAuthorizationSupportto SUPPORTED to enable partial authorization.
The following table shows the minimum required fields for this 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. | |
partialAuthorizationSupport |
Indicates your ability to support a partially approved payment from the issuer. | Set to SUPPORTED for partial authorization. |
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 partial authorization request
{
"amount": 5300,
"captureMethod": "MANUAL",
"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": "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_CONTACT",
"isCardholderPresent": true,
"pinProcessing": {
"pinBlock": null,
"keySequenceNumber": null
}
}
},
"retailAddenda": {
"taxAmount": 100,
"isTaxable": true,
"purchaseOrderNumber": "1234567877",
"orderDate": "2019-09-10"
},
"cashBackAmount": null
}Response:
{
"transactionId": "d6953735-2232-412f-be14-f732cd3cba57",
"requestId": "6fb5794b-bba4-4b2b-85ee-21dcd20bce6c",
"transactionState": "AUTHORIZED",
"responseStatus": "SUCCESS",
"responseCode": "PARTIAL_APPROVAL",
"responseMessage": "Transaction partially approved by Issuer",
"paymentMethodType": {
"card": {
"accountNumberType": "TRACK",
"cardType": "VI",
"cardTypeName": "VISA",
"maskedAccountNumber": "422998XXXXXX0012",
"accountUpdater": {
"hostAccountUpdaterStatusCode": "I"
},
"networkResponse": {
"last4CardNumber": "0000",
"networkTransactionId": "123456789012345",
"paymentAccountReference": "13456789012345678923452349237",
"networkResponseCode": "10"
},
"authentication": {
"authenticationValueResponse": {
"code": "0"
}
},
"paymentAccountReference": "13456789012345678923452349237"
}
},
"captureMethod": "MANUAL",
"initiatorType": "CARDHOLDER",
"accountOnFile": "NOT_STORED",
"isVoid": false,
"transactionDate": "2026-07-13T12:48:00.470Z",
"approvalCode": "353133",
"hostMessage": "10",
"isAmountFinal": true,
"amount": 1000,
"currency": "EUR",
"remainingAuthAmount": 1000,
"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",
"requestedAuthorizationAmount": 5300,
"partialAuthorization": true,
"paymentRequest": {
"paymentRequestId": "d6953735-2232-412f-be14-f732cd3cba57",
"paymentRequestStatus": "PENDING",
"authorizations": [
{
"authorizationId": "d6953735-2232-412f-be14-f732cd3cba57",
"amount": 1000,
"transactionStatusCode": "AUTHORIZED",
"authorizationType": "INITIAL",
"transactionTimestamp": "2026-07-13T12:48:00.470Z",
"expirationTimestamp": "2026-07-20T12:48:00.470Z"
}
]
},
"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_CONTACT",
"emvInformation": {
"emvData": "5F2A020840820220008407A00000000310108A0200008F0192950500000000009A032406179C01009F02060000000002009F03060000000000009F0607A00000000310109F100706010A03A000009F1A0208409F1E0834363744333030339F21031453559F2608E42C02D382E2C07E9F2701809F3303E028C09F34033F00009F3501229F360201549F37041DF5C23D9F3901079F4005F000A0A0019F410200039F6E0420700000",
"applicationId": "A0000000031010",
"emvSequenceNumber": "0002"
}
}
},
"merchantDefined": {
"merchantDefinedData": "HjBerA1jsrYy3eMZCZhy2H"
},
"emvKeysVersionNumber": "1773259838"
}Retrieve authorization details
After making an authorization request, you can review the authorization details. Complete the following steps to retrieve authorization details:
- Send a
GETrequest to the/paymentsendpoint one of two ways:- Use the
requestIdreturned in the original response as a query parameter. - Use the
transactionIdreturned in the original response as a path parameter.
- Use the