Skip to content

Report that the device-fingerprint iframe settled, and authenticate

POST
/payments/card/authentications/{id}/fingerprint

Both halves happen in one call on purpose: the processor’s 30-second step-up window opens when the issuer answers, so a second round-trip here would spend that budget on our own plumbing.

The response is terminal (authenticated / failed) or challenge_pending with the step-up handoff.

id
required

Our identifier for an authentication.

string
Example
ca_9Z3K01ARZ3NDEKTSV4RRFFQ69G5FAV

Authentication ID

What the browser reports once the device-fingerprint iframe settles.

Neither reference nor device_fingerprint is required. The engine already holds the processor’s collection reference from create and sends that on authenticate; device_fingerprint is the fallback it sends when it holds none. An authentication whose device-data-initialize returned no methodData has nothing to report and can post the card block alone.

object
billing_address
One of:
null
customer
One of:
null
device_fingerprint
One of:
null
key_id
required
string
layout
required
Array<object>
object
field
required
string
len
required
integer format: int32
payload
required

A card block for this call — the same one sent on create is fine. The engine never caches card material, so it is asked for again.

string
Example
eyJhbGciOiJSU0Et...ENCRYPTED...
reference

A processor reference the iframe handed back, if the client read one. Consulted only when the engine holds none from create; it never replaces the one it holds.

string | null

Issuer answered: authenticated, failed, or challenge_pending with a challenge handoff to submit within 30 seconds.

An authentication, as the merchant sees it.

Built by hand rather than derived on [CardAuthentication], for the same reason CheckoutSessionResponse is: the domain type holds things that must not be echoed. consumed_by, the processor’s own handle, and the merchant id are all deliberately absent — the merchant references the ca_ id, and nothing here needs the upstream one.

object
amount
required

A monetary amount in the currency’s minor units (e.g. cents for USD).

integer format: int64
Example
1000
challenge
One of:
null
created
required
integer format: int64
currency
required

Currently supported currencies by Paygasus Pay

string
Allowed values: USD
Example
USD
expires_at
required

When this authentication stops being usable, in every state — including authenticated: a verdict that has not been charged by this time expires and cannot be referenced. Once a charge has used it the field is informational.

integer format: int64
failure_reason

Why it failed, when it did.

string | null
fingerprint
One of:
null
id
required

Our identifier for an authentication.

string
Example
ca_9Z3K01ARZ3NDEKTSV4RRFFQ69G5FAV
livemode
required
boolean
object
required
string
status
required

The lifecycle of one 3DS run.

A plain enum with the state-specific data on [CardAuthentication] rather than in the variants, matching [crate::checkout_session::CheckoutSessionStatus] and unlike [crate::payment_intent::CardPaymentIntentStatus]. The reason is the repository: status is one column and the outcome fields are their own columns, so [std::str::FromStr] has to round-trip from the string alone.

string
Allowed values: created fingerprint_collected challenge_pending authenticated failed expired abandoned

No such authentication

object
error
required
object
code
required
string
message
required
string
param
string | null
retryable

When present and true, the caller may retry the same request.

boolean | null
type
required
string

Authentication is not awaiting a fingerprint, or changed while this request was in flight (re-read and retry)

object
error
required
object
code
required
string
message
required
string
param
string | null
retryable

When present and true, the caller may retry the same request.

boolean | null
type
required
string

Processor unreachable; safe to retry

object
error
required
object
code
required
string
message
required
string
param
string | null
retryable

When present and true, the caller may retry the same request.

boolean | null
type
required
string