{"id":16470,"date":"2024-06-27T15:08:38","date_gmt":"2024-06-27T13:08:38","guid":{"rendered":"https:\/\/docs.centralpay.com\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/"},"modified":"2026-08-20T17:09:08","modified_gmt":"2026-08-20T15:09:08","slug":"transaction-initiated-by-the-holder-cit-brw","status":"publish","type":"docs","link":"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/","title":{"rendered":"Transaction Initiated by the Holder (CIT \u2013 BRW)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The <strong>BRW<\/strong> (Browser) flow applies to <strong>Customer-Initiated Transactions (CIT)<\/strong>: the cardholder is present and authorizes the payment personally. This authenticated CIT also serves as the foundation for future MIT transactions. <\/p>\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49 For a transaction initiated by the merchant <em>without<\/em> the cardholder (recurring billing, variable amounts, usage-based charges, one-time fees), <a href=\"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/\">see the 3RI flow documentation<\/a>.<\/p>\n\n<pre class=\"wp-block-preformatted\">\u274c <strong>Be careful when choosing the payment flow:<\/strong> Using BRW for a merchant-initiated transaction (MIT) results in non-compliance, unnecessary friction, and a significant drop in the conversion rate.<\/pre>\n\n<h2 class=\"wp-block-heading\">1. The main steps in the BRW workflow<\/h2>\n\n<p class=\"wp-block-paragraph\">The BRW flow consists of five steps on the API side, two of which are conditional: <strong>versioning<\/strong> (is the card authenticatable?) \u2192 <strong>3DS Method<\/strong> <em>(if necessary)<\/em> \u2192 <strong>authentication<\/strong> \u2192 <strong>challenge<\/strong> <em>(if required by the bank)<\/em> \u2192 <strong>result<\/strong>, before completing the <strong>transaction<\/strong>.<\/p>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/docs.centralpay.com\/wp-content\/uploads\/2024\/06\/Schema-3DS-2.png\" alt=\"3DS 2.2 BRW flow diagram\" \/><\/figure>\n\n<pre class=\"wp-block-preformatted\">\u2139\ufe0f The entire process must take place on <strong>a single web page<\/strong>, without being redirected to a bank page, using an iframe solution. This is a requirement of the banking process. <\/pre>\n\n<p class=\"wp-block-paragraph\">To speed up your integration of the BRW flow, you can start with a complete sample application (PHP\/Twig) that replicates the entire sequence described on this page: CUSTOM payment form, <em>versioning<\/em>, 3DS Method in an iframe, <em>authentication<\/em>, challenge handling, <em>results<\/em>, and then the <em>transaction, <\/em>all on a single page, in accordance with banking requirements.<\/p>\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49 <a href=\"https:\/\/doc-api.centralpay.net\/sites\/default\/files\/uploads\/uploads\/3ds2_0.zip\" target=\"_blank\" rel=\"noreferrer noopener\">Download the sample code<\/a> \u00b7 <a href=\"https:\/\/example.centralpay.net\/webapp\/payment-3ds\" target=\"_blank\" rel=\"noreferrer noopener\">View the online demo<\/a><\/p>\n\n<pre class=\"wp-block-preformatted\">Before running the sample code, enter your credentials in the file <code>.env<\/code>  (<code>API_USER<\/code>,  <code>API_PASSWORD<\/code>,  <code>POS_UUID<\/code>) and point it <code>HOST_CENTRALPAY_API_CORE<\/code> to the test environment <code>https:\/\/test-api.centralpay.net\/v2\/rest\/<\/code>.<\/pre>\n\n<h2 class=\"wp-block-heading\">2. Versioning<\/h2>\n\n<p class=\"wp-block-paragraph\"><em>The versioning<\/em> is the first step: it queries the card network to determine whether the card can be authenticated using 3DS 2.2, and retrieves the technical information needed for the rest of the process. Specifically, you send the card\u2019s <strong>PAN<\/strong> (<em>Primary Account Number<\/em>, the 16-digit number) to the CentralPay API. <\/p>\n\n<p class=\"wp-block-paragraph\"><strong>Sample (curl) :<\/strong><\/p>\n\n<pre class=\"wp-block-code\"><code class=\"\">curl --location --request POST 'https:\/\/test-api.centralpay.net\/v2\/rest\/3ds2\/versioning' \\\n--header 'Content-Type: application\/x-www-form-urlencoded' \\\n--header 'Authorization: Basic ZG9jdGVzdDo0STlISlJUZA==' \\\n--data-urlencode 'acctNumber=4000001000000067'\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\"><strong>Understanding the response<\/strong>. A card is said to be \u201c<strong>enrolled<\/strong>\u201d when the bank that issued it participates in the 3DS 2.2 protocol for that card. This is determined by the issuing bank: neither you nor CentralPay can enroll a card. <em>Versioning<\/em> is used precisely to determine whether this is the case.  <\/p>\n\n<ul class=\"wp-block-list\">\n<li>Card not enrolled \u2192 <em>versioning<\/em> return a 404 error: the 3DS 2.2 authentification is impossible for this card. Plan for a fallback (switch to 3DS1 if supported, or decline the payment according to your risk policy). <\/li>\n\n\n\n<li>Card enrolled \u2192 you receive a transaction ID, the <strong><code>threeDSServerTransID<\/code><\/strong> (generated by CentralPay and retained until the final result is available), as well as, if applicable, the data required for the \u201c3DS Method\u201d (a URL and data encoded in Base64).<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">For a rolled-up card, there are two possible answers:<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>Version 1 (the most common) \u2014 a 3DS Method is expected:<\/strong><\/p>\n\n<pre class=\"wp-block-code\"><code class=\"\">{\n    \"threeDSServerTransID\": \"7d031b8e-7fb7-4215-b866-eaacb395002f\",\n    \"threeDSMethodURL\": \"https:\/\/test-3dss-demo.centralpay.net\/acs\/3ds-method\",\n    \"threeDSMethodDataForm\": {\n        \"threeDSMethodData\": \"eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly90ZXN0LTNkc3MuY2VudHJhbHBheS5uZXQvM2RzLzNkcy1tZXRob2Qtbm90aWZpY2F0aW9uLyIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiOWNjNmIzM2MtZGQzNS00ZmJkLTgxY2QtZmQ5Y2YwYWVlZDljIn0=\"\n    },\n    \"errorDetails\": null\n}\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">The <code>threeDSMethodURL<\/code> and <code>threeDSMethodData<\/code> field have been filled in: proceed to step 3. 3DS Method.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>Version 2 \u2014 no 3DS Method:<\/strong><\/p>\n\n<pre class=\"wp-block-code\"><code class=\"\">{\n    \"threeDSServerTransID\": \"7d031b8e-7fb7-4215-b866-eaacb395002f\",\n    \"threeDSMethodURL\": null,\n    \"threeDSMethodDataForm\": null,\n    \"errorDetails\": null\n}\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Only <code>threeDSServerTransID<\/code> is filled in (the 3DS Method fields are empty): proceed directly to Step <strong>4. Authentication.<\/strong><\/p>\n\n<h2 class=\"wp-block-heading\">3. 3DS Method<\/h2>\n\n<p class=\"wp-block-paragraph\"><strong>What is it used for?<\/strong> The 3DS Method allows the cardholder\u2019s bank \u2014 via its <strong>ACS<\/strong> (<em>Access Control Server<\/em>, the issuing bank\u2019s server that authenticates the cardholder) \u2014 to discreetly collect technical information about the customer\u2019s browser, <em>before<\/em> authentication. This information enhances the bank\u2019s risk analysis and increases the likelihood of <strong>frictionless<\/strong> authentication (without requiring the cardholder to complete a challenge). <\/p>\n\n<p class=\"wp-block-paragraph\"><strong>When should this be executed?<\/strong> Only if <em>versioning<\/em> returned a value for <code>threeDSMethodURL<\/code> and <code>threeDSMethodData<\/code> (the \u201cVersion 1\u201d case above). Otherwise, proceed directly to authentication. <\/p>\n\n<p class=\"wp-block-paragraph\"><strong>How? <\/strong>Load the <code>threeDSMethodURL<\/code> into an <strong>invisible iframe<\/strong> (hidden from view: this exchange is purely technical and should not display anything to the user) and post the <code>threeDSMethodData<\/code> field there. The user&#8217;s browser makes this call to the bank in the background. <\/p>\n\n<h2 class=\"wp-block-heading\">4. (BRW) Authentification<\/h2>\n\n<p class=\"wp-block-paragraph\">The request is sent to the CentralPay API URL <code>3ds2\/authentication<\/code>. This request transmits contextual data related to the cardholder and their browser, which allows the bank to determine whether active authentication (challenge) is required. <\/p>\n\n<p class=\"wp-block-paragraph\"><strong>Sample (curl) :<\/strong><\/p>\n\n<pre class=\"wp-block-code\"><code class=\"\">curl --location --request POST 'https:\/\/test-api.centralpay.net\/v2\/rest\/3ds2\/authentication' \\\n--header 'Content-Type: application\/x-www-form-urlencoded' \\\n--header 'Authorization: Basic ZG9jdGVzdDo0STlISlJUZA==' \\\n--data-urlencode 'threeDSServerTransID=7d031b8e-7fb7-4215-b866-eaacb395002f' \\\n--data-urlencode 'cardTokenId=5b9nb5cf-4470-4e58-b690-dd8965860eb8' \\\n--data-urlencode 'deviceChannel=02' \\\n--data-urlencode 'messageCategory=01' \\\n--data-urlencode 'purchaseAmount=1000' \\\n--data-urlencode 'purchaseCurrency=EUR' \\\n--data-urlencode 'threeDSRequestorAuthenticationInd=01' \\\n--data-urlencode 'browserJavaEnabled=true' \\\n--data-urlencode 'browserLanguage=fr-FR' \\\n--data-urlencode 'browserColorDepth=24' \\\n--data-urlencode 'browserScreenHeight=1052' \\\n--data-urlencode 'browserScreenWidth=1853' \\\n--data-urlencode 'browserTZ=120' \\\n--data-urlencode 'browserIP=127.0.0.1' \\\n--data-urlencode 'browserUserAgent=Mozilla\/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko\/20100101 Firefox\/68.0' \\\n--data-urlencode 'browserAcceptHeader=text\/html,application\/xhtml+xml,application\/xml;q=0.9,*\/*;q=0.8' \\\n--data-urlencode 'notificationURL=http:\/\/dev4.dev.centralpay.net:1101\/requestor\/challenge-notification' \\\n--data-urlencode 'threeDSRequestorURL=https:\/\/www.centralpay.eu'\n<\/code><\/pre>\n\n<pre class=\"wp-block-preformatted\">\ud83d\udca1 <code>deviceChannel=02<\/code> indicates the browser channel, specific to the BRW feed. The <code>browser*<\/code> (the cardholder's browser characteristics) are therefore required here.<br \/>To increase the frictionless authentication rate, enrich this request with contextual data about the cardholder \u2192 see <a href=\"https:\/\/docs.centralpay.com\/documentation\/documentation\/authentification-3ds-2-2\/optimiser-le-taux-de-frictionless\/\" id=\"https:\/\/docs.centralpay.com\/documentation\/documentation\/authentification-3ds-2-2\/optimiser-le-taux-de-frictionless\/\">Optimizing the Frictionless Rate<\/a> <\/pre>\n\n<p class=\"wp-block-paragraph\"><strong>Fields to be specified based on the purpose of the CIT.<\/strong> Field <code>threeDSRequestorAuthenticationInd<\/code> is <strong>required<\/strong>: it specifies the type of authentication. A CIT BRW can be used to authenticate a <strong>payment<\/strong> (<code>messageCategory=01<\/code>, PA), or to authenticate a card or its holder <strong>without a charge<\/strong> (<code>messageCategory=02<\/code>, NPA) \u2014 for example, to register a card, update it, or verify the cardholder. Both fields must be filled out consistently:  <\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><code>threeDSRequestorAuthenticationInd<\/code><\/th><th>Purpose of the CIT<\/th><th><code>messageCategory<\/code><\/th><th>Additional required fields<\/th><\/tr><\/thead><tbody><tr><td><code>01<\/code> \u2014 Payment<\/td><td>Per-unit payment (one-time)<\/td><td><code>01<\/code> (PA)<\/td><td>\u2014<\/td><\/tr><tr><td><code>02<\/code> \u2014 Recurring<\/td><td>Recurring payment (subscription)<\/td><td><code>01<\/code> (PA)<\/td><td><code>recurringExpiry<\/code>,  <code>recurringFrequency<\/code><\/td><\/tr><tr><td><code>03<\/code> \u2014 Instalment<\/td><td>Installment payments (in several payments)<\/td><td><code>01<\/code> (PA)<\/td><td><code>recurringExpiry<\/code>, <code>recurringFrequency<\/code>, <code>purchaseInstalData<\/code><\/td><\/tr><tr><td><code>04<\/code> \u2014 Add card<\/td><td>Registering\/encoding a card for future use, with no charge<\/td><td><code>02<\/code> (NPA)<\/td><td>\u2014<\/td><\/tr><tr><td><code>05<\/code> \u2014 Maintain card<\/td><td>Updating the information for an already registered card (e.g., renewal)<\/td><td><code>02<\/code> (NPA)<\/td><td>\u2014<\/td><\/tr><tr><td><code>06<\/code> \u2014 Cardholder verification<\/td><td>Cardholder verification as part of the ID&amp;V process for an EMV token<\/td><td><code>02<\/code> (NPA)<\/td><td>\u2014<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<ul class=\"wp-block-list\">\n<li><code>recurringExpiry<\/code> \u2192 the date after which no further authorizations will be issued (format <code>YYYYMMDD<\/code>).<\/li>\n\n\n\n<li><code>recurringFrequency<\/code> \u2192 minimum number of days between two authorizations (1 to 999).<\/li>\n\n\n\n<li><code>purchaseInstalData<\/code> \u2192 maximum number of authorizations (due dates) specified for installment payments (1 to 999).<\/li>\n<\/ul>\n\n<pre class=\"wp-block-preformatted\">\u2139\ufe0f Cases 04, 05, and 06 are <strong>non-payment<\/strong> authentications: no amount or recurrence field is required. They do not necessarily lead to an MIT transaction \u2014 they are often an end in themselves (to register, verify, or maintain a card). The card authenticated in this way can then be used for both CIT (cardholder present) and MIT (3RI) transactions.  <\/pre>\n\n<p class=\"wp-block-paragraph\">The response contains an authentication status (<strong><code>transStatus<\/code><\/strong>) that determines the next steps:<\/p>\n\n<p class=\"wp-block-paragraph\">\u274c <strong>No authorization \u2014 do not complete the transaction<\/strong><\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Status (<code>transStatus<\/code>)<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td><strong>N<\/strong><\/td><td>Non authenticated\/unverified account. Transaction declined. <\/td><\/tr><tr><td><strong>U<\/strong><\/td><td>Authentication\/verification failed (technical issue or other problem).<\/td><\/tr><tr><td><strong>R<\/strong><\/td><td>Authentication\/verification declined. The sender requests that you do not attempt to obtain authorization. <\/td><\/tr><tr><td><strong>I<\/strong><\/td><td>For informational purposes only. Acknowledgment of the applicant&#8217;s preference for the 3DS Challenge. <\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">\u2705 <strong>Authorization without challenge<\/strong><\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Status (<code>transStatus<\/code>)<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td><strong>Y<\/strong><\/td><td>Authentication successful.<\/td><\/tr><tr><td><strong>A<\/strong><\/td><td>Attempt made. Not authenticated\/verified, but a proof of the attempt is provided. <\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">\ud83d\udd10 <strong>Authorization after challenge<\/strong><\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Status (<code>transStatus<\/code>)<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td><strong>C<\/strong><\/td><td>Challenge required: the owner must actively authenticate (see step 5) using CReq\/CRes (Challenge Request\/Response) messages.<\/td><\/tr><tr><td><strong>D<\/strong><\/td><td>Challenge required. Decoupled authentication confirmed. <\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\"><strong>Sample of responses:<\/strong><\/p>\n\n<p class=\"wp-block-paragraph\"><code>C<\/code> \u2014 Challenge required:<\/p>\n\n<pre class=\"wp-block-code\"><code class=\"\">{\n    \"threeDSServerTransID\": \"7d031b8e-7fb7-4215-b866-eaacb395002f\",\n    \"transStatus\": \"C\",\n    \"acsTransID\": \"375d90ad-3873-498b-9133-380cbbc8d99d\",\n    \"acsURL\": \"https:\/\/test-3dss-demo.centralpay.net\/acs\/challenge\",\n    \"acsChallengeMandated\": \"Y\",\n    \"base64EncodedChallengeRequest\": \"eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImU2MDFlYjQ0LTU2N2MtNDM4Ny05MmZjLWU2ZjIzMjJiODIyYiIsImFjc1RyYW5zSUQiOiI3ZTQzZDI4ZC00M2RkLTRmM2MtYTcwOS00YjZkZDVlZjc5Y2QiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIn0=\",\n    \"contractId\": \"71602dd0-2790-4743-877b-e72530d7576d\"\n}\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\"><code>Y<\/code> \u2014 Authentication successful (no challenge required):<\/p>\n\n<pre class=\"wp-block-code\"><code class=\"\">{\n    \"threeDSServerTransID\": \"7d994177-32d8-43f7-87a4-3a3cd734cbfe\",\n    \"transStatus\": \"Y\",\n    \"acsTransID\": \"375d90ad-3873-498b-9133-380cbbc8d99d\",\n    \"authenticationValue\": \"MTIzNDU2Nzg5MDA5ODc2NTQzMjEa\",\n    \"eci\": \"02\",\n    \"contractId\": \"71602dd0-2790-4743-877b-e72530d7576d\"\n}\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">The required fields for the transaction are present: <code>threeDSServerTransID<\/code>, <code>transStatus<\/code>, <code>authenticationValue<\/code> (the <strong>CAVV<\/strong> \u2014 <em>Cardholder Authentication Verification Value<\/em>, the security code that verifies authentication) and <code>eci<\/code> (<em>Electronic Commerce Indicator<\/em>, which indicates the level of authentication achieved and determines the transfer of liability in the event of fraud). The <code>xid<\/code> is not provided: it is an optional reference intended for merchants. <\/p>\n\n<p class=\"wp-block-paragraph\"><code>N<\/code> \u2014 Transaction declined:<\/p>\n\n<pre class=\"wp-block-code\"><code class=\"\">{\n    \"threeDSServerTransID\": \"6396b832-3e5b-4143-bde6-f5r1c1e47da0\",\n    \"transStatus\": \"N\",\n    \"eci\": \"00\",\n    \"contractId\": \"258128f3-5db9-4235-918a-f1d786f67c29\"\n}\n<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">5. Challenge<\/h2>\n\n<p class=\"wp-block-paragraph\">The <strong>challenge<\/strong> is the step in which the cardholder actively authenticates themselves with their bank (one-time code received via text message, validation in the banking app, biometrics, etc.). It occurs only if the authentication returned <code>transStatus = C<\/code>. <\/p>\n\n<ul class=\"wp-block-list\">\n<li>An iframe must submit a form to the <code>acsURL<\/code> page returned in step 4.<\/li>\n\n\n\n<li>The only parameter sent is <code>creq<\/code>, whose value is the <code>base64EncodedChallengeRequest<\/code> obtained from authentication.<\/li>\n\n\n\n<li>At the end of the challenge, the URL you provided (<code>notificationURL<\/code>) is called by the bank.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">In a test environment, the challenge appears as an <strong>OTP<\/strong> (<em>One-Time Password<\/em>); in production, the bank&#8217;s ACS window appears:<\/p>\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/docs.centralpay.com\/wp-content\/uploads\/2024\/06\/challenge.png\" alt=\"OTP challenge window in a test environment\" \/><\/figure>\n\n<p class=\"wp-block-paragraph\">Test OTP:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><code>1234<\/code> \u2192 <code>Y<\/code> (simulates a successful challenge &#8211; Authentication successful)<\/li>\n\n\n\n<li><code>4444<\/code> \u2192 <code>A<\/code> (simulates a successful challenge &#8211; Not authenticated\/verified, but a proof of the attempt is provided.)<\/li>\n\n\n\n<li><code>1111<\/code> \u2192 <code>N<\/code> (simulates a failed challenge &#8211; No authenticated\/unverified account)<\/li>\n\n\n\n<li><code>2222<\/code> \u2192 <code>R<\/code> (simulates a failed challenge &#8211; Authentication\/verification declined)<\/li>\n\n\n\n<li><code>3333<\/code> \u2192 <code>U<\/code> (simulates a failed challenge &#8211; Authentication\/verification failed (technical issue or other problem)<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">6. Challenge response<\/h2>\n\n<p class=\"wp-block-paragraph\">Once the challenge is complete, the result is returned in the <code>cres<\/code> parameter, encoded in Base64. Decode it to read the status. Example in PHP:  <\/p>\n\n<pre class=\"wp-block-code\"><code class=\"\">$retour = json_decode(base64_decode($_POST['cres']), true);\n<\/code><\/pre>\n\n<ul class=\"wp-block-list\">\n<li>If the status is <strong>Y<\/strong> or <strong>A<\/strong>, the challenge is validated and the payment is authorized: call <code>GET \/results<\/code> (step 7) to retrieve the 3DS data required for the transaction.<\/li>\n\n\n\n<li>Any other value means the challenge failed: the payment was declined.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">7. Result<\/h2>\n\n<p class=\"wp-block-paragraph\">This step retrieves the final 3DS data to be included in the transaction. Send the <code>threeDSServerTransID<\/code> authentication request. <\/p>\n\n<pre class=\"wp-block-preformatted\">\u2139\ufe0f If the authentication returned <code>transStatus = Y<\/code> directly (without a challenge), the 3DS data is already included: this step is not necessary.<\/pre>\n\n<p class=\"wp-block-paragraph\"><strong>Call:<\/strong><\/p>\n\n<pre class=\"wp-block-code\"><code class=\"\">curl --location -g --request GET 'https:\/\/test-api.centralpay.net\/v2\/rest\/3ds2\/results\/{{threeDSServerTransID}}' \\\n--header 'Authorization: Basic ZG9jdGVzdDo0STlISlJUZA=='\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\"><strong>Response:<\/strong><\/p>\n\n<pre class=\"wp-block-code\"><code class=\"\">{\n    \"threeDSServerTransID\": \"7d031b8e-7fb7-4215-b866-eaacb395002f\",\n    \"transStatus\": \"Y\",\n    \"acsTransID\": \"375d90ad-3873-498b-9133-380cbbc8d99d\",\n    \"authenticationValue\": \"JAmi21makAifmwqo2120cjq1AAA=\",\n    \"eci\": \"01\"\n}\n<\/code><\/pre>\n\n<pre class=\"wp-block-preformatted\">\ud83d\udd01 <strong>Prepare for future MITs (3RI)<\/strong>. If this CIT is to serve as a reference for subsequent payments initiated by the merchant, retain the <code>acsTransID<\/code> from the authentication sequence: it will be required as <code>threeDSReqPriorRef<\/code> on the <a href=\"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/\">3RI<\/a> side.<\/pre>\n\n<h2 class=\"wp-block-heading\">8. Transaction<\/h2>\n\n<p class=\"wp-block-paragraph\">Information required to validate a transaction authenticated using 3DS 2.2:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><code>3ds[threeDSServerTransID]<\/code> = <code>threeDSServerTransID<\/code><\/li>\n\n\n\n<li><code>3ds[status]<\/code> = <code>transStatus<\/code><\/li>\n\n\n\n<li><code>3ds[cavv]<\/code> = <code>authenticationValue<\/code><\/li>\n\n\n\n<li><code>3ds[eci]<\/code> = <code>eci<\/code> (required if available)<\/li>\n\n\n\n<li><code>3ds[xid]<\/code> = custom parameter, free-form reference for merchants<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\"><strong>Sample (curl) :<\/strong><\/p>\n\n<pre class=\"wp-block-code\"><code class=\"\">curl --location --request POST 'https:\/\/test-api.centralpay.net\/v2\/rest\/transaction' \\\n--header 'Origin: https:\/\/example.centralpay.net' \\\n--header 'Authorization: Basic ZG9jdGVzdDo0STlISlJUZA==' \\\n--header 'Content-Type: application\/x-www-form-urlencoded' \\\n--data-urlencode 'currency=EUR' \\\n--data-urlencode 'amount=1500' \\\n--data-urlencode 'endUserIp=9.64.32.8' \\\n--data-urlencode 'endUserLanguage=ita' \\\n--data-urlencode 'merchantTransactionId=cpcg_12654de89ce44' \\\n--data-urlencode 'pointOfSaleId=1beb8574-cf4c-4b12-b065-d12b3f0eaa90' \\\n--data-urlencode 'browserUserAgent=Mozilla\/5.0 (iPhone; CPU iPhone OS 16_1_1 like Mac OS X) AppleWebKit\/605.1.15 (KHTML, like Gecko) Version\/16.1 Mobile\/15E148 Safari\/604.1' \\\n--data-urlencode 'browserAcceptLanguage=it_IT' \\\n--data-urlencode 'paymentRequestBreakdownId=5485d7e6-60c3-753c-94d3-682eaaf9ae6e' \\\n--data-urlencode 'email=support@centralpay.eu' \\\n--data-urlencode 'receiptEmail=support@centralpay.eu' \\\n--data-urlencode 'capture=true' \\\n--data-urlencode 'cardTokenId=5b9nb5cf-4470-4e58-b690-dd8965860eb8' \\\n--data-urlencode 'order[cardholderEmail]=support@centralpay.eu' \\\n--data-urlencode 'order[firstName]=John' \\\n--data-urlencode 'order[lastName]=Doe' \\\n--data-urlencode 'source=EC' \\\n--data-urlencode '3ds[xid]=35876533346561303461' \\\n--data-urlencode '3ds[cavv]=JAmi21makAifmwqo2120cjq1AAA=' \\\n--data-urlencode '3ds[eci]=01' \\\n--data-urlencode '3ds[status]=Y' \\\n--data-urlencode '3ds[threeDSServerTransID]=7d031b8e-7fb7-4215-b866-eaacb395002f'\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\"><strong>Next step:<\/strong> For subsequent merchant-initiated transactions (MIT), see <a href=\"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/\">3DS 2.2 \u2013 3RI<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The BRW (Browser) flow applies to Customer-Initiated Transactions (CIT): the cardholder is present and authorizes the payment personally. This authenticated CIT also serves as the foundation for future MIT transactions. \ud83d\udc49 For a transaction initiated by the merchant without the cardholder (recurring billing, variable amounts, usage-based charges, one-time fees), see the 3RI flow documentation. \u274c [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":16466,"menu_order":1,"comment_status":"open","ping_status":"closed","template":"","doc_tag":[],"doc_badge":[],"class_list":["post-16470","docs","type-docs","status-publish","hentry","no-post-thumbnail"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Transaction Initiated by the Holder (CIT \u2013 BRW) - CentralPay Documentation<\/title>\n<meta name=\"description\" content=\"Integration of the BRW 3-D Secure 2.2 workflow for customer-initiated transactions (CIT): versioning, 3DS Method, authentication...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Transaction Initiated by the Holder (CIT \u2013 BRW) - CentralPay Documentation\" \/>\n<meta property=\"og:description\" content=\"Integration of the BRW 3-D Secure 2.2 workflow for customer-initiated transactions (CIT): versioning, 3DS Method, authentication...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/\" \/>\n<meta property=\"og:site_name\" content=\"CentralPay Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-20T15:09:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/docs.centralpay.com\/wp-content\/uploads\/2024\/06\/Schema-3DS-2.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/documentation\\\/3ds-2-2-authentication\\\/transaction-initiated-by-the-holder-cit-brw\\\/\",\"url\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/documentation\\\/3ds-2-2-authentication\\\/transaction-initiated-by-the-holder-cit-brw\\\/\",\"name\":\"Transaction Initiated by the Holder (CIT \u2013 BRW) - CentralPay Documentation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/documentation\\\/3ds-2-2-authentication\\\/transaction-initiated-by-the-holder-cit-brw\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/documentation\\\/3ds-2-2-authentication\\\/transaction-initiated-by-the-holder-cit-brw\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/docs.centralpay.com\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Schema-3DS-2.png\",\"datePublished\":\"2024-06-27T13:08:38+00:00\",\"dateModified\":\"2026-08-20T15:09:08+00:00\",\"description\":\"Integration of the BRW 3-D Secure 2.2 workflow for customer-initiated transactions (CIT): versioning, 3DS Method, authentication...\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/documentation\\\/3ds-2-2-authentication\\\/transaction-initiated-by-the-holder-cit-brw\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/documentation\\\/3ds-2-2-authentication\\\/transaction-initiated-by-the-holder-cit-brw\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/documentation\\\/3ds-2-2-authentication\\\/transaction-initiated-by-the-holder-cit-brw\\\/#primaryimage\",\"url\":\"https:\\\/\\\/docs.centralpay.com\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Schema-3DS-2.png\",\"contentUrl\":\"https:\\\/\\\/docs.centralpay.com\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Schema-3DS-2.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/documentation\\\/3ds-2-2-authentication\\\/transaction-initiated-by-the-holder-cit-brw\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"3DS 2.2 authentication\",\"item\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/documentation\\\/3ds-2-2-authentication\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Transaction Initiated by the Holder (CIT \u2013 BRW)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/\",\"name\":\"CentralPay Documentation\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/#organization\",\"name\":\"CentralPay Documentation\",\"url\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/docs.centralpay.com\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-centralpay-2023.png\",\"contentUrl\":\"https:\\\/\\\/docs.centralpay.com\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-centralpay-2023.png\",\"width\":2382,\"height\":370,\"caption\":\"CentralPay Documentation\"},\"image\":{\"@id\":\"https:\\\/\\\/docs.centralpay.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Transaction Initiated by the Holder (CIT \u2013 BRW) - CentralPay Documentation","description":"Integration of the BRW 3-D Secure 2.2 workflow for customer-initiated transactions (CIT): versioning, 3DS Method, authentication...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/","og_locale":"en_US","og_type":"article","og_title":"Transaction Initiated by the Holder (CIT \u2013 BRW) - CentralPay Documentation","og_description":"Integration of the BRW 3-D Secure 2.2 workflow for customer-initiated transactions (CIT): versioning, 3DS Method, authentication...","og_url":"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/","og_site_name":"CentralPay Documentation","article_modified_time":"2026-08-20T15:09:08+00:00","og_image":[{"url":"https:\/\/docs.centralpay.com\/wp-content\/uploads\/2024\/06\/Schema-3DS-2.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/","url":"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/","name":"Transaction Initiated by the Holder (CIT \u2013 BRW) - CentralPay Documentation","isPartOf":{"@id":"https:\/\/docs.centralpay.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/#primaryimage"},"image":{"@id":"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/#primaryimage"},"thumbnailUrl":"https:\/\/docs.centralpay.com\/wp-content\/uploads\/2024\/06\/Schema-3DS-2.png","datePublished":"2024-06-27T13:08:38+00:00","dateModified":"2026-08-20T15:09:08+00:00","description":"Integration of the BRW 3-D Secure 2.2 workflow for customer-initiated transactions (CIT): versioning, 3DS Method, authentication...","breadcrumb":{"@id":"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/#primaryimage","url":"https:\/\/docs.centralpay.com\/wp-content\/uploads\/2024\/06\/Schema-3DS-2.png","contentUrl":"https:\/\/docs.centralpay.com\/wp-content\/uploads\/2024\/06\/Schema-3DS-2.png"},{"@type":"BreadcrumbList","@id":"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/transaction-initiated-by-the-holder-cit-brw\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/docs.centralpay.com\/en\/"},{"@type":"ListItem","position":2,"name":"3DS 2.2 authentication","item":"https:\/\/docs.centralpay.com\/en\/documentation\/3ds-2-2-authentication\/"},{"@type":"ListItem","position":3,"name":"Transaction Initiated by the Holder (CIT \u2013 BRW)"}]},{"@type":"WebSite","@id":"https:\/\/docs.centralpay.com\/en\/#website","url":"https:\/\/docs.centralpay.com\/en\/","name":"CentralPay Documentation","description":"","publisher":{"@id":"https:\/\/docs.centralpay.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/docs.centralpay.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/docs.centralpay.com\/en\/#organization","name":"CentralPay Documentation","url":"https:\/\/docs.centralpay.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/docs.centralpay.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/docs.centralpay.com\/wp-content\/uploads\/2023\/07\/logo-centralpay-2023.png","contentUrl":"https:\/\/docs.centralpay.com\/wp-content\/uploads\/2023\/07\/logo-centralpay-2023.png","width":2382,"height":370,"caption":"CentralPay Documentation"},"image":{"@id":"https:\/\/docs.centralpay.com\/en\/#\/schema\/logo\/image\/"}}]}},"author_avatar":"https:\/\/secure.gravatar.com\/avatar\/f26ba73d1afc0520e4b1044ff088c0eda58eeaf8c325f16e76f4f944099091cc?s=96&d=mm&r=g","author_name":"Victor","_links":{"self":[{"href":"https:\/\/docs.centralpay.com\/en\/wp-json\/wp\/v2\/docs\/16470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.centralpay.com\/en\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/docs.centralpay.com\/en\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/docs.centralpay.com\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.centralpay.com\/en\/wp-json\/wp\/v2\/comments?post=16470"}],"version-history":[{"count":2,"href":"https:\/\/docs.centralpay.com\/en\/wp-json\/wp\/v2\/docs\/16470\/revisions"}],"predecessor-version":[{"id":16474,"href":"https:\/\/docs.centralpay.com\/en\/wp-json\/wp\/v2\/docs\/16470\/revisions\/16474"}],"up":[{"embeddable":true,"href":"https:\/\/docs.centralpay.com\/en\/wp-json\/wp\/v2\/docs\/16466"}],"wp:attachment":[{"href":"https:\/\/docs.centralpay.com\/en\/wp-json\/wp\/v2\/media?parent=16470"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/docs.centralpay.com\/en\/wp-json\/wp\/v2\/doc_tag?post=16470"},{"taxonomy":"doc_badge","embeddable":true,"href":"https:\/\/docs.centralpay.com\/en\/wp-json\/wp\/v2\/doc_badge?post=16470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}