# JPMC-PDP Documentation from https://developer.payments.jpmorgan.com # Online Payments ## Accept and manage online payments with our direct Online Payments API integration: - Process card, wallet, local, and alternative methods of payment - Store or set up recurring payments - Protect payment information with encryption and fraud tools - Easily manage consumer profiles ## Availability Online Payments API is currently available in: - Australia - Canada - Europe - United Kingdom - United States ## How Online Payments works ![Workflow diagram of Online Payments API process](/api/download/en/docs/commerce/online-payments/capabilities/online-payments/overview-cfs/online-payments-workflow.png?type=image) Here is how the Online Payments API works: 1. We receive your Online Payments API requests and, depending on the method of payment and type of request, take action. - Global card requests: We interact with the global payment networks and provide you with immediate, real-time results. - Local payment methods: We provide you with immediate confirmation of interaction with the local payment networks. - Financial institution direct debits: We provide you with immediate confirmation of interaction with the financial institutions. 2. We record and store all activity/events for notifications and reporting purposes. 3. You determine the events you want to receive notifications for, when they occur. Refer to the [Notifications API](/docs/commerce/optimization-protection/capabilities/notifications/index) for more details. 1. We send you webhook notifications advising you of the activity. 2. The notifications contain identifiers you use to retrieve event-specific details. ## Benefits of Online Payments ### 3-D Secure Reduce fraud risk through cardholder identification verification. [Learn more](https://developer.payments.jpmorgan.com/docs/commerce/online-payments/capabilities/online-payments/payment-enhancements/3d-secure) ### Consumer Profile Management Create, update, and store customer profiles. [Learn more](https://developer.payments.jpmorgan.com/docs/commerce/online-payments/capabilities/online-payments/payment-enhancements/profile-management) ### Direct Pay Enhance Visa and Mastercard transactions with real-time payment processing. [Learn more](https://developer.payments.jpmorgan.com/docs/commerce/online-payments/capabilities/online-payments/payment-enhancements/direct-pay) ### Encryption Protect sensitive cardholder information. [Learn more](https://developer.payments.jpmorgan.com/docs/commerce/online-payments/capabilities/online-payments/payment-enhancements/encryption) ### Fraud Prevention Prevent fraudulent transactions through fraud analysis requests. [Learn more](https://developer.payments.jpmorgan.com/docs/commerce/online-payments/capabilities/online-payments/payment-enhancements/fraud-prevention) ### Merchant Selectable Responses Streamline authorization reversals for fraudulent transaction intervention. [Learn more](https://developer.payments.jpmorgan.com/docs/commerce/online-payments/capabilities/online-payments/payment-enhancements/merchant-selectable-avscvv-responses) ### Real-time account updater Update Visa card account information on the spot. [Learn more](https://developer.payments.jpmorgan.com/docs/commerce/online-payments/capabilities/online-payments/payment-enhancements/account-updater) ### Recurring payments Easily set up recurring payments. [Learn more](https://developer.payments.jpmorgan.com/docs/commerce/online-payments/capabilities/online-payments/payment-enhancements/recurring-payments) ### Stored Payments Enable cardholder-initiated stored payments. [Learn more](https://developer.payments.jpmorgan.com/docs/commerce/online-payments/capabilities/online-payments/payment-enhancements/stored-payments) ### Tokenization Secure card data in transit with tokenization solutions. [Learn more](https://developer.payments.jpmorgan.com/docs/commerce/online-payments/capabilities/online-payments/payment-enhancements/tokenization) ## API functionality ### API identifiers The following key identifiers are essential to payment processing using the Online Payments API. They are used to uniquely identify transaction details, link multiple captures to a single authorization, and retrieve payment transaction details. > For Canada, EU, UK, and US implementations, we support US English characters. The Online Payments API converts unsupported characters to ASCII. > **API identifiers** | Value | Description | Assigned by | | --- | --- | --- | | platform-id | Identifies the platform used to facilitate the transaction request. | Online Payments | | transactionId | Identifies a payment from, or a refund to, a consumer. As there may be multiple requests to complete a transaction, a unique transactionId is assigned by J.P. Morgan and provided for each response. Use this ID to identify and perform subsequent actions, such as capturing, updating, or voiding the transaction. | Online Payments | | authorizationId | Identifies an authorization request. A payment request may have multiple authorization IDs, as in the case of a reauthorization of an expired authorization. | Online Payments | | captureId | Identifies a capture request. A payment request may have multiple capture IDs for the same authorization, as in the case of separate captures for a split shipment order. | Online Payments | | refundId | Identifies a refund request. A payment request may have multiple refund IDs associated with separate refund requests for the same payment request. | Online Payments | | paymentRequestId | A paymentRequestId (generated on the original authorization) identifies the intent to collect a payment. A payment request may have multiple transactions associated because its lifecycle consists of several phases. These phases include various authorizations, captures, and, potentially, multiple refunds. | Online Payments | | requestId | Each message sent via an API is a request and should include a unique requestId to detect duplicate requests. In the event your system does not receive a response due to a timeout or an exception case, you can attempt to retry the request. To do so, re-send the message using the same requestId, as this allows us to ensure the message is not processed multiple times. If the original request is processed, the original response message content is returned. | Merchant | | merchantOrderNumber | A merchantOrderNumber identifies an order, invoice, or ticket within your system. This value is forwarded to other participants during payment processing. For Canada, EU, U.K., and U.S. implementations, the following applies: - Optional submission: merchantOrderNumber is optional. If omitted, a unique merchant order number is automatically generated during the authorization request and returned in the response. - Consistency across payment requests: To maintain linkage between all payment-related activities for a specific order, use the same merchantOrderNumber in all subsequent payment requests. The value provided during authorization must remain unchanged in later requests. For example, the merchant order number used during authorization cannot be changed in the capture request. - Length restrictions: The maximum length for merchantOrderNumber is 40 characters. For transactions in the U.S., Canada, and the EU, if the value exceeds 22 characters, it is truncated from the left. Only the last 22 characters display in reporting. | Merchant | | networkTransactionId | Unique transaction ID assigned by the payment network. | Payment brands | ### Callbacks/notifications Understanding webhooks and callbacks is essential for the Online Payments API. For more information, refer to the [Notifications API](/docs/commerce/optimization-protection/capabilities/notifications/index). ### Duplicate logic J.P. Morgan performs a duplicate check on every transaction. A duplicate request is identified when J.P. Morgan receives a non-unique `requestId` and changes were made to any of the following fields: - amount - accountNumber - accountHolderName - verificationValue - billingAddressLine1 - billingAddressLine2 - billingAddressCity - billingAddressState - billingAddressCountry - billingAddressPostalCode If changes were made to any of the previously listed fields, a **409** response code is returned, along with the following response: ```json { "responseStatus": "ERROR" "responseCode": "DUPLICATE" "responseMessage": "Duplicate Transaction" } ``` If the previously listed fields are unchanged but the same `requestId` is used, a **200** response code is returned along with the following response: ```json information":{ "code": "duplicateRequest", "message": "This is a duplicate request." } ``` ## Related [Payment methods](/docs/commerce/online-payments/capabilities/online-payments/payment-methods/index) [Payment enhancements](/docs/commerce/online-payments/capabilities/online-payments/payment-enhancements/index) [Verify a payment](/docs/commerce/online-payments/capabilities/online-payments/how-to/verify-payment) [Authorize and capture a payment](/docs/commerce/online-payments/capabilities/online-payments/how-to/auth-and-capture-payment) [Refund a payment](/docs/commerce/online-payments/capabilities/online-payments/how-to/refund-payment) [Update a payment](/docs/commerce/online-payments/capabilities/online-payments/how-to/update-a-payment) [Obtain a fraud score](/docs/commerce/online-payments/capabilities/online-payments/how-to/fraud-scores)