| Time | Status | User Agent |  |
| :-- | :-- | :-- | :-- |
| Make a request to see history. |

#### URL Expired

The URL for this request expired after 30 days.

cardId

uuid

required

state

string

enum

Optional filter to retrieve only verifications in the given state.

completedfailedin-progress

Allowed:

`completed``failed``in-progress`

accept

string

enum

Defaults to application/hal+json

Generated from available response content types

application/hal+jsonapplication/problem+json

Allowed:

`application/hal+json``application/problem+json`

# ``200      Successful operation

object

\_links

object

required

self

object

required

self object

\_embedded

object

required

cardVerifications

array of objects

required

cardVerifications\*

object

\_links

object

required

\_links object

id

uuid

required

The unique identifier of the Verification entity.

subaccountId

uuid

required

The unique identifier of the subaccount related to this entity.

cardId

uuid

required

The unique identifier of the card related to this entity.

type

string

enum

required

Verification Step Type

`3DS`

currentStepId

string | null

enum

The identifier of the next step the client should execute. `null` when

the verification has no follow-up step — typically because the issuer

supports frictionless authentication, or because the card did not

require interactive 3DS. When `null`, `state` will be `completed` on the

creation response and clients should not call any `/steps/...` endpoint.

On retrieved/listed verifications, `currentStepId` is also `null` with

`state: failed` when the card was declined synchronously at creation

(the creation call returned `400`, and the attempt is persisted as a

failed verification with its `failureReason`).

For the HIGHEST tier, a frictionless 3DS outcome does NOT complete the
verification: it returns `stripe-holds-pending` (the cardholder must

initiate two small verification holds via `/steps/place-holds`), which

then advances to `stripe-amount-confirm` (the cardholder reads the two

amounts back via `/steps/amount-confirm`).

`fingerprint``challenge``stripe-3ds``stripe-holds-pending``stripe-amount-confirm``null`

state

string

enum

required

Current Verification state

`completed``failed``in-progress`

clientSecret

string

Stripe SetupIntent or PaymentIntent client secret, used by the client to run `stripe.handleNextAction`. Returned whenever the verification is on the Stripe 3DS step — on the creation response (`POST /card-verifications/3ds`) and on the retrieve response (`GET /card-verifications/3ds/{verificationId}`) while `currentStepId` is `stripe-3ds`.

stripePublishableKey

string

Stripe publishable key to initialize Stripe.js on the client. Returned alongside `clientSecret` (creation response and retrieve response while `currentStepId` is `stripe-3ds`).

authenticationFlow

string | null

enum

The 3DS authentication flow attested by the issuer, surfaced at the terminal state.

`challenge` = the cardholder actively authenticated; `frictionless` = the issuer approved

without interaction; `null` = 3DS was not engaged (e.g. a low-risk automatic skip).

`challenge``frictionless``null`

failureReason

object

Normalized, customer-facing reason the verification failed. Present only when

`state` is `failed` — read it to triage the failure (category, retryability,

and the issuer's message). See the `FailureReason` schema.

failureReason object

createdAt

date-time

required

Date and time when this resource was created, in UTC, following ISO 8601 format.

updatedAt

date-time

required

Date and time when this resource was last updated, in UTC, following ISO 8601 format.

totalItems

integer

required

# ``401      Authentication credentials were either missing or incorrect

# ``403      Authentication credentials used do not have permissions to perform the request

# ``500      The server encountered an unexpected condition that prevented it from fulfilling the request

Updated 18 days ago

* * *

ShellNodeRubyPHPPython

Bearer

```

xxxxxxxxxx

curl --request GET \

--url https://api.astrada.co/card-verifications/3ds \

--header 'accept: application/hal+json'
```

```

xxxxxxxxxx

{

"_links": {

"self": {

"href": "/card-verifications/3ds?cardId=8309b5f8-d5d8-49bb-9001-38bf1bb0f1e4&state=failed"

}

},

"_embedded": {

"cardVerifications": [\
\
      {\
\
        "_links": {\
\
          "self": {\
\
            "href": "/card-verifications/3ds/9fab1bea-bc1e-4757-bd47-479422e5983b"\
\
          },\
\
          "steps": {\
\
            "href": "/card-verifications/3ds/9fab1bea-bc1e-4757-bd47-479422e5983b/steps"\
\
          }\
\
        },\
\
        "id": "9fab1bea-bc1e-4757-bd47-479422e5983b",\
\
        "subaccountId": "f297d659-c13d-4219-aeaa-e10a845140a5",\
\
        "cardId": "8309b5f8-d5d8-49bb-9001-38bf1bb0f1e4",\
\
        "type": "3DS",\
\
        "state": "failed",\
\
        "authenticationFlow": "frictionless",\
\
        "failureReason": {\
\
          "category": "authentication_declined",\
\
          "description": "The card issuer declined the 3-D Secure authentication.",\
\
          "retryable": true,\
\
          "code": "05",\
\
          "providerMessage": "The card issuer declined this authentication attempt."\
\
        },\
\
        "createdAt": "2024-01-04T18:53:32.000Z",\
\
        "updatedAt": "2024-01-04T18:55:12.000Z"\
\
      }\
\
    ]

},

"totalItems": 1

}

Updated18 days ago
