Explore our best practices for storing access tokens securely. Chart requires developers to store tokens on the backend server for improved security controls.
To reduce the likelihood of unitentional exposure of taxpayer access tokens or other private information,
you’ll need to ensure all access tokens are stored securely.
Chart access tokens are “keys” to sensitive information.
You should treat access tokens with the same level of security as you would passwords.
Storing tokens securely should be done on the backend (server-side) of your application, not on the frontend (client-side).
A frontend application is more susceptible to potential security threats such as Cross-Site Scripting (XSS)
attacks or unauthorized access if the client is compromised.Therefore, Chart requires developers to store tokens securely on the backend server
where you have better control over access and security.No application is 100% secure, but there are ways to reduce the potential of an exposure (and its impact)
by following a few best practices:
Store tokens on the backend of your application.
Encrypt the access token before storing it.
Use environment variables or a secure configuration management system to store static sensitive information that needs to be referenced like client_secret.
Never store access tokens in code files or easily accessible directories with human access.
Ensure that tokens are not exposed in URLs, logs, or error messages.
Keep all server-side components, libraries, and frameworks up-to-date with security patches to mitigate potential vulnerabilities.
Determine the best method for securely storing access tokens in your application’s backend.
Reference the sections below if you need additional help.
To add an extra layer of security, you can encrypt the access token before storing it.
Select a strong symmetric encryption algorithm, such as AES-256. Avoid using weak algorithms like DES,
as they are susceptible to brute-force attacks due to its small key size (56 bits).
Ensure that tokens are not exposed in URLs, log files, or error messages. Regularly review logs for any exposure.Ensure your frontend application never receives the access token to avoid incidental exposure.
Your frontend, client-side application should only receive tax data, never the token itself.
Was this page helpful?
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Chart","colors":{"primary":"#293321","light":"#A5EB71","dark":"#679346"},"favicon":"/favicon.svg","logo":{"light":"https://mintcdn.com/chart/5V9iU9vWdtuPCGDj/logo/light.svg?fit=max\u0026auto=format\u0026n=5V9iU9vWdtuPCGDj\u0026q=85\u0026s=238400f728c1bf345d9af806ffab5c92","dark":"https://mintcdn.com/chart/5V9iU9vWdtuPCGDj/logo/dark.svg?fit=max\u0026auto=format\u0026n=5V9iU9vWdtuPCGDj\u0026q=85\u0026s=7db7ca9437accc98232dc83e534bf04f"},"navbar":{"links":[{"label":"Sign Up","href":"https://auth.trychart.com/sign-up"}],"primary":{"type":"button","label":"Sign In","href":"https://auth.trychart.com"}},"footer":{"socials":{"twitter":"https://twitter.com/try_chart_api","linkedin":"https://www.linkedin.com/company/chart-api","website":"https://trychart.com"}},"navigation":{"global":{"anchors":[{"anchor":"API Status","href":"https://chartapi.statuspage.io","icon":{"name":"signal-bars","style":"solid"}},{"anchor":"Changelog","href":"https://developer.trychart.com/developer/changelog","icon":{"name":"megaphone","style":"solid"}}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"chart","hasAudioNarration":false,"actualSubdomain":"chart","customDomains":["developer.trychart.com"],"gitSource":{"type":"github","owner":"getcharteditor","repo":"chart-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21e61fcf44a63d52c96556","collectionId":"1c81e23a-1d17-4715-b13c-0418398b95d4","schemaVersion":"v2"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ae91f1aabde022f2c1f0a1f:success","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Reference","count":14},{"language":"default","tag":"Documentation","count":13},{"language":"default","tag":"Management","count":5},{"language":"default","tag":"Developer Resources","count":5},{"language":"default","tag":"Implementation Guide","count":5},{"language":"default","tag":"Taxpayer","count":4},{"language":"default","tag":"Connect","count":3},{"language":"default","tag":"How Chart Works","count":3},{"language":"default","tag":"IRS Forms","count":2},{"language":"default","tag":"Records","count":2}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"implementation/secure/store","slug":"/implementation/secure/store","pageMetadata":{"title":"Store Tokens","description":"Explore our best practices for storing access tokens securely. Chart requires developers to store tokens on the backend server for improved security controls.","href":"/implementation/secure/store"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Explore our best practices for storing access tokens securely. Chart requires developers to store tokens on the backend server for improved security controls.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Heading,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`To reduce the likelihood of unitentional exposure of taxpayer access tokens or other private information,\nyou’ll need to ensure all access tokens are stored securely.`}),`\n`,_jsx(Warning,{children:`Chart access tokens are “keys” to sensitive information.\nYou should treat access tokens with the same level of security as you would passwords.`}),`\n`,_jsx(Heading,{level:`2`,id:`secure-storage-best-practices`,children:`Secure storage best practices`}),`\n`,_jsx(_components.p,{children:`Storing tokens securely should be done on the backend (server-side) of your application, not on the frontend (client-side).\nA frontend application is more susceptible to potential security threats such as Cross-Site Scripting (XSS)\nattacks or unauthorized access if the client is compromised.`}),`\n`,_jsxs(_components.p,{children:[`Therefore, `,_jsx(_components.strong,{children:`Chart requires developers to store tokens securely on the backend server`}),`\nwhere you have better control over access and security.`]}),`\n`,_jsx(_components.p,{children:`No application is 100% secure, but there are ways to reduce the potential of an exposure (and its impact)\nby following a few best practices:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Store tokens on the backend of your application.`}),`\n`,_jsx(_components.li,{children:`Encrypt the access token before storing it.`}),`\n`,_jsxs(_components.li,{children:[`Use environment variables or a secure configuration management system to store static sensitive information that needs to be referenced like `,_jsx(_components.code,{children:`client_secret`}),`.`]}),`\n`,_jsx(_components.li,{children:`Never store access tokens in code files or easily accessible directories with human access.`}),`\n`,_jsx(_components.li,{children:`Ensure that tokens are not exposed in URLs, logs, or error messages.`}),`\n`,_jsx(_components.li,{children:`Keep all server-side components, libraries, and frameworks up-to-date with security patches to mitigate potential vulnerabilities.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Determine the best method for securely storing access tokens in your application’s backend.\nReference the sections below if you need additional help.`}),`\n`,_jsx(Heading,{level:`2`,id:`encryption`,children:`Encryption`}),`\n`,_jsx(_components.p,{children:`To add an extra layer of security, you can encrypt the access token before storing it.\nSelect a strong symmetric encryption algorithm, such as AES-256. Avoid using weak algorithms like DES,\nas they are susceptible to brute-force attacks due to its small key size (56 bits).`}),`\n`,_jsx(Heading,{level:`2`,id:`never-expose-access-tokens`,children:`Never expose access tokens`}),`\n`,_jsx(_components.p,{children:`Ensure that tokens are not exposed in URLs, log files, or error messages. Regularly review logs for any exposure.`}),`\n`,_jsx(_components.p,{children:`Ensure your frontend application never receives the access token to avoid incidental exposure.\nYour frontend, client-side application should only receive tax data, never the token itself.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Store Tokens","description":"Explore our best practices for storing access tokens securely. Chart requires developers to store tokens on the backend server for improved security controls.","href":"/implementation/secure/store"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Secure storage best practices","slug":"secure-storage-best-practices","depth":2,"children":[]},{"title":"Encryption","slug":"encryption","depth":2,"children":[]},{"title":"Never expose access tokens","slug":"never-expose-access-tokens","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"chart","siteName":"Chart","title":"Store Tokens - Chart","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2025-08-19T23:37:31.922Z","originalFileLocation":"implementation/secure/store.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Explore our best practices for storing access tokens securely. Chart requires developers to store tokens on the backend server for improved security controls.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Chart\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/chart/7tUBHNL5lT6XIZxQ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/chart/7tUBHNL5lT6XIZxQ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/chart/7tUBHNL5lT6XIZxQ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/chart/7tUBHNL5lT6XIZxQ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/chart/7tUBHNL5lT6XIZxQ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/chart/7tUBHNL5lT6XIZxQ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/chart/7tUBHNL5lT6XIZxQ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/chart/7tUBHNL5lT6XIZxQ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/chart/7tUBHNL5lT6XIZxQ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Store Tokens - Chart\">\u003cmeta data-mint-head property=\"og:description\" content=\"Explore our best practices for storing access tokens securely. Chart requires developers to store tokens on the backend server for improved security controls.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Chart\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.trychart.com/implementation/secure/store\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://chart.mintlify.app/_mintlify/api/og/v2?division=Secure\u0026amp;title=Store+Tokens\u0026amp;description=Explore+our+best+practices+for+storing+access+tokens+securely.+Chart+requires+developers+to+store+tokens+on+the+backend+server+for+improved+security+controls.\u0026amp;theme=47518fbce33870c7ee121925\u0026amp;signature=6632ed2d3a414c1aa9c1e778974d25f0fb32afb9feed65f5c53666152f956558\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Store Tokens - Chart\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Explore our best practices for storing access tokens securely. Chart requires developers to store tokens on the backend server for improved security controls.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://chart.mintlify.app/_mintlify/api/og/v2?division=Secure\u0026amp;title=Store+Tokens\u0026amp;description=Explore+our+best+practices+for+storing+access+tokens+securely.+Chart+requires+developers+to+store+tokens+on+the+backend+server+for+improved+security+controls.\u0026amp;theme=47518fbce33870c7ee121925\u0026amp;signature=6632ed2d3a414c1aa9c1e778974d25f0fb32afb9feed65f5c53666152f956558\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/chart/7tUBHNL5lT6XIZxQ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Chart\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#293321\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.trychart.com/implementation/secure/store\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/implementation/secure/store.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.trychart.com/#organization\",\"name\":\"Chart\",\"url\":\"https://developer.trychart.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/chart/5V9iU9vWdtuPCGDj/logo/light.svg?fit=max\u0026auto=format\u0026n=5V9iU9vWdtuPCGDj\u0026q=85\u0026s=238400f728c1bf345d9af806ffab5c92\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.trychart.com#website\",\"name\":\"Chart\",\"url\":\"https://developer.trychart.com\",\"publisher\":{\"@id\":\"https://developer.trychart.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.trychart.com/implementation/secure/store#webpage\",\"url\":\"https://developer.trychart.com/implementation/secure/store\",\"name\":\"Store Tokens\",\"description\":\"Explore our best practices for storing access tokens securely. Chart requires developers to store tokens on the backend server for improved security controls.\",\"dateModified\":\"2025-08-19T23:37:31.922Z\",\"isPartOf\":{\"@id\":\"https://developer.trychart.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.trychart.com/implementation/secure/store#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.trychart.com/implementation/secure/store#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Implementation Guide\",\"item\":\"https://developer.trychart.com/implementation/guide\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Store Tokens\",\"item\":\"https://developer.trychart.com/implementation/secure/store\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developer.trychart.com/implementation/secure/store#article\",\"headline\":\"Store Tokens\",\"name\":\"Store Tokens\",\"description\":\"Explore our best practices for storing access tokens securely. Chart requires developers to store tokens on the backend server for improved security controls.\",\"url\":\"https://developer.trychart.com/implementation/secure/store\",\"mainEntityOfPage\":{\"@id\":\"https://developer.trychart.com/implementation/secure/store#webpage\"},\"dateModified\":\"2025-08-19T23:37:31.922Z\",\"publisher\":{\"@id\":\"https://developer.trychart.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.trychart.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Chart\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Chart","nav":{"global":{"anchors":[{"anchor":"API Status","href":"https://chartapi.statuspage.io","icon":{"name":"signal-bars","style":"solid"}},{"anchor":"Changelog","href":"https://developer.trychart.com/developer/changelog","icon":{"name":"megaphone","style":"solid"}}]},"tabs":[{"tab":"Documentation","groups":[{"group":"How Chart Works","pages":[{"title":"Quickstart","href":"/overview/quickstart"},{"title":"What is Chart?","href":"/overview/chart-overview"},{"title":"Connect a Taxpayer","href":"/overview/connect"}]},{"group":"Implementation Guide","pages":[{"title":"Chart API Implementation Guide","href":"/implementation/guide"},{"group":"Connect","pages":[{"title":"Create a Chart Developer Account","href":"/implementation/connect/create-dev-account"},{"title":"Set Up Chart Connect","href":"/implementation/connect/set-up-chart-connect"},{"title":"Retrieve Access Token","description":"In this guide, you'll exchange the authorization code for an access token. Access tokens are required for making API requests to Chart endpoints.","href":"/implementation/connect/retrieve-access-token"}]},{"group":"Secure","pages":[{"title":"Store Tokens","href":"/implementation/secure/store"}]}]},{"group":"Developer Resources","pages":[{"title":"API Versioning","description":null,"href":"/developer/api-versioning"},{"title":"SDKs","href":"/developer/sdk"},{"title":"Events","href":"/developer/events"},{"title":"Webhooks","href":"/developer/webhooks"},{"title":"Changelog","href":"/developer/changelog"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/records/get_all"}]}]},"basePath":"","title":"Store Tokens - Chart","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}