Card data is never in your reach
The full PAN, CVV, and expiry render inside frames that Dakota’s card-data processor controls. Those frames are cross-origin: your JavaScript, your servers, and Dakota’s own application code cannot read their contents. Your page positions and sizes the frames and styles their text, but the values themselves live only inside the frames, and they go straight from the card-data processor to the cardholder’s screen. The sensitive values never touch your DOM, your network, or your storage, so integrating Cards.js keeps your web front end within PCI DSS SAQ A scope.Deliberate reveal
Details show only on an explicit action, and only briefly:- Single-use sessions. A session authorizes one reveal and is consumed by it. There is no reusable, long-lived credential in the browser. Each reveal mints a fresh session.
- A bounded reveal window. A successful reveal is time-boxed. The window is the smaller of any
autoMaskMsyou set and the session’s time-to-live, and the TTL is itself capped at 10 minutes. Details cannot stay revealed indefinitely. - SDK-enforced re-mask. When the window ends, the SDK tears down the value frames and restores the masked face itself. It does not depend on your code to hide the data again.
Your backend mints, the browser consumes
Your API key stays on your server, which mints each session only for a card the signed-in user owns. The browser only ever holds a single-use session token. See Secure card data.Keep session tokens out of your telemetry
The card-data processor’s frames receive the session token in their URL, as asession query parameter. The SDK never logs the token, but tools on your page that record resource or frame URLs can capture it: real-user monitoring, session replay, and error tracking. Configure those tools to drop or redact the session parameter for the frame origins listed in Network & CSP.
No telemetry
Cards.js makes no network calls except those required to display card data: it loads the card-data processor’s reveal frames. It ships no analytics and no error reporting, and it never logs session tokens. The library sends nothing about your cardholders or your integration anywhere.Reporting a vulnerability
We take the security of Cards.js seriously. If you believe you have found a vulnerability, report it to us privately, so that we can investigate and fix it before it is publicly disclosed. Email security@dakota.xyz with:- a description of the issue and its potential impact,
- the affected version(s) of
@dakota-xyz/cards-js, - steps to reproduce, or a proof of concept, if you have one.

