[<< Back to Modular Home](/products/modular) # Sequence diagrams - stored card using a Worldpay Token ## Customer Initiated Transactions (CITs) Store card details for future CITs. ### Creating a stored card Creating a token, authentication using 3DS and using the token as part of a card payment. API only (includes 3DS) For use with future Customer Initiated Payments (CIT) Using: 1. [Tokens API](/products/tokens/) 2. [3DS API](/products/3ds/) 3. [Card Payments API](/products/card-payments/) ```mermaid sequenceDiagram participant Browser participant Merchant_Frontend participant Merchant_Backend participant Tokens_API participant 3DS_API participant Card_Payments_API participant Issuers Browser->>Merchant_Frontend: Click Pay Merchant_Frontend->>Merchant_Backend: Pay Merchant_Backend->>Tokens_API: Tokens request Tokens_API->>Merchant_Backend: Tokens response Merchant_Backend->>3DS_API: deviceDataInitialization request Note left of 3DS_API: Includes Worldpay Token 3DS_API->>Merchant_Backend: deviceDataInitialization response Merchant_Backend->>Merchant_Frontend: DeviceData - BIN/JWT/URL Merchant_Frontend->>Browser: 3DS Device Data form Browser-->>Issuers: Form POST Issuers-->>Browser: PostMessage: dfReferenceId Merchant_Backend->>3DS_API: authentication request Note left of 3DS_API: Includes Worldpay Token 3DS_API->>Merchant_Backend: Authentication response Merchant_Backend->>Merchant_Frontend: Challenge JWT/URL Merchant_Frontend->>Browser: 3DS challenge form Browser-->>Issuers: Form POST Issuers-->>Merchant_Backend: `returnUrl` specified in authentication request Note right of Merchant_Frontend: Update or close challenge window on website Merchant_Backend->>3DS_API: Verification request 3DS_API->>Merchant_Backend: Verification response Note right of Merchant_Frontend: Apply authentication details in payment<br> E.g. eci, authenticationValue etc Merchant_Backend->>Card_Payments_API: customerInitiatedTransactions request Note over Merchant_Backend,Card_Payments_API: Set `customerAgreement.type: cardOnFile` <br> `customerAgreement.storedCardUsage: first` Note right of Merchant_Backend: Includes token Card_Payments_API->>Merchant_Backend: customerInitiatedTransactions response Merchant_Backend->>Card_Payments_API: Settlement request Card_Payments_API->>Merchant_Backend: Settlement response ``` Using Checkout SDK (includes 3DS) Using the Checkout SDK, for use with future Customer Initiated Payments (CITs). Using: 1. [Checkout SDK](/products/checkout/) 2. [Verified Tokens API](/products/verified-tokens/) - for Worldpay Token creation 3. [3DS API](/products/3ds/) 4. [Card Payments API](/products/card-payments/) ```mermaid sequenceDiagram participant Browser participant Merchant_Frontend participant Merchant_Backend participant Checkout_Sessions participant Verified_Token_API participant 3DS_API participant Card_Payments_API Browser->>Merchant_Frontend: Click Pay Merchant_Frontend->>Checkout_Sessions: Create session Checkout_Sessions->>Merchant_Frontend: Return session Merchant_Frontend->>Merchant_Backend: Pay Merchant_Backend->>Verified_Token_API: Verified token request Note left of Verified_Token_API: Includes session Verified_Token_API->>Merchant_Backend: Verified token response Note right of Merchant_Backend: Worldpay Token returned Merchant_Backend->>3DS_API: deviceDataInitialization request Note left of 3DS_API: Includes Worldpay Token 3DS_API->>Merchant_Backend: deviceDataInitialization response Merchant_Backend->>Merchant_Frontend: DeviceData - BIN/JWT/URL Merchant_Frontend->>Browser: 3DS Device Data form Browser-->>Issuers: Form POST Issuers-->>Browser: PostMessage: dfReferenceId Merchant_Backend->>3DS_API: authentication request Note left of 3DS_API: Includes Worldpay Token 3DS_API->>Merchant_Backend: Authentication response Merchant_Backend->>Merchant_Frontend: Challenge JWT/URL Merchant_Frontend->>Browser: 3DS challenge form Browser-->>Issuers: Form POST Issuers-->>Merchant_Backend: `returnUrl` specified in authentication request Note right of Merchant_Frontend: Update or close challenge window on website Merchant_Backend->>3DS_API: Verification request 3DS_API->>Merchant_Backend: Verification response Note right of Merchant_Frontend: Apply authentication details in payment
E.g. eci, authenticationValue etc Merchant_Backend->>Card_Payments_API: customerInitiatedTransactions request Note over Merchant_Backend,Card_Payments_API: Set `customerAgreement.type: cardOnFile`
`customerAgreement.storedCardUsage: first` Note right of Merchant_Backend: Includes Worldpay Token Card_Payments_API->>Merchant_Backend: customerInitiatedTransactions response Merchant_Backend->>Card_Payments_API: Settlement request Card_Payments_API->>Merchant_Backend: Settlement response ``` ### Using a stored card (CIT) Using a token with 3DS authentication and using the token as part of a card payment. Using: 1. [3DS API](/products/3ds/) 2. [Card Payments API](/products/card-payments/) ```mermaid sequenceDiagram participant Browser participant Merchant_Frontend participant Merchant_Backend participant 3DS_API participant Card_Payments_API participant Issuers Browser->>Merchant_Frontend: Click Pay Merchant_Frontend->>Merchant_Backend: Pay Merchant_Backend->>3DS_API: deviceDataInitialization request Note right of Merchant_Backend: Includes token 3DS_API->>Merchant_Backend: deviceDataInitialization response Merchant_Backend->>Merchant_Frontend: DeviceData - BIN/JWT/URL Merchant_Frontend->>Browser: 3DS Device Data form Browser-->>Issuers: Form POST Issuers-->>Browser: PostMessage: dfReferenceId Merchant_Backend->>3DS_API: Authentication request Note right of Merchant_Backend: Includes Token 3DS_API->>Merchant_Backend: Authentication response Merchant_Backend->>Merchant_Frontend: Challenge JWT/URL Merchant_Frontend->>Browser: 3DS challenge form Browser-->>Issuers: Form POST Issuers-->>Merchant_Backend: `returnUrl` specified in authentication request Note right of Merchant_Frontend: Update or close challenge window on website Merchant_Backend->>3DS_API: Verification request 3DS_API->>Merchant_Backend: Verification response Note right of Merchant_Frontend: Apply authentication details in payment
E.g. eci, authenticationValue etc Merchant_Backend->>Card_Payments_API: customerInitiatedTransactions request Note right of Merchant_Backend: Includes token & 3DS authentication details Card_Payments_API->>Merchant_Backend: customerInitiatedTransactions response Merchant_Backend->>Card_Payments_API: Settlement request Card_Payments_API->>Merchant_Backend: Settlement response ``` ## Merchant Initiated Transactions ### Setup recurring customer agreement Request 3DS authentication with the challenge set as mandated for SCA compliance. Send a card payments Customer Initiated Transaction (CIT) request. API only (includes 3DS) Using: 1. [3DS API](/products/3ds/) 2. [Card Payments API](/products/card-payments/) ```mermaid sequenceDiagram participant Browser participant Merchant_Frontend participant Merchant_Backend participant 3DS_API participant Card_Payments_API participant Issuers Browser->>Merchant_Frontend: Click Pay Merchant_Frontend->>Merchant_Backend: Pay Merchant_Backend->>3DS_API: deviceDataInitialization request 3DS_API->>Merchant_Backend: deviceDataInitialization response Merchant_Backend->>Merchant_Frontend: DeviceData - BIN/JWT/URL Merchant_Frontend->>Browser: 3DS Device Data form Browser-->>Issuers: Form POST Issuers-->>Browser: PostMessage: dfReferenceId Merchant_Backend->>3DS_API: Authentication request Note over Merchant_Backend,3DS_API: Set `challenge.preference.challengeMandated` (if in mandated region) 3DS_API->>Merchant_Backend: Authentication response Merchant_Backend->>Merchant_Frontend: Challenge JWT/URL Merchant_Frontend->>Browser: 3DS challenge form Browser-->>Issuers: Form POST Issuers-->>Merchant_Backend: `returnUrl` specified in authentication request Note right of Merchant_Frontend: Update or close challenge window on website Merchant_Backend->>3DS_API: Verification request 3DS_API->>Merchant_Backend: Verification response Note right of Merchant_Frontend: Apply authentication details in payment
E.g. eci, authenticationValue etc Merchant_Backend->>Card_Payments_API: customerInitiatedTransactions request Note over Merchant_Backend,Card_Payments_API: Set `customerAgreement.type: subscription`
`customerAgreement.storedCardUsage: first` Card_Payments_API->>Merchant_Backend: customerInitiatedTransactions response Merchant_Backend->>Card_Payments_API: Settlement request Card_Payments_API->>Merchant_Backend: Settlement response ``` Using Checkout SDK (includes 3DS) Using: 1. [Checkout SDK](/products/checkout/) 2. [Verified Tokens API](/products/verified-tokens/) - for Worldpay Token creation 3. [3DS API](/products/3ds/) 4. [Card Payments API](/products/card-payments/) ```mermaid sequenceDiagram participant Browser participant Merchant_Frontend participant Merchant_Backend participant Checkout_Sessions participant Verified_Token_API participant 3DS_API participant Card_Payments_API participant Issuers Browser->>Merchant_Frontend: Click Pay Merchant_Frontend->>Checkout_Sessions: Create session Checkout_Sessions->>Merchant_Frontend: Return session Merchant_Frontend->>Merchant_Backend: Pay Merchant_Backend->>Verified_Token_API: Verified token request Note left of Verified_Token_API: Includes session Verified_Token_API->>Merchant_Backend: Verified token response Note right of Merchant_Backend: Worldpay Token returned Merchant_Backend->>3DS_API: deviceDataInitialization request 3DS_API->>Merchant_Backend: deviceDataInitialization response Merchant_Backend->>Merchant_Frontend: DeviceData - BIN/JWT/URL Merchant_Frontend->>Browser: 3DS Device Data form Browser-->>Issuers: Form POST Issuers-->>Browser: PostMessage: dfReferenceId Merchant_Backend->>3DS_API: Authentication request Note over Merchant_Backend,3DS_API: Set `challenge.preference.challengeMandated` (if in mandated region) 3DS_API->>Merchant_Backend: Authentication response Merchant_Backend->>Merchant_Frontend: Challenge JWT/URL Merchant_Frontend->>Browser: 3DS challenge form Browser-->>Issuers: Form POST Issuers-->>Merchant_Backend: `returnUrl` specified in authentication request Note right of Merchant_Frontend: Update or close challenge window on website Merchant_Backend->>3DS_API: Verification request 3DS_API->>Merchant_Backend: Verification response Note right of Merchant_Frontend: Apply authentication details in payment
E.g. eci, authenticationValue etc Merchant_Backend->>Card_Payments_API: customerInitiatedTransactions request Note over Merchant_Backend,Card_Payments_API: Set `customerAgreement.type: subscription`
`customerAgreement.storedCardUsage: first` Card_Payments_API->>Merchant_Backend: customerInitiatedTransactions response Merchant_Backend->>Card_Payments_API: Settlement request Card_Payments_API->>Merchant_Backend: Settlement response ``` #### Subsequent Merchant Initiated Transaction (MIT) Send an MIT request for subsequent recurring transactions. Using: 1. [Card Payments API](/products/card-payments/) ```mermaid sequenceDiagram participant Browser participant Merchant_Frontend participant Merchant_Backend participant Card_Payments_API participant Issuers Browser->>Merchant_Frontend: Click Pay Merchant_Frontend->>Merchant_Backend: Pay Merchant_Backend->>Card_Payments_API: merchantInitiatedTransactions request Note over Merchant_Backend,Card_Payments_API: Set `customerAgreement.type: subscription`
`customerAgreement.storedCardUsage: subsequent` Card_Payments_API->>Merchant_Backend: merchantInitiatedTransactions response Merchant_Backend->>Card_Payments_API: Settlement request Card_Payments_API->>Merchant_Backend: Settlement response ```