3DS Intents
Create and poll 3D Secure verification intents. During client-side checkout the SDK creates a 3DS intent for a payment method, redirects the cardholder to the issuer challenge, and polls the intent for completion. Callable with a publishable key.
export FRAME_API_KEY='sk_sandbox_...'
The 3DS Intent object
Attributes
Unique identifier for the 3DS intent.
String representing the object's type. Always three_ds_verification_intent.
ID of the customer associated with the underlying charge intent, if any.
ID of the payment method being verified.
Current status of the verification (e.g. issued, verified, failed).
URL the client redirects the cardholder to for the issuer challenge. Present while the intent is issued, otherwise null.
Unix timestamp of when verification completed, or null while still in progress.
Unix timestamp of when the intent was created.
Unix timestamp of when the intent was last updated.
true if the intent exists in live mode, false in test mode.
{
"id": "3ds_intent_1a2b3c",
"object": "three_ds_verification_intent",
"customer": "cus_1a2b3c",
"payment_method": "pm_1a2b3c",
"status": "issued",
"challenge_url": "https://api.framepayments.com/v1/evervault/3ds/callback/3ds_intent_1a2b3c",
"completed": null,
"created": 1721010605,
"updated": 1721010605,
"livemode": false
}
Create 3DS intent
Creates a 3D Secure verification intent for a payment method. The client SDK calls this during checkout to begin issuer authentication, then redirects the cardholder to the returned challenge_url.
Callable with a publishable key. The payment method must belong to the authenticated merchant.
If the payment method does not exist, or exists but is not eligible for a new verification (for example, one is already in progress), the request returns an identical 404 so that a publishable-key caller cannot use the response to enumerate payment methods.
Body parameters
ID of the payment method to verify.
Returns
The created 3DS verification intent
curl --request POST \
--url https://api.framepayments.com/v1/3ds/intents \
--header 'Authorization: Bearer API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"payment_method_id": "pm_1a2b3c"
}'
{
"id": "00000000-0000-4000-8000-000000000001",
"customer": "00000000-0000-4000-8000-000000000002",
"payment_method": "00000000-0000-4000-8000-000000000003",
"object": "three_ds_verification_intent",
"livemode": false,
"status": "issued",
"challenge_url": "https://3ds.evervault.com/?team=team_123&app=app_456&session=3ds_session_123&redirect=https%3A%2F%2Fapi.example.com%2Fv1%2Fevervault%2F3ds%2Fcallback%2F00000000-0000-4000-8000-000000000001",
"completed": null,
"created": 1745107200,
"updated": 1745107200
}
Retrieve 3DS intent
Retrieves a 3D Secure verification intent by ID. The client SDK polls this endpoint to observe the challenge status and detect completion.
Callable with a publishable key.
Path parameters
3DS intent ID
Returns
The 3DS verification intent
curl --request GET \
--url https://api.framepayments.com/v1/3ds/intents/a70cd72f-e74a-40f2-96a2-3f60714aac4a \
--header 'Authorization: Bearer API_KEY'
{
"id": "00000000-0000-4000-8000-000000000001",
"customer": "00000000-0000-4000-8000-000000000002",
"payment_method": "00000000-0000-4000-8000-000000000003",
"object": "three_ds_verification_intent",
"livemode": false,
"status": "issued",
"challenge_url": "https://3ds.evervault.com/?team=team_123&app=app_456&session=00000000-0000-4000-8000-000000000004&redirect=https%3A%2F%2Fapi.example.com%2Fv1%2Fevervault%2F3ds%2Fcallback%2F00000000-0000-4000-8000-000000000001",
"completed": null,
"created": 1745107200,
"updated": 1745107200
}
Resend 3DS challenge
Re-issues the 3D Secure challenge for an existing verification intent — for example when the cardholder requests a new one-time code.
Callable with a publishable key.
Path parameters
3DS intent ID
Returns
The re-issued 3DS verification intent
curl --request POST \
--url https://api.framepayments.com/v1/3ds/intents/a70cd72f-e74a-40f2-96a2-3f60714aac4a/resend \
--header 'Authorization: Bearer API_KEY'
{
"id": "00000000-0000-4000-8000-000000000001",
"customer": "00000000-0000-4000-8000-000000000002",
"payment_method": "00000000-0000-4000-8000-000000000003",
"object": "three_ds_verification_intent",
"livemode": false,
"status": "issued",
"challenge_url": "https://3ds.evervault.com/?team=team_123&app=app_456&session=3ds_session_123&redirect=https%3A%2F%2Fapi.example.com%2Fv1%2Fevervault%2F3ds%2Fcallback%2F00000000-0000-4000-8000-000000000001",
"completed": null,
"created": 1745107200,
"updated": 1745107200
}