POST
/
payments
/
{payment_id}
/
confirm
Payments - Confirm
curl --request POST \
  --url https://sandbox.hyperswitch.io/payments/{payment_id}/confirm \
  --header 'Content-Type: application/json' \
  --header 'api-key: <api-key>' \
  --data '{
  "customer_acceptance": {
    "acceptance_type": "online",
    "accepted_at": "1963-05-03T04:07:52.723Z",
    "online": {
      "ip_address": "127.0.0.1",
      "user_agent": "amet irure esse"
    }
  },
  "payment_method": "card",
  "payment_method_data": {
    "card": {
      "card_cvc": "123",
      "card_exp_month": "10",
      "card_exp_year": "25",
      "card_holder_name": "joseph Doe",
      "card_number": "4242424242424242"
    }
  },
  "payment_method_type": "credit"
}'
{
  "payment_id": "pay_mbabizu24mvu3mela5njyhpit4",
  "merchant_id": "merchant_1668273825",
  "status": "succeeded",
  "amount": 6540,
  "net_amount": 6540,
  "shipping_cost": 6540,
  "amount_capturable": 6540,
  "amount_received": 6540,
  "connector": "stripe",
  "client_secret": "pay_U42c409qyHwOkWo3vK60_secret_el9ksDkiB8hi6j9N78yo",
  "created": "2022-09-10T10:11:12Z",
  "currency": "AED",
  "customer_id": "cus_y3oqhf46pyzuxjbcn2giaqnb44",
  "description": "It's my first payment request",
  "refunds": [
    {
      "refund_id": "<string>",
      "payment_id": "<string>",
      "amount": 6540,
      "currency": "<string>",
      "status": "succeeded",
      "reason": "<string>",
      "metadata": {},
      "error_message": "<string>",
      "error_code": "<string>",
      "unified_code": "<string>",
      "unified_message": "<string>",
      "created_at": "2023-11-07T05:31:56Z",
      "updated_at": "2023-11-07T05:31:56Z",
      "connector": "stripe",
      "profile_id": "<string>",
      "merchant_connector_id": "<string>",
      "split_refunds": {
        "stripe_split_refund": {
          "revert_platform_fee": true,
          "revert_transfer": true
        }
      },
      "issuer_error_code": "<string>",
      "issuer_error_message": "<string>"
    }
  ],
  "disputes": [
    {
      "dispute_id": "<string>",
      "dispute_stage": "pre_dispute",
      "dispute_status": "dispute_opened",
      "connector_status": "<string>",
      "connector_dispute_id": "<string>",
      "connector_reason": "<string>",
      "connector_reason_code": "<string>",
      "challenge_required_by": "2023-11-07T05:31:56Z",
      "connector_created_at": "2023-11-07T05:31:56Z",
      "connector_updated_at": "2023-11-07T05:31:56Z",
      "created_at": "2023-11-07T05:31:56Z"
    }
  ],
  "attempts": [
    {
      "attempt_id": "<string>",
      "status": "started",
      "amount": 6540,
      "order_tax_amount": 6540,
      "currency": "AED",
      "connector": "<string>",
      "error_message": "<string>",
      "payment_method": "card",
      "connector_transaction_id": "<string>",
      "capture_method": "automatic",
      "authentication_type": "three_ds",
      "created_at": "2022-09-10T10:11:12Z",
      "modified_at": "2022-09-10T10:11:12Z",
      "cancellation_reason": "<string>",
      "mandate_id": "<string>",
      "error_code": "<string>",
      "payment_token": "<string>",
      "connector_metadata": "<any>",
      "payment_experience": "redirect_to_url",
      "payment_method_type": "ach",
      "reference_id": "993672945374576J",
      "unified_code": "<string>",
      "unified_message": "<string>",
      "client_source": "<string>",
      "client_version": "<string>"
    }
  ],
  "captures": [
    {
      "capture_id": "<string>",
      "status": "started",
      "amount": 6540,
      "currency": "AED",
      "connector": "<string>",
      "authorized_attempt_id": "<string>",
      "connector_capture_id": "<string>",
      "capture_sequence": 123,
      "error_message": "<string>",
      "error_code": "<string>",
      "error_reason": "<string>",
      "reference_id": "<string>"
    }
  ],
  "mandate_id": "mandate_iwer89rnjef349dni3",
  "mandate_data": {
    "update_mandate_id": "<string>",
    "customer_acceptance": {
      "acceptance_type": "online",
      "accepted_at": "2022-09-10T10:11:12Z",
      "online": {
        "ip_address": "123.32.25.123",
        "user_agent": "<string>"
      }
    },
    "mandate_type": {
      "single_use": {
        "amount": 6540,
        "currency": "AED",
        "start_date": "2022-09-10T00:00:00Z",
        "end_date": "2023-09-10T23:59:59Z",
        "metadata": {}
      }
    }
  },
  "setup_future_usage": "off_session",
  "off_session": true,
  "capture_method": "automatic",
  "payment_method": "card",
  "payment_method_data": {
    "card": {
      "last4": "<string>",
      "card_type": "<string>",
      "card_network": "Visa",
      "card_issuer": "<string>",
      "card_issuing_country": "<string>",
      "card_isin": "<string>",
      "card_extended_bin": "<string>",
      "card_exp_month": "<string>",
      "card_exp_year": "<string>",
      "card_holder_name": "<string>",
      "payment_checks": "<any>",
      "authentication_data": "<any>"
    },
    "billing": {
      "address": {
        "city": "New York",
        "country": "AF",
        "line1": "123, King Street",
        "line2": "Powelson Avenue",
        "line3": "Bridgewater",
        "zip": "08807",
        "state": "New York",
        "first_name": "John",
        "last_name": "Doe",
        "origin_zip": "08807"
      },
      "phone": {
        "number": "9123456789",
        "country_code": "+1"
      },
      "email": "<string>"
    }
  },
  "payment_token": "187282ab-40ef-47a9-9206-5099ba31e432",
  "shipping": {
    "address": {
      "city": "New York",
      "country": "AF",
      "line1": "123, King Street",
      "line2": "Powelson Avenue",
      "line3": "Bridgewater",
      "zip": "08807",
      "state": "New York",
      "first_name": "John",
      "last_name": "Doe",
      "origin_zip": "08807"
    },
    "phone": {
      "number": "9123456789",
      "country_code": "+1"
    },
    "email": "<string>"
  },
  "billing": {
    "address": {
      "city": "New York",
      "country": "AF",
      "line1": "123, King Street",
      "line2": "Powelson Avenue",
      "line3": "Bridgewater",
      "zip": "08807",
      "state": "New York",
      "first_name": "John",
      "last_name": "Doe",
      "origin_zip": "08807"
    },
    "phone": {
      "number": "9123456789",
      "country_code": "+1"
    },
    "email": "<string>"
  },
  "order_details": "[{\n        \"product_name\": \"gillete creme\",\n        \"quantity\": 15,\n        \"amount\" : 900\n    }]",
  "email": "johntest@test.com",
  "name": "John Test",
  "phone": "9123456789",
  "return_url": "https://hyperswitch.io",
  "authentication_type": "three_ds",
  "statement_descriptor_name": "Hyperswitch Router",
  "statement_descriptor_suffix": "Payment for shoes purchase",
  "next_action": {
    "redirect_to_url": "<string>",
    "type": "redirect_to_url"
  },
  "cancellation_reason": "<string>",
  "error_code": "E0001",
  "error_message": "Failed while verifying the card",
  "payment_experience": "redirect_to_url",
  "payment_method_type": "ach",
  "connector_label": "stripe_US_food",
  "business_country": "AF",
  "business_label": "<string>",
  "business_sub_label": "<string>",
  "allowed_payment_method_types": [
    "ach"
  ],
  "ephemeral_key": {
    "customer_id": "cus_y3oqhf46pyzuxjbcn2giaqnb44",
    "created_at": 123,
    "expires": 123,
    "secret": "<string>"
  },
  "manual_retry_allowed": true,
  "connector_transaction_id": "993672945374576J",
  "frm_message": {
    "frm_name": "<string>",
    "frm_transaction_id": "<string>",
    "frm_transaction_type": "<string>",
    "frm_status": "<string>",
    "frm_score": 123,
    "frm_reason": "<any>",
    "frm_error": "<string>"
  },
  "metadata": {},
  "connector_metadata": {
    "apple_pay": {
      "session_token_data": {
        "payment_processing_certificate": "<string>",
        "payment_processing_certificate_key": "<string>",
        "payment_processing_details_at": "Hyperswitch",
        "certificate": "<string>",
        "certificate_keys": "<string>",
        "merchant_identifier": "<string>",
        "display_name": "<string>",
        "initiative": "web",
        "initiative_context": "<string>",
        "merchant_business_country": "AF"
      }
    },
    "airwallex": {
      "payload": "<string>"
    },
    "noon": {
      "order_category": "<string>"
    },
    "braintree": {
      "merchant_account_id": "<string>",
      "merchant_config_currency": "<string>"
    },
    "adyen": {
      "testing": {
        "holder_name": "<string>"
      }
    }
  },
  "feature_metadata": {
    "redirect_response": {
      "param": "<string>",
      "json_payload": {}
    },
    "search_tags": [
      "<string>"
    ],
    "apple_pay_recurring_details": {
      "payment_description": "<string>",
      "regular_billing": {
        "label": "<string>",
        "recurring_payment_start_date": "2023-09-10T23:59:59Z",
        "recurring_payment_end_date": "2023-09-10T23:59:59Z",
        "recurring_payment_interval_unit": "year",
        "recurring_payment_interval_count": 123
      },
      "billing_agreement": "<string>",
      "management_url": "https://hyperswitch.io"
    }
  },
  "reference_id": "993672945374576J",
  "payment_link": {
    "link": "<string>",
    "secure_link": "<string>",
    "payment_link_id": "<string>"
  },
  "profile_id": "<string>",
  "surcharge_details": {
    "surcharge_amount": 6540,
    "tax_amount": 123
  },
  "attempt_count": 123,
  "merchant_decision": "<string>",
  "merchant_connector_id": "<string>",
  "incremental_authorization_allowed": true,
  "authorization_count": 123,
  "incremental_authorizations": [
    {
      "authorization_id": "<string>",
      "amount": 6540,
      "status": "success",
      "error_code": "<string>",
      "error_message": "<string>",
      "previously_authorized_amount": 123
    }
  ],
  "external_authentication_details": {
    "authentication_flow": "challenge",
    "electronic_commerce_indicator": "<string>",
    "status": "started",
    "ds_transaction_id": "<string>",
    "version": "<string>",
    "error_code": "<string>",
    "error_message": "<string>"
  },
  "external_3ds_authentication_attempted": true,
  "expires_on": "2022-09-10T10:11:12Z",
  "fingerprint": "<string>",
  "browser_info": {
    "color_depth": 1,
    "java_enabled": true,
    "java_script_enabled": true,
    "language": "<string>",
    "screen_height": 1,
    "screen_width": 1,
    "time_zone": 123,
    "ip_address": "<string>",
    "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    "user_agent": "<string>",
    "os_type": "<string>",
    "os_version": "<string>",
    "device_model": "<string>"
  },
  "payment_channel": "ecommerce",
  "payment_method_id": "<string>",
  "network_transaction_id": "<string>",
  "payment_method_status": "active",
  "updated": "2022-09-10T10:11:12Z",
  "split_payments": {
    "stripe_split_payment": {
      "charge_id": "<string>",
      "charge_type": {
        "Stripe": "direct"
      },
      "application_fees": 6540,
      "transfer_account_id": "<string>"
    }
  },
  "frm_metadata": {},
  "extended_authorization_applied": true,
  "request_extended_authorization": false,
  "capture_before": "2023-11-07T05:31:56Z",
  "merchant_order_reference_id": "Custom_Order_id_123",
  "order_tax_amount": 123,
  "connector_mandate_id": "<string>",
  "card_discovery": "manual",
  "force_3ds_challenge": true,
  "force_3ds_challenge_trigger": true,
  "issuer_error_code": "<string>",
  "issuer_error_message": "<string>",
  "is_iframe_redirection_enabled": true,
  "whole_connector_response": "<string>",
  "enable_partial_authorization": true,
  "enable_overcapture": true,
  "is_overcapture_enabled": true,
  "network_details": {
    "network_advice_code": "<string>"
  }
}

Authorizations

api-key
string
header
required

Use the API key created under your merchant account from the HyperSwitch dashboard. API key is used to authenticate API requests from your merchant server only. Don't expose this key on a website or embed it in a mobile application.

Path Parameters

payment_id
string
required

The identifier for payment

Body

application/json
amount
integer | null

The primary amount for the payment, provided in the lowest denomination of the specified currency (e.g., 6540 for $65.40 USD). This field is mandatory for creating a payment.

Required range: x >= 0
Example:

6540

order_tax_amount
integer | null

Total tax amount applicable to the order, in the lowest denomination of the currency.

Example:

6540

currency
enum<string>

The three-letter ISO 4217 currency code (e.g., "USD", "EUR") for the payment amount. This field is mandatory for creating a payment.

Available options:
AED,
AFN,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BTN,
BWP,
BYN,
BZD,
CAD,
CDF,
CHF,
CLF,
CLP,
CNY,
COP,
CRC,
CUC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ERN,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HRK,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
IRR,
ISK,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KPW,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SDG,
SEK,
SGD,
SHP,
SLE,
SLL,
SOS,
SRD,
SSP,
STD,
STN,
SVC,
SYP,
SZL,
THB,
TJS,
TMT,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XCD,
XOF,
XPF,
YER,
ZAR,
ZMW,
ZWL
amount_to_capture
integer | null

The amount to be captured from the user's payment method, in the lowest denomination. If not provided, and capture_method is automatic, the full payment amount will be captured. If capture_method is manual, this can be specified in the /capture call. Must be less than or equal to the authorized amount.

Example:

6540

shipping_cost
integer | null

The shipping cost for the payment. This is required for tax calculation in some regions.

Example:

6540

payment_id
string | null

Optional. A merchant-provided unique identifier for the payment, contains 30 characters long (e.g., "pay_mbabizu24mvu3mela5njyhpit4"). If provided, it ensures idempotency for the payment creation request. If omitted, Hyperswitch generates a unique ID for the payment.

Required string length: 30
Example:

"pay_mbabizu24mvu3mela5njyhpit4"

routing
object
connector
enum<string>[] | null

This allows to manually select a connector with which the payment can go through.

Example:
["stripe", "adyen"]
capture_method
enum<string>

Specifies how the payment is captured.

  • automatic: Funds are captured immediately after successful authorization. This is the default behavior if the field is omitted.
  • manual: Funds are authorized but not captured. A separate request to the /payments/{payment_id}/capture endpoint is required to capture the funds.
Available options:
automatic,
manual,
manual_multiple,
scheduled,
sequential_automatic
authentication_type
enum<string>
default:three_ds

Specifies the type of cardholder authentication to be applied for a payment.

  • ThreeDs: Requests 3D Secure (3DS) authentication. If the card is enrolled, 3DS authentication will be activated, potentially shifting chargeback liability to the issuer.
  • NoThreeDs: Indicates that 3D Secure authentication should not be performed. The liability for chargebacks typically remains with the merchant. This is often the default if not specified.

Note: The actual authentication behavior can also be influenced by merchant configuration and specific connector defaults. Some connectors might still enforce 3DS or bypass it regardless of this parameter.

Available options:
three_ds,
no_three_ds
billing
object
confirm
boolean | null
default:false

If set to true, Hyperswitch attempts to confirm and authorize the payment immediately after creation, provided sufficient payment method details are included. If false or omitted (default is false), the payment is created with a status such as requires_payment_method or requires_confirmation, and a separate POST /payments/{payment_id}/confirm call is necessary to proceed with authorization.

Example:

true

customer
object

Passing this object creates a new customer or attaches an existing customer to the payment

customer_id
string | null

The identifier for the customer

Required string length: 1 - 64
Example:

"cus_y3oqhf46pyzuxjbcn2giaqnb44"

off_session
boolean | null

Set to true to indicate that the customer is not in your checkout flow during this payment, and therefore is unable to authenticate. This parameter is intended for scenarios where you collect card details and charge them later. When making a recurring payment by passing a mandate_id, this parameter is mandatory

Example:

true

description
string | null

An arbitrary string attached to the payment. Often useful for displaying to users or for your own internal record-keeping.

Example:

"It's my first payment request"

return_url
string | null

The URL to redirect the customer to after they complete the payment process or authentication. This is crucial for flows that involve off-site redirection (e.g., 3DS, some bank redirects, wallet payments).

Maximum length: 2048
Example:

"https://hyperswitch.io"

setup_future_usage
enum<string>

Specifies how the payment method can be used for future payments.

  • off_session: The payment method can be used for future payments when the customer is not present.
  • on_session: The payment method is intended for use only when the customer is present during checkout. If omitted, defaults to on_session.
Available options:
off_session,
on_session
payment_method_data
object

The payment method information provided for making a payment

payment_method
enum<string>

Indicates the type of payment method. Eg: 'card', 'wallet', etc.

Available options:
card,
card_redirect,
pay_later,
wallet,
bank_redirect,
bank_transfer,
crypto,
bank_debit,
reward,
real_time_payment,
upi,
voucher,
gift_card,
open_banking,
mobile_payment
payment_token
string | null

As Hyperswitch tokenises the sensitive details about the payments method, it provides the payment_token as a reference to a stored payment method, ensuring that the sensitive details are not exposed in any manner.

Example:

"187282ab-40ef-47a9-9206-5099ba31e432"

shipping
object
statement_descriptor_name
string | null

For non-card charges, you can use this value as the complete description that appears on your customers’ statements. Must contain at least one letter, maximum 22 characters.

Maximum length: 255
Example:

"Hyperswitch Router"

statement_descriptor_suffix
string | null

Provides information about a card payment that customers see on their statements. Concatenated with the prefix (shortened descriptor) or statement descriptor that’s set on the account to form the complete statement descriptor. Maximum 22 characters for the concatenated descriptor.

Maximum length: 255
Example:

"Payment for shoes purchase"

order_details
object[] | null

Use this object to capture the details about the different products for which the payment is being made. The sum of amount across different products here should be equal to the overall payment amount

Example:

"[{\n \"product_name\": \"Apple iPhone 16\",\n \"quantity\": 1,\n \"amount\" : 69000\n \"product_img_link\" : \"https://dummy-img-link.com\"\n }]"

client_secret
string | null

It's a token used for client side verification.

Example:

"pay_U42c409qyHwOkWo3vK60_secret_el9ksDkiB8hi6j9N78yo"

mandate_data
object

Passing this object during payments creates a mandate. The mandate_type sub object is passed by the server.

customer_acceptance
object

This "CustomerAcceptance" object is passed during Payments-Confirm request, it enlists the type, time, and mode of acceptance properties related to an acceptance done by the customer. The customer_acceptance sub object is usually passed by the SDK or client.

mandate_id
string | null

A unique identifier to link the payment to a mandate. To do Recurring payments after a mandate has been created, pass the mandate_id instead of payment_method_data

Maximum length: 64
Example:

"mandate_iwer89rnjef349dni3"

browser_info
object

Browser information to be used for 3DS 2.0

payment_experience
enum<string>

To indicate the type of payment experience that the customer would go through

Available options:
redirect_to_url,
invoke_sdk_client,
display_qr_code,
one_click,
link_wallet,
invoke_payment_app,
display_wait_screen,
collect_otp
payment_method_type
enum<string>

Indicates the sub type of payment method. Eg: 'google_pay' & 'apple_pay' for wallets.

Available options:
ach,
affirm,
afterpay_clearpay,
alfamart,
ali_pay,
ali_pay_hk,
alma,
amazon_pay,
paysera,
apple_pay,
atome,
bacs,
bancontact_card,
becs,
benefit,
bizum,
blik,
bluecode,
boleto,
bca_bank_transfer,
bni_va,
breadpay,
bri_va,
bhn_card_network,
card_redirect,
cimb_va,
classic,
credit,
crypto_currency,
cashapp,
dana,
danamon_va,
debit,
duit_now,
efecty,
eft,
eps,
flexiti,
fps,
evoucher,
giropay,
givex,
google_pay,
go_pay,
gcash,
ideal,
interac,
indomaret,
klarna,
kakao_pay,
local_bank_redirect,
mandiri_va,
knet,
mb_way,
mobile_pay,
momo,
momo_atm,
multibanco,
online_banking_thailand,
online_banking_czech_republic,
online_banking_finland,
online_banking_fpx,
online_banking_poland,
online_banking_slovakia,
oxxo,
pago_efectivo,
permata_bank_transfer,
open_banking_uk,
pay_bright,
paypal,
paze,
pix,
pay_safe_card,
przelewy24,
prompt_pay,
pse,
red_compra,
red_pagos,
samsung_pay,
sepa,
sepa_bank_transfer,
skrill,
sofort,
swish,
touch_n_go,
trustly,
twint,
upi_collect,
upi_intent,
vipps,
viet_qr,
venmo,
walley,
we_chat_pay,
seven_eleven,
lawson,
mini_stop,
family_mart,
seicomart,
pay_easy,
local_bank_transfer,
mifinity,
open_banking_pis,
direct_carrier_billing,
instant_bank_transfer,
instant_bank_transfer_finland,
instant_bank_transfer_poland,
revolut_pay,
indonesian_bank_transfer
merchant_connector_details
object

Merchant connector details used to make payments.

allowed_payment_method_types
enum<string>[] | null

Use this parameter to restrict the Payment Method Types to show for a given PaymentIntent

retry_action
enum<string>

Denotes the retry action

Available options:
manual_retry,
requeue
metadata
object | null

You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.

connector_metadata
object

Some connectors like Apple Pay, Airwallex and Noon might require some additional information, find specific details in the child attributes below.

Whether to generate the payment link for this payment or not (if applicable)

Example:

true

Configure a custom payment link for the particular payment

Custom payment link config id set at business profile, send only if business_specific_configs is configured

payment_type
enum<string>

The type of the payment that differentiates between normal and various types of mandate payments. Use 'setup_mandate' in case of zero auth flow.

Available options:
normal,
new_mandate,
setup_mandate,
recurring_mandate
request_incremental_authorization
boolean | null

Request an incremental authorization, i.e., increase the authorized amount on a confirmed payment before you capture it.

session_expiry
integer | null

Will be used to expire client secret after certain amount of time to be supplied in seconds (900) for 15 mins

Required range: x >= 0
Example:

900

frm_metadata
object | null

Additional data related to some frm(Fraud Risk Management) connectors

request_external_three_ds_authentication
boolean | null

Whether to perform external authentication (if applicable)

Example:

true

recurring_details
object

Details required for recurring payment

split_payments
object

Fee information for Split Payments to be charged on the payment being collected

request_extended_authorization
boolean | null
default:false

Optional boolean value to extent authorization period of this payment

capture method must be manual or manual_multiple

merchant_order_reference_id
string | null

Your unique identifier for this payment or order. This ID helps you reconcile payments on your system. If provided, it is passed to the connector if supported.

Maximum length: 255
Example:

"Custom_Order_id_123"

skip_external_tax_calculation
boolean | null

Whether to calculate tax for this payment intent

psd2_sca_exemption_type
enum<string>

SCA Exemptions types available for authentication

Available options:
low_value,
transaction_risk_analysis
ctp_service_details
object
force_3ds_challenge
boolean | null

Indicates if 3ds challenge is forced

threeds_method_comp_ind
enum<string>

Indicates if 3DS method data was successfully completed or not

Available options:
Y,
N,
U
is_iframe_redirection_enabled
boolean | null

Indicates if the redirection has to open in the iframe

all_keys_required
boolean | null

If enabled, provides whole connector response

payment_channel

Describes the channel through which the payment was initiated.

Available options:
ecommerce
tax_status
enum<string>
Available options:
taxable,
exempt
discount_amount
integer | null

Total amount of the discount you have applied to the order or transaction.

Example:

6540

shipping_amount_tax
integer

This Unit struct represents MinorUnit in which core amount works

duty_amount
integer

This Unit struct represents MinorUnit in which core amount works

order_date
string<date-time> | null

Date the payer placed the order.

enable_partial_authorization
boolean | null

Allow partial authorization for this payment

Response

Payment confirmed

payment_id
string
required

Unique identifier for the payment. This ensures idempotency for multiple payments that have been done by a single merchant.

Required string length: 30
Example:

"pay_mbabizu24mvu3mela5njyhpit4"

merchant_id
string
required

This is an identifier for the merchant account. This is inferred from the API key provided during the request

Maximum length: 255
Example:

"merchant_1668273825"

status
enum<string>
default:requires_confirmation
required

Represents the overall status of a payment intent. The status transitions through various states depending on the payment method, confirmation, capture method, and any subsequent actions (like customer authentication or manual capture).

Available options:
succeeded,
failed,
cancelled,
cancelled_post_capture,
processing,
requires_customer_action,
requires_merchant_action,
requires_payment_method,
requires_confirmation,
requires_capture,
partially_captured,
partially_captured_and_capturable,
partially_authorized_and_requires_capture,
conflicted,
expired
amount
integer
required

The payment amount. Amount for the payment in lowest denomination of the currency. (i.e) in cents for USD denomination, in paisa for INR denomination etc.,

Example:

6540

net_amount
integer
required

The payment net amount. net_amount = amount + surcharge_details.surcharge_amount + surcharge_details.tax_amount + shipping_cost + order_tax_amount, If no surcharge_details, shipping_cost, order_tax_amount, net_amount = amount

Example:

6540

amount_capturable
integer
required

The amount (in minor units) that can still be captured for this payment. This is relevant when capture_method is manual. Once fully captured, or if capture_method is automatic and payment succeeded, this will be 0.

Required range: x >= 100
Example:

6540

currency
enum<string>
required

The three-letter ISO 4217 currency code (e.g., "USD", "EUR") for the payment amount. This field is mandatory for creating a payment.

Available options:
AED,
AFN,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BTN,
BWP,
BYN,
BZD,
CAD,
CDF,
CHF,
CLF,
CLP,
CNY,
COP,
CRC,
CUC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ERN,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HRK,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
IRR,
ISK,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KPW,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SDG,
SEK,
SGD,
SHP,
SLE,
SLL,
SOS,
SRD,
SSP,
STD,
STN,
SVC,
SYP,
SZL,
THB,
TJS,
TMT,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XCD,
XOF,
XPF,
YER,
ZAR,
ZMW,
ZWL
payment_method
enum<string>
required

Indicates the type of payment method. Eg: 'card', 'wallet', etc.

Available options:
card,
card_redirect,
pay_later,
wallet,
bank_redirect,
bank_transfer,
crypto,
bank_debit,
reward,
real_time_payment,
upi,
voucher,
gift_card,
open_banking,
mobile_payment
attempt_count
integer
required

Total number of attempts associated with this payment

shipping_cost
integer | null

The shipping cost for the payment.

Example:

6540

amount_received
integer | null

The total amount (in minor units) that has been captured for this payment. For fauxpay sandbox connector, this might reflect the authorized amount if status is succeeded even if capture_method was manual.

Example:

6540

connector
string | null

The name of the payment connector (e.g., 'stripe', 'adyen') that processed or is processing this payment.

Example:

"stripe"

client_secret
string | null

A secret token unique to this payment intent. It is primarily used by client-side applications (e.g., Hyperswitch SDKs) to authenticate actions like confirming the payment or handling next actions. This secret should be handled carefully and not exposed publicly beyond its intended client-side use.

Example:

"pay_U42c409qyHwOkWo3vK60_secret_el9ksDkiB8hi6j9N78yo"

created
string<date-time> | null

Timestamp indicating when this payment intent was created, in ISO 8601 format.

Example:

"2022-09-10T10:11:12Z"

customer_id
string | null
deprecated

The identifier for the customer object. If not provided the customer ID will be autogenerated. This field will be deprecated soon. Please refer to customer.id

Required string length: 1 - 64
Example:

"cus_y3oqhf46pyzuxjbcn2giaqnb44"

description
string | null

An arbitrary string providing a description for the payment, often useful for display or internal record-keeping.

Example:

"It's my first payment request"

refunds
object[] | null

An array of refund objects associated with this payment. Empty or null if no refunds have been processed.

disputes
object[] | null

List of disputes that happened on this intent

attempts
object[] | null

List of attempts that happened on this intent

captures
object[] | null

List of captures done on latest attempt

mandate_id
string | null

A unique identifier to link the payment to a mandate, can be used instead of payment_method_data, in case of setting up recurring payments

Maximum length: 255
Example:

"mandate_iwer89rnjef349dni3"

mandate_data
object

Passing this object during payments creates a mandate. The mandate_type sub object is passed by the server.

setup_future_usage
enum<string>

Specifies how the payment method can be used for future payments.

  • off_session: The payment method can be used for future payments when the customer is not present.
  • on_session: The payment method is intended for use only when the customer is present during checkout. If omitted, defaults to on_session.
Available options:
off_session,
on_session
off_session
boolean | null

Set to true to indicate that the customer is not in your checkout flow during this payment, and therefore is unable to authenticate. This parameter is intended for scenarios where you collect card details and charge them later. This parameter can only be used with confirm=true.

Example:

true

capture_method
enum<string>

Specifies how the payment is captured.

  • automatic: Funds are captured immediately after successful authorization. This is the default behavior if the field is omitted.
  • manual: Funds are authorized but not captured. A separate request to the /payments/{payment_id}/capture endpoint is required to capture the funds.
Available options:
automatic,
manual,
manual_multiple,
scheduled,
sequential_automatic
payment_method_data
object
payment_token
string | null

Provide a reference to a stored payment method

Example:

"187282ab-40ef-47a9-9206-5099ba31e432"

shipping
object
billing
object
order_details
object[] | null

Information about the product , quantity and amount for connectors. (e.g. Klarna)

Example:

"[{\n \"product_name\": \"gillete creme\",\n \"quantity\": 15,\n \"amount\" : 900\n }]"

email
string | null
deprecated

description: The customer's email address This field will be deprecated soon. Please refer to customer.email object

Maximum length: 255
Example:

"johntest@test.com"

name
string | null
deprecated

description: The customer's name This field will be deprecated soon. Please refer to customer.name object

Maximum length: 255
Example:

"John Test"

phone
string | null
deprecated

The customer's phone number This field will be deprecated soon. Please refer to customer.phone object

Maximum length: 255
Example:

"9123456789"

return_url
string | null

The URL to redirect after the completion of the operation

Example:

"https://hyperswitch.io"

authentication_type
enum<string>
default:three_ds

Specifies the type of cardholder authentication to be applied for a payment.

  • ThreeDs: Requests 3D Secure (3DS) authentication. If the card is enrolled, 3DS authentication will be activated, potentially shifting chargeback liability to the issuer.
  • NoThreeDs: Indicates that 3D Secure authentication should not be performed. The liability for chargebacks typically remains with the merchant. This is often the default if not specified.

Note: The actual authentication behavior can also be influenced by merchant configuration and specific connector defaults. Some connectors might still enforce 3DS or bypass it regardless of this parameter.

Available options:
three_ds,
no_three_ds
statement_descriptor_name
string | null

For non-card charges, you can use this value as the complete description that appears on your customers’ statements. Must contain at least one letter, maximum 22 characters.

Maximum length: 255
Example:

"Hyperswitch Router"

statement_descriptor_suffix
string | null

Provides information about a card payment that customers see on their statements. Concatenated with the prefix (shortened descriptor) or statement descriptor that’s set on the account to form the complete statement descriptor. Maximum 255 characters for the concatenated descriptor.

Maximum length: 255
Example:

"Payment for shoes purchase"

next_action
object

Contains the url for redirection flow

cancellation_reason
string | null

If the payment intent was cancelled, this field provides a textual reason for the cancellation (e.g., "requested_by_customer", "abandoned").

error_code
string | null

The connector-specific error code from the last failed payment attempt associated with this payment intent.

Example:

"E0001"

error_message
string | null

A human-readable error message from the last failed payment attempt associated with this payment intent.

Example:

"Failed while verifying the card"

payment_experience
enum<string>

To indicate the type of payment experience that the customer would go through

Available options:
redirect_to_url,
invoke_sdk_client,
display_qr_code,
one_click,
link_wallet,
invoke_payment_app,
display_wait_screen,
collect_otp
payment_method_type
enum<string>

Indicates the sub type of payment method. Eg: 'google_pay' & 'apple_pay' for wallets.

Available options:
ach,
affirm,
afterpay_clearpay,
alfamart,
ali_pay,
ali_pay_hk,
alma,
amazon_pay,
paysera,
apple_pay,
atome,
bacs,
bancontact_card,
becs,
benefit,
bizum,
blik,
bluecode,
boleto,
bca_bank_transfer,
bni_va,
breadpay,
bri_va,
bhn_card_network,
card_redirect,
cimb_va,
classic,
credit,
crypto_currency,
cashapp,
dana,
danamon_va,
debit,
duit_now,
efecty,
eft,
eps,
flexiti,
fps,
evoucher,
giropay,
givex,
google_pay,
go_pay,
gcash,
ideal,
interac,
indomaret,
klarna,
kakao_pay,
local_bank_redirect,
mandiri_va,
knet,
mb_way,
mobile_pay,
momo,
momo_atm,
multibanco,
online_banking_thailand,
online_banking_czech_republic,
online_banking_finland,
online_banking_fpx,
online_banking_poland,
online_banking_slovakia,
oxxo,
pago_efectivo,
permata_bank_transfer,
open_banking_uk,
pay_bright,
paypal,
paze,
pix,
pay_safe_card,
przelewy24,
prompt_pay,
pse,
red_compra,
red_pagos,
samsung_pay,
sepa,
sepa_bank_transfer,
skrill,
sofort,
swish,
touch_n_go,
trustly,
twint,
upi_collect,
upi_intent,
vipps,
viet_qr,
venmo,
walley,
we_chat_pay,
seven_eleven,
lawson,
mini_stop,
family_mart,
seicomart,
pay_easy,
local_bank_transfer,
mifinity,
open_banking_pis,
direct_carrier_billing,
instant_bank_transfer,
instant_bank_transfer_finland,
instant_bank_transfer_poland,
revolut_pay,
indonesian_bank_transfer
connector_label
string | null

A label identifying the specific merchant connector account (MCA) used for this payment. This often combines the connector name, business country, and a custom label (e.g., "stripe_US_primary").

Example:

"stripe_US_food"

business_country
enum<string>
Available options:
AF,
AX,
AL,
DZ,
AS,
AD,
AO,
AI,
AQ,
AG,
AR,
AM,
AW,
AU,
AT,
AZ,
BS,
BH,
BD,
BB,
BY,
BE,
BZ,
BJ,
BM,
BT,
BO,
BQ,
BA,
BW,
BV,
BR,
IO,
BN,
BG,
BF,
BI,
KH,
CM,
CA,
CV,
KY,
CF,
TD,
CL,
CN,
CX,
CC,
CO,
KM,
CG,
CD,
CK,
CR,
CI,
HR,
CU,
CW,
CY,
CZ,
DK,
DJ,
DM,
DO,
EC,
EG,
SV,
GQ,
ER,
EE,
ET,
FK,
FO,
FJ,
FI,
FR,
GF,
PF,
TF,
GA,
GM,
GE,
DE,
GH,
GI,
GR,
GL,
GD,
GP,
GU,
GT,
GG,
GN,
GW,
GY,
HT,
HM,
VA,
HN,
HK,
HU,
IS,
IN,
ID,
IR,
IQ,
IE,
IM,
IL,
IT,
JM,
JP,
JE,
JO,
KZ,
KE,
KI,
KP,
KR,
KW,
KG,
LA,
LV,
LB,
LS,
LR,
LY,
LI,
LT,
LU,
MO,
MK,
MG,
MW,
MY,
MV,
ML,
MT,
MH,
MQ,
MR,
MU,
YT,
MX,
FM,
MD,
MC,
MN,
ME,
MS,
MA,
MZ,
MM,
NA,
NR,
NP,
NL,
NC,
NZ,
NI,
NE,
NG,
NU,
NF,
MP,
NO,
OM,
PK,
PW,
PS,
PA,
PG,
PY,
PE,
PH,
PN,
PL,
PT,
PR,
QA,
RE,
RO,
RU,
RW,
BL,
SH,
KN,
LC,
MF,
PM,
VC,
WS,
SM,
ST,
SA,
SN,
RS,
SC,
SL,
SG,
SX,
SK,
SI,
SB,
SO,
ZA,
GS,
SS,
ES,
LK,
SD,
SR,
SJ,
SZ,
SE,
CH,
SY,
TW,
TJ,
TZ,
TH,
TL,
TG,
TK,
TO,
TT,
TN,
TR,
TM,
TC,
TV,
UG,
UA,
AE,
GB,
UM,
UY,
UZ,
VU,
VE,
VN,
VG,
VI,
WF,
EH,
YE,
ZM,
ZW,
US
business_label
string | null

The label identifying the specific business unit or profile under which this payment was processed by the merchant.

business_sub_label
string | null

An optional sub-label for further categorization of the business unit or profile used for this payment.

allowed_payment_method_types
enum<string>[] | null

Allowed Payment Method Types for a given PaymentIntent

ephemeral_key
object

ephemeral_key for the customer_id mentioned

manual_retry_allowed
boolean | null

If true the payment can be retried with same or different payment method which means the confirm call can be made again.

connector_transaction_id
string | null

A unique identifier for a payment provided by the connector

Example:

"993672945374576J"

frm_message
object

frm message is an object sent inside the payments response...when frm is invoked, its value is Some(...), else its None

metadata
object | null

You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.

connector_metadata
object

Some connectors like Apple Pay, Airwallex and Noon might require some additional information, find specific details in the child attributes below.

feature_metadata
object

additional data that might be required by hyperswitch

reference_id
string | null

reference(Identifier) to the payment at connector side

Example:

"993672945374576J"

profile_id
string | null

The business profile that is associated with this payment

surcharge_details
object

Details of surcharge applied on this payment, if applicable

merchant_decision
string | null

Denotes the action(approve or reject) taken by merchant in case of manual review. Manual review can occur when the transaction is marked as risky by the frm_processor, payment processor or when there is underpayment/over payment incase of crypto payment

merchant_connector_id
string | null

Identifier of the connector ( merchant connector account ) which was chosen to make the payment

incremental_authorization_allowed
boolean | null

If true, incremental authorization can be performed on this payment, in case the funds authorized initially fall short.

authorization_count
integer | null

Total number of authorizations happened in an incremental_authorization payment

incremental_authorizations
object[] | null

List of incremental authorizations happened to the payment

external_authentication_details
object

Details of external authentication

external_3ds_authentication_attempted
boolean | null

Flag indicating if external 3ds authentication is made or not

expires_on
string<date-time> | null

Date Time for expiry of the payment

Example:

"2022-09-10T10:11:12Z"

fingerprint
string | null

Payment Fingerprint, to identify a particular card. It is a 20 character long alphanumeric code.

browser_info
object

Browser information to be used for 3DS 2.0

payment_channel

Describes the channel through which the payment was initiated.

Available options:
ecommerce
payment_method_id
string | null

A unique identifier for the payment method used in this payment. If the payment method was saved or tokenized, this ID can be used to reference it for future transactions or recurring payments.

network_transaction_id
string | null

The network transaction ID is a unique identifier for the transaction as recognized by the payment network (e.g., Visa, Mastercard), this ID can be used to reference it for future transactions or recurring payments.

payment_method_status
enum<string>

Payment Method Status

Available options:
active,
inactive,
processing,
awaiting_data
updated
string<date-time> | null

Date time at which payment was updated

Example:

"2022-09-10T10:11:12Z"

split_payments
object

Charge Information

frm_metadata
object | null

You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. FRM Metadata is useful for storing additional, structured information on an object related to FRM.

extended_authorization_applied
boolean | null

flag that indicates if extended authorization is applied on this payment or not

request_extended_authorization
boolean | null
default:false

Optional boolean value to extent authorization period of this payment

capture method must be manual or manual_multiple

capture_before
string<date-time> | null

date and time after which this payment cannot be captured

merchant_order_reference_id
string | null

Merchant's identifier for the payment/invoice. This will be sent to the connector if the connector provides support to accept multiple reference ids. In case the connector supports only one reference id, Hyperswitch's Payment ID will be sent as reference.

Maximum length: 255
Example:

"Custom_Order_id_123"

order_tax_amount
integer

This Unit struct represents MinorUnit in which core amount works

connector_mandate_id
string | null

Connector Identifier for the payment method

card_discovery
enum<string>

Indicates the method by which a card is discovered during a payment

Available options:
manual,
saved_card,
click_to_pay
force_3ds_challenge
boolean | null

Indicates if 3ds challenge is forced

force_3ds_challenge_trigger
boolean | null

Indicates if 3ds challenge is triggered

issuer_error_code
string | null

Error code received from the issuer in case of failed payments

issuer_error_message
string | null

Error message received from the issuer in case of failed payments

is_iframe_redirection_enabled
boolean | null

Indicates if the redirection has to open in the iframe

whole_connector_response
string | null

Contains whole connector response

enable_partial_authorization
boolean | null

Allow partial authorization for this payment

enable_overcapture
boolean | null

Bool indicating if overcapture must be requested for this payment

is_overcapture_enabled
boolean | null

Boolean indicating whether overcapture is effectively enabled for this payment

network_details
object