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.
Available operations
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