Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion content/docs/admin-api/guides/payment-methods/bankcard.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -467,9 +467,18 @@ Older integrations load `iframe-v1.min.js` and call `Spreedly` directly. Replace
3DS2 payments are fully supported via the Admin API to process the customer through an authentication flow, with the final transaction information and results provided back to your application.

<Callout type="info">
Your store must have a 3DS2-enabled gateway to process 3DS2 transactions.
Your store must have a 3DS2-enabled gateway to process 3DS2 transactions. A gateway is 3DS2-enabled when its `three_ds_mode` is `smart` or `always`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SUGGESTION: The two sentences in the callout are mashed together without a conjunction. Consider connecting them for readability, e.g. "Your store must have a 3DS2-enabled gateway to process 3DS2 transactions; a gateway is 3DS2-enabled when its three_ds_mode is smart or always."

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leaving as two sentences: each states one fact, and joining them with a semicolon doesn't read more clearly.

🤖 Addressed by Claude Code

</Callout>

### Smart mode gateways

A gateway in `smart` mode decides per order whether to use 3DS. Orders with a billing address in the United States, Canada, Australia or New Zealand skip 3DS unless they score above the store's risk tolerance. All other orders use 3DS. See [3DS2 Payments](https://docs.nextcommerce.com/docs/features/payments/3ds2-payments#smart-mode) for the full rules.

`payment_return_url` is required on every order to a `smart` gateway, including orders that end up skipping 3DS, because the gateway decides per order. Handle both responses:

- **3DS used:** the response carries a `payment_complete_url`. Continue with the redirect flow below.
- **3DS skipped:** the order is charged directly and the response is the created order, the same as a gateway with 3DS off.

### API payment redirect flow

<RedirectPaymentFlow />
Expand Down
48 changes: 45 additions & 3 deletions public/api/admin/2023-02-10.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6240,9 +6240,10 @@ components:
- integer
- 'null'
enable_3ds2:
description: Transactions are attempted with 3DS authentication.
description: Derived from `three_ds_mode`. True when the mode is `smart` or `always`.
title: Enable 3D Secure Transactions
type: boolean
readOnly: true
gateway_groups:
items:
$ref: '#/components/schemas/PaymentGatewayGroup'
Expand Down Expand Up @@ -6291,6 +6292,19 @@ components:
type:
- boolean
- 'null'
three_ds_mode:
Comment thread
next-devin marked this conversation as resolved.
description: |-
3DS mode for the gateway.

* `off` - Off
* `smart` - Smart
* `always` - Always On
enum:
- 'off'
- 'smart'
- 'always'
title: 3DS Mode
type: string
required:
- card_types
- currencies
Expand Down Expand Up @@ -21676,6 +21690,7 @@ webhooks:
is_default: false
name: string
re_attemp_intitial_charge: null
three_ds_mode: 'off'
event_id: a7a26ff2-e851-45b6-9634-d595f45458b7
event_type: gateway.created
object: gateway
Expand Down Expand Up @@ -21732,7 +21747,7 @@ webhooks:
minimum: 1
type: integer
enable_3ds2:
description: Transactions are attempted with 3DS authentication.
description: Derived from `three_ds_mode`. True when the mode is `smart` or `always`.
title: Enable 3D Secure Transactions
type: boolean
gateway_groups:
Expand Down Expand Up @@ -21891,6 +21906,19 @@ webhooks:
description: Reattempt soft declines with another gateway.
title: Re-attempt declined initial charge attempts
type: boolean
three_ds_mode:
description: |-
3DS mode for the gateway.

* `off` - Off
* `smart` - Smart
* `always` - Always On
enum:
- 'off'
- 'smart'
- 'always'
title: 3DS Mode
type: string
required:
- card_types
- currencies
Expand Down Expand Up @@ -22014,6 +22042,7 @@ webhooks:
is_default: false
name: string
re_attemp_intitial_charge: null
three_ds_mode: 'off'
event_id: a7a26ff2-e851-45b6-9634-d595f45458b7
event_type: gateway.updated
object: gateway
Expand Down Expand Up @@ -22070,7 +22099,7 @@ webhooks:
minimum: 1
type: integer
enable_3ds2:
description: Transactions are attempted with 3DS authentication.
description: Derived from `three_ds_mode`. True when the mode is `smart` or `always`.
title: Enable 3D Secure Transactions
type: boolean
gateway_groups:
Expand Down Expand Up @@ -22229,6 +22258,19 @@ webhooks:
description: Reattempt soft declines with another gateway.
title: Re-attempt declined initial charge attempts
type: boolean
three_ds_mode:
description: |-
3DS mode for the gateway.

* `off` - Off
* `smart` - Smart
* `always` - Always On
enum:
- 'off'
- 'smart'
- 'always'
title: 3DS Mode
type: string
required:
- card_types
- currencies
Expand Down
48 changes: 45 additions & 3 deletions public/api/admin/2024-04-01.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6555,9 +6555,10 @@ components:
- integer
- 'null'
enable_3ds2:
description: Transactions are attempted with 3DS authentication.
description: Derived from `three_ds_mode`. True when the mode is `smart` or `always`.
title: Enable 3D Secure Transactions
type: boolean
readOnly: true
Comment thread
next-devin marked this conversation as resolved.
gateway_groups:
items:
$ref: '#/components/schemas/PaymentGatewayGroup'
Expand Down Expand Up @@ -6606,6 +6607,19 @@ components:
type:
- boolean
- 'null'
three_ds_mode:
description: |-
3DS mode for the gateway.

* `off` - Off
* `smart` - Smart
* `always` - Always On
enum:
- 'off'
Comment thread
next-devin marked this conversation as resolved.
- 'smart'
- 'always'
title: 3DS Mode
type: string
required:
- card_types
- currencies
Expand Down Expand Up @@ -27049,6 +27063,7 @@ webhooks:
is_default: false
name: string
re_attemp_intitial_charge: null
three_ds_mode: 'off'
event_id: a7a26ff2-e851-45b6-9634-d595f45458b7
event_type: gateway.created
object: gateway
Expand Down Expand Up @@ -27105,7 +27120,7 @@ webhooks:
minimum: 1
type: integer
enable_3ds2:
description: Transactions are attempted with 3DS authentication.
description: Derived from `three_ds_mode`. True when the mode is `smart` or `always`.
title: Enable 3D Secure Transactions
type: boolean
gateway_groups:
Expand Down Expand Up @@ -27264,6 +27279,19 @@ webhooks:
description: Reattempt soft declines with another gateway.
title: Re-attempt declined initial charge attempts
type: boolean
three_ds_mode:
description: |-
3DS mode for the gateway.

* `off` - Off
* `smart` - Smart
* `always` - Always On
enum:
- 'off'
- 'smart'
- 'always'
title: 3DS Mode
type: string
required:
- card_types
- currencies
Expand Down Expand Up @@ -27387,6 +27415,7 @@ webhooks:
is_default: false
name: string
re_attemp_intitial_charge: null
three_ds_mode: 'off'
event_id: a7a26ff2-e851-45b6-9634-d595f45458b7
event_type: gateway.updated
object: gateway
Expand Down Expand Up @@ -27443,7 +27472,7 @@ webhooks:
minimum: 1
type: integer
enable_3ds2:
description: Transactions are attempted with 3DS authentication.
description: Derived from `three_ds_mode`. True when the mode is `smart` or `always`.
title: Enable 3D Secure Transactions
type: boolean
gateway_groups:
Expand Down Expand Up @@ -27602,6 +27631,19 @@ webhooks:
description: Reattempt soft declines with another gateway.
title: Re-attempt declined initial charge attempts
type: boolean
three_ds_mode:
description: |-
3DS mode for the gateway.

* `off` - Off
* `smart` - Smart
* `always` - Always On
enum:
- 'off'
- 'smart'
- 'always'
title: 3DS Mode
type: string
required:
- card_types
- currencies
Expand Down
48 changes: 45 additions & 3 deletions public/api/admin/unstable.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6513,9 +6513,10 @@ components:
- integer
- 'null'
enable_3ds2:
description: Transactions are attempted with 3DS authentication.
description: Derived from `three_ds_mode`. True when the mode is `smart` or `always`.
title: Enable 3D Secure Transactions
type: boolean
readOnly: true
gateway_groups:
items:
$ref: '#/components/schemas/PaymentGatewayGroup'
Expand Down Expand Up @@ -6564,6 +6565,19 @@ components:
type:
- boolean
- 'null'
three_ds_mode:
Comment thread
next-devin marked this conversation as resolved.
description: |-
3DS mode for the gateway.

* `off` - Off
* `smart` - Smart
* `always` - Always On
enum:
- 'off'
- 'smart'
- 'always'
title: 3DS Mode
type: string
required:
- card_types
- currencies
Expand Down Expand Up @@ -26883,6 +26897,7 @@ webhooks:
is_default: false
name: string
re_attemp_intitial_charge: null
three_ds_mode: 'off'
event_id: a7a26ff2-e851-45b6-9634-d595f45458b7
event_type: gateway.created
object: gateway
Expand Down Expand Up @@ -26939,7 +26954,7 @@ webhooks:
minimum: 1
type: integer
enable_3ds2:
description: Transactions are attempted with 3DS authentication.
description: Derived from `three_ds_mode`. True when the mode is `smart` or `always`.
title: Enable 3D Secure Transactions
type: boolean
gateway_groups:
Expand Down Expand Up @@ -27098,6 +27113,19 @@ webhooks:
description: Reattempt soft declines with another gateway.
title: Re-attempt declined initial charge attempts
type: boolean
three_ds_mode:
description: |-
3DS mode for the gateway.

* `off` - Off
* `smart` - Smart
* `always` - Always On
enum:
- 'off'
- 'smart'
- 'always'
title: 3DS Mode
type: string
required:
- card_types
- currencies
Expand Down Expand Up @@ -27221,6 +27249,7 @@ webhooks:
is_default: false
name: string
re_attemp_intitial_charge: null
three_ds_mode: 'off'
event_id: a7a26ff2-e851-45b6-9634-d595f45458b7
event_type: gateway.updated
object: gateway
Expand Down Expand Up @@ -27277,7 +27306,7 @@ webhooks:
minimum: 1
type: integer
enable_3ds2:
description: Transactions are attempted with 3DS authentication.
description: Derived from `three_ds_mode`. True when the mode is `smart` or `always`.
title: Enable 3D Secure Transactions
type: boolean
gateway_groups:
Expand Down Expand Up @@ -27436,6 +27465,19 @@ webhooks:
description: Reattempt soft declines with another gateway.
title: Re-attempt declined initial charge attempts
type: boolean
three_ds_mode:
description: |-
3DS mode for the gateway.

* `off` - Off
* `smart` - Smart
* `always` - Always On
enum:
- 'off'
- 'smart'
- 'always'
title: 3DS Mode
type: string
required:
- card_types
- currencies
Expand Down
Loading