Elastic Path Payments Powered by Stripe
The Elastic Path Payments Powered by Stripe integration supports the following payment methods:
- authorize
- capture
- confirm
- purchase
- refund
You can contact Elastic Path sales or customer success team to get more information about Elastic Path Payments powered by Stripe and to check whether it will work for you.
Authorization or Purchase - POST Pay using Token or Source
https://useast.api.elasticpath.com/v2/orders/:orderId/payments
Parameters
Path parameters
| Name | Required | Type | Description | 
|---|---|---|---|
| orderId | Required | string | The universally unique identifier of the order that you want to pay for. | 
Headers
| Name | Required | Type | Description | 
|---|---|---|---|
| Authorization | Required | string | The Bearer token required to get access to the API. | 
Body
| Name | Required | Type | Description | 
|---|---|---|---|
| options.idempotency_key | Optional | string | Provides the option to send a Stripe Idempotency Key. | 
| options.receipt_email | Optional | string | Provides the email address to which you want to send the Stripe receipts for the transactions within the store. This feature is available only in the live mode. | 
| payment | Required | string | Specifies the Stripe token or source. | 
| options.customer | Optional | string | Specifies the Stripe customer ID. This is required if you want to send a source. | 
| method | Required | string | Specifies the transaction method, such as purchaseorauthorize. | 
| amount | Optional | integer | Specifies the amount to be paid for the transaction. | 
| gateway | Required | string | Specifies the gateway. You must use elastic_path_payments_stripeas the required gateway. | 
Request examples
We recommend that you use the payment method or source with Stripe payments. For more information about generating a payment method on the client-side, see the Stripe Elements documentation.
When you pass source instead of a token, ensure that you include the Stripe customer ID in the request.
If you are using Stripe API, pass your Stripe-Account ID in the header to make the payment. For example, see the following request:
curl https://api.stripe.com/v1/payment_methods \
  -u pk_live_EP_STRIPE_PUBLISHABLE_KEY: \
-H Stripe-Account:acct_xxxxxxx\
  -d type=card \
  -d "card[number]"=xxxxxxxxxxxx \
  -d "card[exp_month]"=6 \
  -d "card[exp_year]"=2023 \
  -d "card[cvc]"=314
Curl
curl -X POST https://useast.api.elasticpath.com/v2/orders/:orderId/payments \
     -H "Authorization: Bearer XXXX" \
     -H "Content-Type: application/json" \
     -d $ {
        "data": {
          "gateway": "elastic_path_payments_stripe",
          "method": "purchase",
          "amount": 5499,
          "payment": "pm_card_threeDSecureRequired",
          "options": {
            "receipt_email": "john@example.com"
          }
        }
      }
JavaScript SDK
const MoltinGateway = require("@moltin/sdk").gateway;
const Moltin = MoltinGateway({
    client_id: "X",
});
const id = "XXXX";
const payment = {
    gateway: "elastic_path_payments_stripe",
    method: "purchase",
    payment: "pm_card_threeDSecureRequired",
};
Moltin.Orders.Payment(id, payment).then(() => {
    // Do something
});
Response example
201 Created
The x values in the "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" are replaced with the returned values.
{
    "data": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "transaction",
        "reference": "pi_xxxxxxxxxxxxx",
        "gateway": "elastic_path_payments_stripe",
        "amount": 5499,
        "currency": "USD",
        "transaction-type": "purchase",
        "transaction_type": "purchase",
        "status": "pending",
        "relationships": {
            "order": {
                "data": {
                    "type": "order",
                    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
                }
            }
        },
        "meta": {
            "display_price": {
                "amount": 5499,
                "currency": "USD",
                "formatted": "$54.99"
            },
            "display_refunded_amount": {
                "total": {
                    "amount": 0,
                    "currency": "USD",
                    "formatted": "$0.00"
                }
            },
            "created_at": "2019-08-28T10:40:21.925Z",
            "timestamps": {
                "created_at": "2019-08-28T10:40:21Z",
                "updated_at": "2019-08-28T10:40:23Z"
            }
        },
        "client_parameters": {
            "token": "pi_xxxxxxxxxxxxxxxx",
            "secret": "pi_xxxxxxxxxxxxxx_secret_xxxxxxxxxxxxxx"
        }
    }
}
Authorization or Purchase - POST Pay using Stripe Payment Element
https://useast.api.elasticpath.com/v2/orders/:orderId/payments
Parameters
Path parameters
| Name | Required | Type | Description | 
|---|---|---|---|
| orderId | Required | string | The universally unique identifier of the order that you want to pay for. | 
Headers
| Name | Required | Type | Description | 
|---|---|---|---|
| Authorization | Required | string | The Bearer token required to get access to the API. | 
Body
If both payment_method_types and  automatic_payment_methods are not enabled, the Stripe default, which is card, will be used. Attempting to set both payment_method_types and automatic_payment_methods to true will result in an error as Stripe doesn't allow both options to be enabled at the same time.
| Name | Required | Type | Description | 
|---|---|---|---|
| gateway | Required | string | Specifies the gateway. You must use elastic_path_payments_stripeas the required gateway. | 
| method | Required | string | Specifies the transaction method, such as purchaseorauthorize. | 
| options.receipt_email | Optional | string | Provides the email address to which you want to send the Stripe receipts for the transactions within the store. This feature is available only in the live mode. | 
| options.automatic_payment_methods.enabled | Optional | boolean | When set to true, it displays all enabled payment methods from the Stripe dashboard. When set tofalse, the Stripe default, which iscard, will be used. | 
| payment_method_types | Required | string | Specifies the Stripe payment method types configured for the store. See Stripe Documentation. | 
Request examples
Curl
curl -X POST https://useast.api.elasticpath.com/v2/orders/:orderId/payments \
     -H "Authorization: Bearer XXXX" \
     -d $ {
       "data": {
         "gateway": "elastic_path_payments_stripe",
         "method": "purchase",
         "options": {
           "receipt_email": "john@example.com"
           "automatic_payment_methods": {
                "enabled": true
        }
    }
  }
}
JavaScript SDK
const MoltinGateway = require('@moltin/sdk').gateway
const Moltin = MoltinGateway({
  client_id: 'X'
})
const id = 'XXXX'
const payment = {
  gateway: 'elastic_path_payments_stripe',
  method: 'purchase',
  options: {
    receipt_email: "john@example.com"
  },
  payment_method_types: ["link", "card"],
}
Moltin.Orders.Payment(id, payment).then(() => {
  // Do something
})
Response example
201 Created
{
    "data": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "transaction",
        "reference": "pi_xxxxxxxxxxxxxx",
        "gateway": "elastic_path_payments_stripe",
        "amount": 20000,
        "refunded_amount": 0,
        "currency": "USD",
        "transaction_type": "purchase-setup",
        "status": "pending",
        "relationships": {
            "order": {
                "data": {
                    "type": "order",
                    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
                }
            }
        },
        "meta": {
            "display_price": {
                "amount": 20000,
                "currency": "USD",
                "formatted": "$200.00"
            },
            "display_refunded_amount": {
                "total": {
                    "amount": 0,
                    "currency": "USD",
                    "formatted": "$0.00"
                }
            },
            "timestamps": {
                "created_at": "2022-07-18T22:16:11Z",
                "updated_at": "2022-07-18T22:16:32Z"
            }
        },
        "client_parameters": {
            "token": "pi_xxxxxxxxxxxxxx",
            "secret": "pi_xxxxxxxxxxxxxx_secret_xxxxxxxxxxxxxx"
        },
        "payment_intent": {
            "amount": 20000,
            "amount_capturable": 0,
            "amount_details": {
                "tip": {}
            },
            "amount_received": 0,
            "application": {
                "deleted": false,
                "id": "ca_KH5gI4U1QcTNYo08rUpmVAGds0YBp0ZG",
                "name": "",
                "object": ""
            },
            "application_fee_amount": null,
            "automatic_payment_methods": {
                "enabled": true
            },
            "canceled_at": null,
            "cancellation_reason": null,
            "capture_method": "manual",
            "charges": {
                "data": [],
                "has_more": false,
                "object": "list",
                "total_count": 0,
                "url": "/v1/charges?payment_intent=pi_xxxxxxxxxxxxxx"
            },
            "client_secret": "pi_xxxxxxxxxxxxxx_secret_xxxxxxxxxxxxxx",
            "confirmation_method": "automatic",
            "created": 1658182571,
            "currency": "usd",
            "customer": null,
            "description": null,
            "id": "pi_xxxxxxxxxxxxxx",
            "invoice": null,
            "last_payment_error": null,
            "livemode": false,
            "metadata": {
                "email": "andy@example.com",
                "ip_address": "##.###.###.###",
                "order_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
            },
            "next_action": null,
            "object": "payment_intent",
            "on_behalf_of": null,
            "payment_method": null,
            "payment_method_options": {
                "acss_debit": null,
                "affirm": null,
                "afterpay_clearpay": null,
                "alipay": null,
                "au_becs_debit": null,
                "bacs_debit": null,
                "bancontact": {
                    "preferred_language": "en",
                    "setup_future_usage": ""
                },
                "blik": null,
                "boleto": null,
                "card": {
                    "capture_method": "",
                    "installments": null,
                    "mandate_options": null,
                    "network": "",
                    "request_three_d_secure": "automatic",
                    "setup_future_usage": "",
                    "statement_descriptor_suffix_kana": "",
                    "statement_descriptor_suffix_kanji": ""
                },
                "card_present": null,
                "customer_balance": null,
                "eps": {
                    "setup_future_usage": ""
                },
                "fpx": null,
                "giropay": {
                    "setup_future_usage": ""
                },
                "grabpay": null,
                "ideal": {
                    "setup_future_usage": ""
                },
                "interac_present": null,
                "klarna": null,
                "konbini": null,
                "link": {
                    "capture_method": "",
                    "persistent_token": "",
                    "setup_future_usage": ""
                },
                "oxxo": null,
                "p24": {
                    "setup_future_usage": ""
                },
                "paynow": null,
                "promptpay": null,
                "sepa_debit": {
                    "mandate_options": null,
                    "setup_future_usage": ""
                },
                "sofort": null,
                "us_bank_account": null,
                "wechat_pay": null
            },
            "payment_method_types": [
                "card",
                "bancontact",
                "eps",
                "giropay",
                "ideal",
                "p24",
                "sepa_debit",
                "link"
            ],
            "processing": null,
            "receipt_email": "john@example.com",
            "review": null,
            "setup_future_usage": "",
            "shipping": null,
            "source": null,
            "statement_descriptor": "",
            "statement_descriptor_suffix": "",
            "status": "requires_payment_method",
            "transfer_data": null,
            "transfer_group": ""
        },
        "payment_details": {
            "detailed_status": "requires_payment_method"
        },
        "next_actions": [
            "cancel"
        ]
    }
}
Authorization or Purchase - POST Pay using 3D Secure
https://useast.api.elasticpath.com/v2/orders/:orderId/payments
Parameters
Path parameters
| Name | Required | Type | Description | 
|---|---|---|---|
| orderId | Required | string | The universally unique identifier of the order that you want to pay for. | 
Headers
| Name | Required | Type | Description | 
|---|---|---|---|
| Authorization | Required | string | The Bearer token required to get access to the API. | 
Body
| Name | Required | Type | Description | 
|---|---|---|---|
| gateway | Required | string | Specifies the gateway. You must use elastic_path_payments_stripeas the required gateway. | 
| method | Required | string | Specifies the transaction method, such as purchaseorauthorize. | 
| payment | Required | string | Use pm_card_threeDSecureRequiredorpm_card_threeDSecure2Required. | 
| options.return_url | Optional | string | Indicates the URL to redirect the user in the case of approved payment. | 
| options.receipt_email | Optional | string | Provides the email address to which you want to send the Stripe receipts for the transactions within the store. This feature is available only in the live mode. | 
| options.confirm | Optional | boolean | Set to trueto confirm the payment. Default value istrue. | 
| options.execute_threed | Optional | boolean | Set this field to trueto use 3D secure. Default value istrue. | 
| confirmation_method | Required | string | Specifies confirmation method for payment. Values can be set to manualorautomatic. Default isautomatic. | 
Request Example - Curl
curl -X POST https://useast.api.elasticpath.com/v2/orders/:orderId/payments \
     -H "Authorization: Bearer XXXX" \
     -d $'{
       "data": {
         "gateway": "elastic_path_payments_stripe",
         "method": "authorize",
         "payment": "pm_card_threeDSecureRequired",
         "options": {
            "return_url": "https://your.frontend.url/return",
            "receipt_email": "john@example.com",
            "confirm": true,
            "execute_threed": true,
            "confirmation_method": "manual"
         }
       }
     }
Response Example
200 OK
{
    "data": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "transaction",
        "reference": "pi_xxxxxxxxxxxxxx",
        "gateway": "elastic_path_payments_stripe",
        "amount": 20000,
        "refunded_amount": 0,
        "currency": "USD",
        "transaction_type": "authorize",
        "status": "pending",
        "relationships": {
            "order": {
                "data": {
                    "type": "order",
                    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
                }
            }
        },
        "meta": {
            "display_price": {
                "amount": 20000,
                "currency": "USD",
                "formatted": "$200.00"
            },
            "display_refunded_amount": {
                "total": {
                    "amount": 0,
                    "currency": "USD",
                    "formatted": "$0.00"
                }
            },
            "timestamps": {
                "created_at": "2023-03-09T14:01:32Z",
                "updated_at": "2023-03-09T14:01:33Z"
            }
        },
        "client_parameters": {
            "token": "pi_xxxxxxxxxxxxxx",
            "secret": "pi_xxxxxxxxxxxxxx_secret_xxxxxxxxxxxxxx"
        },
        "payment_intent": {
            "amount": 20000,
            "amount_capturable": 0,
            "amount_details": {
                "tip": {}
            },
            "amount_received": 0,
            "application": "ca_xxxxxxxxxxxxxx",
            "application_fee_amount": null,
            "automatic_payment_methods": null,
            "canceled_at": null,
            "cancellation_reason": null,
            "capture_method": "manual",
            "charges": {
                "data": [],
                "has_more": false,
                "object": "list",
                "total_count": 0,
                "url": "/v1/charges?payment_intent=pi_xxxxxxxxxxxxxx"
            },
            "client_secret": "pi_xxxxxxxxxxxxxx_secret_xxxxxxxxxxxxxx",
            "confirmation_method": "manual",
            "created": 1678370492,
            "currency": "usd",
            "customer": null,
            "description": null,
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "invoice": null,
            "last_payment_error": null,
            "latest_charge": null,
            "livemode": false,
            "metadata": {
                "email": "andy@example.com",
                "ip_address": "174.91.171.193",
                "order_id": "73f1bd38-8dda-441a-98b3-57d05af4d9ac"
            },
            "next_action": {
                "redirect_to_url": {
                    "return_url": "https://your.frontend.url/return",
                    "url": "https://hooks.stripe.com/redirect/authenticate/src_1Mjk2CS5G6YfGRXYqAAR6EsF?client_secret=src_client_secret_XEsFaMSCQwEeDnVUbQUa9P8P&source_redirect_slug=test_YWNjdF8xS2pBaElTNUc2WWZHUlhZLF9OVWpWT2N0eDJoNGRjQkhJMnhsUkUyNmdpd2NkM0xk01003bGfQmde"
                },
                "type": "redirect_to_url"
            },
            "object": "payment_intent",
            "on_behalf_of": null,
            "payment_method": "pm_xxxxxxxxxxxx",
            "payment_method_options": {
                "card": {
                    "installments": null,
                    "mandate_options": null,
                    "network": null,
                    "request_three_d_secure": "automatic"
                }
            },
            "payment_method_types": [
                "card"
            ],
            "processing": null,
            "receipt_email": "john@example.com",
            "review": null,
            "setup_future_usage": null,
            "shipping": null,
            "source": null,
            "statement_descriptor": null,
            "statement_descriptor_suffix": null,
            "status": "requires_action",
            "transfer_data": null,
            "transfer_group": null
        },
        "payment_details": {
            "detailed_status": "requires_action"
        },
        "next_actions": [
            "cancel"
        ]
    }
}
Confirmation - POST Confirm the Security Validation
https://useast.api.elasticpath.com/v2/orders/:orderId/transactions/:transactionId/confirm
Parameters
Path parameters
| Name | Required | Type | Description | 
|---|---|---|---|
| orderId | Required | string | The universally unique identifier of the order that you want to pay for. | 
| transactionId | Required | string | The universally unique identifier of the transaction that requires client action to process validation. | 
Headers
| Name | Required | Type | Description | 
|---|---|---|---|
| Authorization | Required | string | The Bearer token required to get access to the API. | 
Request example
If the response for the authorization or purchase request consists of client_parameters, Stripe might required client action to perform a 3D Secure validation. Use the Stripe client libraries and process the 3D Secure validation. When the validation succeeds, continue the payment processing by making a request as in the following example:
curl -X POST https://useast.api.elasticpath.com/v2/orders/:orderId/transactions/:transactionId/confirm \
     -H "Authorization: Bearer XXXX" \
     -d $ {
        "data": {
        }
      }
Response example
201 Created
The x values in the "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" are replaced with the returned values.
{
    "data": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "transaction",
        "reference": "xxxxxx",
        "gateway": "elastic_path_payments_stripe",
        "amount": 100,
        "currency": "USD",
        "transaction_type": "purchase",
        "status": "complete",
        "relationships": {
            "order": {
                "data": {
                    "type": "order",
                    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
                }
            }
        },
        "meta": {
            "display_price": {
                "amount": 100,
                "currency": "USD",
                "formatted": "$100.00"
            },
            "display_refunded_amount": {
                "total": {
                    "amount": 0,
                    "currency": "USD",
                    "formatted": "$0.00"
                }
            },
            "timestamps": {
                "created_at": "2020-05-25T20:58:57Z",
                "updated_at": "2020-05-25T13:59:01-07:00"
            }
        }
    }
}
Confirmation - POST Capture the Payment Authorization
https://useast.api.elasticpath.com/v2/orders/:orderId/transactions/:transactionId/capture
Use this endpoint to capture a transaction initiated by the shopper. Usually capture does not occur at the same time as authorization. For more information, see the Capture section.
Parameters
Path parameters
| Name | Required | Type | Description | 
|---|---|---|---|
| orderId | Required | string | The universally unique identifier of the order that you want to pay for. | 
| transactionId | Required | string | The universally unique identifier of the successful transaction for this payment. | 
Headers
| Name | Required | Type | Description | 
|---|---|---|---|
| Authorization | Required | string | The Bearer token required to get access to the API. | 
Request example
curl -X POST https://useast.api.elasticpath.com/v2/orders/:orderId/transactions/:transactionId/capture \
     -H "Authorization: Bearer XXXX"
Response example
201 Created
The x values in the "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" are replaced with the returned values.
{
    "data": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "transaction",
        "reference": "xxxxxx",
        "gateway": "elastic_path_payments_stripe",
        "amount": 100,
        "currency": "USD",
        "transaction_type": "capture",
        "status": "complete",
        "relationships": {
            "order": {
                "data": {
                    "type": "order",
                    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
                }
            }
        },
        "meta": {
            "display_price": {
                "amount": 100,
                "currency": "USD",
                "formatted": "$100.00"
            },
            "display_refunded_amount": {
                "total": {
                    "amount": 0,
                    "currency": "USD",
                    "formatted": "$0.00"
                }
            },
            "timestamps": {
                "created_at": "2020-05-25T20:58:57Z",
                "updated_at": "2020-05-25T13:59:01-07:00"
            }
        }
    }
}
Refund - Post Refund the Payment
https://useast.api.elasticpath.com/v2/orders/:orderId/transactions/:transactionId/refund
Use this endpoint to refund the amount initiated by the shopper.
Parameters
Path parameters
| Name | Required | Type | Description | 
|---|---|---|---|
| orderId | Required | string | The universally unique identifier of the order that you want to pay for. | 
| transactionId | Required | string | The universally unique identifier of the successful transaction for this payment. | 
Headers
| Name | Required | Type | Description | 
|---|---|---|---|
| Authorization | Required | string | The Bearer token required to get access to the API. | 
Body
| Name | Required | Type | Description | 
|---|---|---|---|
| amount | Required | integer | Specifies the amount to be refunded. | 
| options.note_to_payer | Optional | string | Specifies the reason for the refund. It appears in both the transaction history of the payer and the emails that the payer receives. | 
Request example
curl -X POST https://useast.api.elasticpath.com/v2/orders/:orderId/transactions/:transactionId/refund \
     -H "Authorization: Bearer XXXX"
     "data": {
     "amount": 1,
      "options": {
       "note_to_payer": "Test note to payer"
    }
  }
}
Response example
200 OK
{
    "data": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "transaction",
        "reference": "pi_3Kr4EBHGgiZNYgWz1eio9cFS",
        "gateway": "elastic_path_payments_stripe",
        "amount": 80000,
        "refunded_amount": 2,
        "refund_mechanism": "automatic",
        "currency": "GBP",
        "transaction_type": "refund",
        "status": "complete",
        "relationships": {
            "order": {
                "data": {
                    "type": "order",
                    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
                }
            }
        },
        "meta": {
            "display_price": {
                "amount": 80000,
                "currency": "GBP",
                "formatted": "£800.00"
            },
            "display_refunded_amount": {
                "total": {
                    "amount": 2,
                    "currency": "GBP",
                    "formatted": "£0.02"
                }
            },
            "timestamps": {
                "created_at": "2022-04-21T17:55:38Z",
                "updated_at": "2022-04-22T15:37:07Z"
            }
        }
    }
}