POST, PUT, GET) to perform functions on objects. For example, to determine whether to send an SCA challenge, send a POST request to the /three-ds/decision endpoint. Some requests include data in their message body. The 3DS API requires that data be in JSON format.
The 3DS API provides endpoints that enable you to:
- Delegate decisioning – determine whether to send an SCA.
- Notify a 3DS completion status.
- Receive an Advanced Authentication challenge.
- Update an authentication result to Marqeta.
Delegate decisioning - determine whether to send an SCA
Action:POSTEndpoint:
/three-ds/decision
Evaluate whether or not the cardholder will be prompted with a strong customer authentication (SCA) challenge to complete this authentication. To participate in the delegated decision service, your system must handle messages sent by the Marqeta platform and return the appropriate response. This is the URL of the decision service endpoint hosted in your environment, to which POST messages are submitted by the Marqeta platform.
Request header
Body field details
The following table describes the payload required to score an access control server (ACS) request.The ThreeDSDecisionRequest object
The message_extension object
The requester object
The cardholder_authentication_by_merchant object
The prior_cardholder_authentication object
The sdk object
The server object
The client_browser object
The device object
The cardholder_account object
The phones object
The statistics object
The directory_server object
This object describes information from the Directory Services (DS) in the network.The recurring object
The transaction object
Contains information about how the payment is being made.The card_acceptor object
Warning
This object reports information as supplied by the merchant, and could contain inaccurate or unexpected values.
This object reports information as supplied by the merchant, and could contain inaccurate or unexpected values.
The risk_indicators object
The delivery object
The gift_cards object
The pre_order object
The whitelist object
The AddressPhysical object
Provides details related to the cardholder’s shipping/billing address.The card_expiry_date object
ThreeDSDecisionResponse (response)
The response to an ACS decision request. Your decision service must respond to each delegated decision request with a decision ofCHALLENGE, DECLINE, or EXEMPT. Ensure that your response body adheres to the specifications in this section. You must include all required fields regardless of whether you challenge or exempt the request.
APIResponseWithErrors (response)
A list of problems with the request that the caller might be able to fix.Response codes
Sample request body
JSON
Sample response body
JSON
Notify a 3DS completion status
Action:POSTEndpoint:
/three-ds/challenge-result
Informs the Delegated 3DS decision service whether or not the strong customer authentication (SCA) challenge has succeeded, which is required to evaluate future transactions. This is the URL of the notification endpoint hosted in your environment, to which POST messages are submitted by the Marqeta platform.
Body field details
The following table describes the payload required to score an ACS request.The ThreeDSChallengeResultRequest object
DecisionServiceResponse (response)
Provides information regarding the call and how it was handled.Response codes
Sample request body
JSON
Sample response
JSON
Receive an Advanced Authentication challenge
Action:POSTEndpoint:
/three-ds/authentication
Stand up this endpoint to receive a cardholder challenge from Marqeta using Advanced Authentication. An Advanced Authentication request prompts you to challenge the cardholder using advanced methods such as biometrics or voice recognition. For details on the Advanced Authentication process, see Advanced Authentication and Advanced authentication lifecycle.
Request header
Body field details
The following table describes the payload required to authenticate a request.The ThreeDSAuthenticationRequest object
The transaction object
Contains information about how the payment is being made.The card_acceptor object
Warning
This object reports information as supplied by the merchant, and could contain inaccurate or unexpected values.
This object reports information as supplied by the merchant, and could contain inaccurate or unexpected values.
Response codes
Sample request body
JSON
Sample response
JSON
Update an authentication result to Marqeta
Action:POSTEndpoint URL:
https://authentication-acs.marqeta.com/v3/three-ds/authentication-result
Accepts the 3DS out-of-band/decoupled challenge result and informs the ACS of the cardholder authentication result. Use your Marqeta Core API credentials.
Body field details
The following table describes the response to an ACS authentication request.The ThreeDSAuthenticationResultRequest object
Response codes
Sample request body
JSON
Sample response
JSON
3D Secure webhook events
In addition to the endpoints described above, the Marqeta platform sends two webhook events to your registered webhook endpoint for every 3D Secure authentication performed on your program:threedstransition.initialization, when an authentication begins, and threedstransition.completion, when the authentication reaches its final state.
The two events are delivered independently, so design your integration to tolerate receiving a completion notification without a matching initialization notification, or a notification not arriving at all.
Ordering between the two events is not guaranteed, so treat the completion notification as authoritative for the authentication outcome.
Correlate the two notifications for a single authentication using acs_transaction_id.
For sample notification payloads, see 3D Secure transition events in Event Types.
New properties and new allowable values can be added to these objects without notice.
Ignore properties you don’t recognize, and treat an unrecognized allowable value as unknown rather than rejecting the payload.
Body field details
The initialization notification object
The completion notification object
The completion notification does not carry therequester object.
Use card_acceptor for merchant details, or correlate back to the initialization notification using acs_transaction_id.
The device object
The requester object
Included on the initialization notification only.The transaction object
The card_acceptor object
Included on both notifications, and the only merchant detail carried on the completion notification.transaction_reason allowable values
The following values apply to thetransaction_reason field, and are also part of the allowable values for cancel_reason.
FIDO_APPROVED, FIDO_REJECTED, FIDO_WITH_ASSURANCE_SIGNED, and FIDO_DELETION are net-new values, added to support Visa Payment Passkeys.CARD_AUTHENTICATION_FAILED- Card authentication failedUNKNOWN_DEVICE- Device is unknownUNSUPPORTED_DEVICE- Device is unsupportedEXCEEDS_FREQUENCY_LIMIT- Exceeds the authentication frequency limitEXPIRED_CARD- Card is expiredINVALID_CARD_NUMBER- Card number is invalidINVALID_TRANSACTION- Transaction is invalidNO_CARD_RECORD- No card record was foundSECURITY_FAILURE- Security failureSTOLEN_CARD- Card is reported stolenSUSPECTED_FRAUD- Suspected fraudTXN_NOT_PERMITTED_TO_CARDHOLDER- Transaction not permitted to the cardholderCARDHOLDER_NOT_ENROLLED- Cardholder is not enrolled in the serviceTRANSACTION_TIMEDOUT- Transaction timed out at the ACSLOW_CONFIDENCE- Low confidence in the authenticationMEDIUM_CONFIDENCE- Medium confidence in the authenticationHIGH_CONFIDENCE- High confidence in the authenticationVERY_HIGH_CONFIDENCE- Very high confidence in the authenticationEXCEEDS_MAX_CHALLENGES- Exceeds the ACS maximum number of challengesEXCEEDS_MAX_CHALLENGES_FOR_KBA- Exceeds the ACS maximum number of challenges for knowledge-based authenticationNON_PAYMENT_TRANSACTION_NOT_SUPPORTED- Non-payment transaction is not supportedTHREE_RI_NOT_SUPPORTED- 3RI transaction is not supportedACS_TECHNICAL_ISSUES- ACS technical issueDECOUPLED_AUTHENTICATION_NOT_REQUESTED- Decoupled authentication is required by the ACS but was not requested by the 3DS RequestorDECOUPLED_AUTHENTICATION_TIMED_OUT- 3DS Requestor decoupled maximum expiry time was exceededAUTHENTICATION_NOT_ATTEMPTED- Authentication was attempted but not performed by the cardholderTHREEDS_REQUESTOR_TRA_EXEMPTION- Transaction risk analysis was already performedTHREEDS_REQUESTOR_SCA_EXEMPTION- Strong customer authentication was already performedTHREEDS_REQUESTOR_DATA_SHARE_EXEMPTION- Data share onlyCORPORATE_PAYMENT_EXEMPTION- Corporate payment exemptionMERCHANT_INITIATED_TRANSACTION_PAYMENT_EXEMPTION- Merchant-initiated transaction payment exemptionLOW_VALUE_PAYMENT- Low value paymentISSUER_SCA_REQUIRED- Issuer requires strong customer authenticationNETWORK_SUSPECTED_BIN_ATTACK- Card network suspects a BIN attackNPA_FRICTIONLESS- Non-payment authentication completed frictionlessPROGRAM_NOT_ENROLLED_V220- Program is not enrolled for 3DS version 2.2.0FIDO_APPROVED- Passkey registration approved following a successful challengeFIDO_REJECTED- Passkey registration declined following a successful challengeFIDO_WITH_ASSURANCE_SIGNED- Passkey transaction with assurance signedFIDO_DELETION- Authentication completed frictionless because the request was to delete a passkey
cancel_reason allowable values
In addition to the transaction_reason allowable values,cancel_reason accepts the following cancellation-specific values:
CARDHOLDER_CANCEL- Challenge was cancelled by the cardholderCHALLENGE_CANCELLED_BY_TRANSACTION_ERROR- Challenge was cancelled due to a transaction errorTIMED_OUT_AT_ACS- Transaction timed out at the ACS; the intermediate CReq was not received by the ACSTIMED_OUT_AT_ACS_NO_CREQ- Transaction timed out at the ACS; the first CReq was not received by the ACSTIMED_OUT_AT_SDK- Transaction timed out at the SDKTIMED_OUT_DECOUPLED_AUTHENTICATION- Transaction timed out during decoupled authenticationTIMED_OUT_OOB_AUTHENTICATION- Transaction timed out during out-of-band (OOB) authenticationUNKNOWN- Reason is unknown