Skip to content

Stripe: Create a 3 DS Authentication

Stripe threeDSecure.postThreeDsecureAuthentications: arguments, response, policy and SDK examples.

← Three d secure operations · Get started

Operation stripe.postthreedsecureauthentications

Provider route: POST /v1/three_d_secure/authentications. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/stripe with npm, or alter-sdk-stripe with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { StripeIntegration } from "@alter-ai/stripe";
async function execute(input: Parameters<StripeIntegration["threeDSecure"]["postThreeDsecureAuthentications"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new StripeIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.threeDSecure.postThreeDsecureAuthentications(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_stripe import StripeIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = StripeIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.three_d_secure.post_three_dsecure_authentications(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
headersobjectOptionalAdditional keys: not allowed
headers.Idempotency-KeystringOptionalMinimum length: 1
Maximum length: 255
bodyobjectRequired within parentAdditional keys: not allowed
body.acquirer_detailsobjectOptionalContains additional details about the acquirer for this 3DS Authentication.

Refer to the [Pass acquirer details and directory server section of the standalone 3DS guide](/payments/3d-secure/standalone-3d-secure#pass-acquirer-details-and-directory-server) for more information.
body.acquirer_details.acquirer_binstringRequired within parentMaximum length: 11
body.acquirer_details.acquirer_countrystringRequired within parentMaximum length: 5000
body.acquirer_details.acquirer_merchant_idstringRequired within parentMaximum length: 35
body.acquirer_details.mccstringOptionalMaximum length: 5000
body.acquirer_details.merchant_namestringOptionalMaximum length: 40
body.acquirer_details.requestor_idstringOptionalMaximum length: 35
body.amountintegerOptionalA non-negative integer representing the amount in the [smallest currency unit](/currencies#zero-decimal). You can’t include this parameter if `message_category` is `non_payment_authentication`
body.channelobjectRequired within parentContains additional details on the channel used for this 3DS Authentication.
body.channel.browserobjectOptional
body.channel.browser.accept_headerstringRequired within parentMaximum length: 2048
body.channel.browser.color_depthintegerOptional
body.channel.browser.device_idstringOptionalMaximum length: 64
body.channel.browser.ip_addressstringRequired within parentMaximum length: 45
body.channel.browser.java_enabledbooleanOptional
body.channel.browser.javascript_enabledbooleanRequired within parent
body.channel.browser.languagestringRequired within parentMaximum length: 35
body.channel.browser.screen_heightintegerOptional
body.channel.browser.screen_widthintegerOptional
body.channel.browser.timezone_offsetintegerOptional
body.channel.browser.user_agentstringRequired within parentMaximum length: 2048
body.channel.three_r_iobjectOptional
body.channel.three_r_i.previous_authenticationstringRequired within parentMaximum length: 5000
body.channel.three_r_i.typestringRequired within parentOne of: delayed_shipment, other_payment, recurring, split_shipment
body.channel.typestringRequired within parentOne of: browser, three_r_i
body.currencystringOptionalThree-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
Format: currency
body.directory_serverstringOptionalThe 3DS directory server with which this 3DS Authentication was processed.
One of: american_express, cartes_bancaires, discover, mastercard, visa
body.expandarrayOptionalSpecifies which fields in the response should be expanded.
body.expand[]stringEach itemMaximum length: 5000
body.flow_preferenceobjectOptionalContains additional details on your flow preference for this 3DS Authentication.

Refer to the [Specify a flow preference section of the standalone 3DS guide](/payments/3d-secure/standalone-3d-secure#specify-a-flow-preference) for more information.
body.flow_preference.challengeobjectOptional
body.flow_preference.challenge.typestringRequired within parentOne of: mandated, preferred
body.flow_preference.data_shareobjectOptional
body.flow_preference.data_share.typestringRequired within parentOne of: ds_specific, emv_standard
body.flow_preference.frictionlessobjectOptional
body.flow_preference.frictionless.typestringRequired within parentOne of: low_risk, none
body.flow_preference.typestringRequired within parentOne of: challenge, data_share, frictionless
body.future_usageobjectOptionalContains information about future usage of this 3DS Authentication
body.future_usage.installmentobjectOptional
body.future_usage.installment.amountintegerRequired within parent
body.future_usage.installment.expiryobjectRequired within parent
body.future_usage.installment.expiry.datestringOptionalMaximum length: 5000
body.future_usage.installment.expiry.typestringRequired within parentOne of: date, never
body.future_usage.installment.intervalstringOptionalOne of: day
body.future_usage.installment.interval_countintegerOptional
body.future_usage.installment.numberintegerRequired within parent
body.future_usage.recurringobjectOptional
body.future_usage.recurring.amountintegerRequired within parent
body.future_usage.recurring.expiryobjectRequired within parent
body.future_usage.recurring.expiry.datestringOptionalMaximum length: 5000
body.future_usage.recurring.expiry.typestringRequired within parentOne of: date, never
body.future_usage.recurring.intervalstringOptionalOne of: day
body.future_usage.recurring.interval_countintegerOptional
body.future_usage.typestringRequired within parentOne of: card_on_file, installment, recurring
body.message_categorystringRequired within parentIndicates whether this 3DS Authentication is being performed for a payment or non-payment use case.
One of: non_payment_authentication, payment_authentication
body.metadataJSONOptionalSet of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`.
body.metadata (anyOf 1)objectAlternativeAdditional keys: see wildcard field
body.metadata (anyOf 1).*stringAdditional keys
body.metadata (anyOf 2)stringAlternativeOne of:
body.payment_methodstringOptionalID of the payment method (a PaymentMethod object) to attach to this 3DS Authentication.
Maximum length: 255
body.payment_method_dataobjectOptionalHash used to generate the PaymentMethod to be used for this Authentication. This is mutually exclusive with the `payment_method` parameter.
body.payment_method_data.billing_detailsobjectOptional
body.payment_method_data.billing_details.addressobjectOptional
body.payment_method_data.billing_details.address.citystringOptionalMaximum length: 50
body.payment_method_data.billing_details.address.countrystringOptionalMaximum length: 5000
body.payment_method_data.billing_details.address.line1stringOptionalMaximum length: 50
body.payment_method_data.billing_details.address.line2stringOptionalMaximum length: 50
body.payment_method_data.billing_details.address.postal_codestringOptionalMaximum length: 16
body.payment_method_data.billing_details.address.statestringOptionalMaximum length: 3
body.payment_method_data.billing_details.emailstringOptional
body.payment_method_data.billing_details.namestringOptionalMaximum length: 5000
body.payment_method_data.billing_details.phonestringOptional
body.payment_method_data.cardJSONRequired within parent
body.payment_method_data.card (anyOf 1)objectAlternative
body.payment_method_data.card (anyOf 1).cvcstringOptionalMaximum length: 5000
body.payment_method_data.card (anyOf 1).exp_monthintegerRequired within parent
body.payment_method_data.card (anyOf 1).exp_yearintegerRequired within parent
body.payment_method_data.card (anyOf 1).numberstringRequired within parentMaximum length: 5000
body.payment_method_data.card (anyOf 2)objectAlternative
body.payment_method_data.card (anyOf 2).tokenstringRequired within parentMaximum length: 5000
body.payment_method_data.typestringRequired within parentOne of: card
body.reasonstringOptionalThe reason for invoking standalone 3DS. This is tailored specifically for cases when you want Stripe to help determine the standalone 3DS flow to fit your use case instead of needing to select a specific 3DS flow.

This parameter is exclusive with `flow_preference`. You can either use `reason` for controlling 3DS according to your business requirements, or use `flow_preference` for having fine-grained control over your 3DS flow preference.
One of: cardholder_authentication, issuer_requested, liability_shift, processing_costs, regulatory_compliance
body.shipping_addressobjectOptionalThe shipping address requested by the cardholder. You should try to include as complete address information as possible.
body.shipping_address.citystringOptionalMaximum length: 50
body.shipping_address.countrystringOptionalMaximum length: 5000
body.shipping_address.line1stringOptionalMaximum length: 50
body.shipping_address.line2stringOptionalMaximum length: 50
body.shipping_address.postal_codestringOptionalMaximum length: 16
body.shipping_address.statestringOptionalMaximum length: 3
body.submitstringOptionalSet to `always` to skip the fingerprinting step and submit this Authentication immediately or `if_fingerprinting_not_supported` to submit this Authentication only if fingerprinting is not available. This parameter defaults to `never`.

Refer to the [Submit at creation section of the standalone 3DS guide](/payments/3d-secure/standalone-3d-secure#submit-at-creation) for more information.
One of: always, if_fingerprinting_not_supported, never

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$ModelRootExpand Cancel a 3 DS Authentication — response body

Referenced models: Cancel a 3 DS Authentication — response body

720 more schemas are linked from the tables above, on the schema pages.

Cancel a 3 DS Authentication — response body
FieldTypePresenceDescription and constraints
$objectRootThe Standalone 3DS API allows you to run EMV 3D Secure (3DS) authentication using Stripe while authorizing the payment with any PSP.

Related guide: [Standalone 3DS](/payments/3d-secure/standalone-3d-secure)
acquirer_detailsModelOptionalExpand Cancel a 3 DS Authentication — response body — acquirer details
amountJSONOptional
amount (anyOf 1)integerAlternativeThe amount for this 3DS Authentication.
amount (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
challenge_urlstringOptionalThe URL for presenting a challenge to your cardholder, present if status is requires_challenge.
Maximum length: 5000
channelModelRequired within parentExpand Cancel a 3 DS Authentication — response body — channel
createdJSONRequired within parent
created (anyOf 1)integerAlternativeTime at which the object was created. Measured in seconds since the Unix epoch.
Format: unix-time
created (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
currencystringOptionalThree-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
Format: currency
directory_serverstringRequired within parentThe 3DS directory server with which this 3DS Authentication was processed.
Known values: american_express, cartes_bancaires, discover, mastercard, visa
fingerprinting_urlstringOptionalThe URL for performing issuer fingerprinting, present if fingerprinting is supported for the given payment method.
Maximum length: 5000
flow_preferenceModelOptionalExpand Cancel a 3 DS Authentication — response body — flow preference
future_usageModelOptionalExpand Cancel a 3 DS Authentication — response body — future usage
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
livemodebooleanRequired within parentIf the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.
message_categorystringRequired within parentIndicates whether this 3DS Authentication is being performed for a payment or non-payment use case.
Known values: non_payment_authentication, payment_authentication
metadataJSONOptional
metadata (anyOf 1)objectAlternativeSet of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
Additional keys: see wildcard field
metadata (anyOf 1).*stringAdditional keysMaximum length: 500
metadata (anyOf 2)nullAlternative
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: three_d_secure.authentication
outcomestringOptionalThe outcome of this 3DS Authentication.
Known values: abandoned, attempt_acknowledged, authenticated, canceled, denied, informational, internal_error, not_supported, not_triggered, processing_error, rejected
outcome_detailsModelOptionalExpand Cancel a 3 DS Authentication — response body — outcome details
payment_methodJSONRequired within parentID of the payment method (a PaymentMethod object) to attach to this 3DS Authentication.
payment_method (anyOf 1)stringAlternativeMaximum length: 5000
payment_method (anyOf 2)ModelAlternativeExpand Create a Payment Method — response body
reasonstringOptionalThe reason for invoking this 3DS Authentication.
Known values: cardholder_authentication, issuer_requested, liability_shift, processing_costs, regulatory_compliance
shipping_addressModelOptionalExpand Cancel a 3 DS Authentication — response body — shipping address
statusstringRequired within parentStatus of this Authentication.
Known values: canceled, error, failed, requires_challenge, requires_submission, succeeded

Referenced models: Create a Payment Method — response body, Cancel a 3 DS Authentication — response body — acquirer details, Cancel a 3 DS Authentication — response body — channel, Cancel a 3 DS Authentication — response body — flow preference, Cancel a 3 DS Authentication — response body — future usage, Cancel a 3 DS Authentication — response body — outcome details, Cancel a 3 DS Authentication — response body — shipping address

Cancel a 3 DS Authentication — response body — acquirer details
FieldTypePresenceDescription and constraints
$objectRootContains additional details about the acquirer for a 3DS Authentication.
acquirer_binstringOptionalThe Acquirer BIN (specific to the directory_server).
Maximum length: 5000
acquirer_countrystringOptionalThe two-letter country code of the acquirer ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
Maximum length: 5000
acquirer_merchant_idstringOptionalThe Merchant ID (or Card Acceptor ID) that your acquirer assigned you (specific to the directory_server).
Maximum length: 5000
mccstringOptionalThe [merchant category code](https://en.wikipedia.org/wiki/Merchant_category_code) as defined by each payment system or directory server.
Maximum length: 5000
merchant_namestringOptionalThe merchant name assigned by the acquirer or payment system. Same name used in the authorization message as defined in [ISO 8583](https://en.wikipedia.org/wiki/ISO_8583).
Maximum length: 5000
requestor_idstringOptionalRequestor ID if you’re enrolled in the card network’s 3DS program. Otherwise, you can omit this field because Stripe assigns a Requestor ID with the card networks.
Maximum length: 5000
Cancel a 3 DS Authentication — response body — channel
FieldTypePresenceDescription and constraints
$objectRootContains details on the channel used (browser, 3RI) for a standalone 3DS Authentication.
browserModelOptionalExpand Cancel a 3 DS Authentication — response body — channel browser
three_r_iModelOptionalExpand Cancel a 3 DS Authentication — response body — channel three r i
typestringRequired within parentType of channel you would prefer to use for this 3DS Authentication. Only browser.
Known values: browser, three_r_i

Referenced models: Cancel a 3 DS Authentication — response body — channel browser, Cancel a 3 DS Authentication — response body — channel three r i

Cancel a 3 DS Authentication — response body — flow preference
FieldTypePresenceDescription and constraints
$objectRootContains details of the flow preference used for a standalone 3DS Authentication.
challengeModelOptionalExpand Cancel a 3 DS Authentication — response body — flow preference challenge
data_shareModelOptionalExpand Cancel a 3 DS Authentication — response body — flow preference data share
frictionlessModelOptionalExpand Cancel a 3 DS Authentication — response body — flow preference frictionless
typestringRequired within parentType of flow you requested for this 3DS Authentication.
Known values: challenge, data_share, frictionless

Referenced models: Cancel a 3 DS Authentication — response body — flow preference challenge, Cancel a 3 DS Authentication — response body — flow preference data share, Cancel a 3 DS Authentication — response body — flow preference frictionless

Cancel a 3 DS Authentication — response body — future usage
FieldTypePresenceDescription and constraints
$objectRootContains information about the future authorisations related to this authentication
installmentModelOptionalExpand Cancel a 3 DS Authentication — response body — future usage installment
recurringModelOptionalExpand Cancel a 3 DS Authentication — response body — future usage recurring
typestringRequired within parentThe type of future usage declared for this 3DS Authentication.
Known values: card_on_file, installment, recurring

Referenced models: Cancel a 3 DS Authentication — response body — future usage installment, Cancel a 3 DS Authentication — response body — future usage recurring

Create a Payment Method — response body — zip
FieldTypePresenceDescription and constraints
$objectRoot

SDK function policy ID: stripe.postthreedsecureauthentications. Catalog operation: PostThreeDSecureAuthentications. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Pinned headers: {"Stripe-Version": "2026-09-30.endive"}

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.