One shape, everywhere — branch on the code, not the message
Every error, from every layer, has the same body:
{ "code": "INSUFFICIENT_FUNDS", "message": "Account 5b6f… does not hold enough USDC_TRON to cover this transaction.", "details": ["amount"]}
Field
code
Stable and machine-readable. Branch on this.
message
Human-readable, for your logs — subject to change without notice.
details
Present on validation failures: one entry per rejected field.
Status codes you’ll see everywhere
Status
Meaning
400
Malformed request, or a ledger rule refused it — code says which.
401
Missing, malformed, or revoked API key.
403
The key is valid but lacks the scope this operation requires.
404
No such record, or it belongs to another tenant.
409
Idempotency conflict — this key was already used with a different body.
422
INSUFFICIENT_FUNDS and similar: well-formed, but the ledger says no.
Terminal vs. retryable
Retry these
Don't retry these
429 (honour Retry-After) and any 5xx, always with the same
idempotency key. Anything else is not a transient failure.
422 INSUFFICIENT_FUNDS, 400 UNBALANCED_TRANSACTION, and
403 DESTINATION_SCREENED are terminal — the request was understood
and refused. Retrying changes nothing; fix the underlying condition
first (top up, correct the amount, or use an allowed destination).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Tetlith","description":"Integrate crypto custody, deposits, withdrawals and treasury into your product.","colors":{"primary":"#0a7f70","light":"#15c7ae","dark":"#075e53"},"logo":{"light":"https://mintcdn.com/tetlith/7DC9EdS9hm4SwFD8/logo/light.svg?fit=max\u0026auto=format\u0026n=7DC9EdS9hm4SwFD8\u0026q=85\u0026s=c9281db1c30cd1861b819e807fe6eb2b","dark":"https://mintcdn.com/tetlith/7DC9EdS9hm4SwFD8/logo/dark.svg?fit=max\u0026auto=format\u0026n=7DC9EdS9hm4SwFD8\u0026q=85\u0026s=30795c54cdaec7bcdfb83b524f005f6c","href":"https://tetlith.com"},"favicon":"https://mintcdn.com/tetlith/7DC9EdS9hm4SwFD8/favicon.svg?fit=max\u0026auto=format\u0026n=7DC9EdS9hm4SwFD8\u0026q=85\u0026s=a3947ffe658e0e833f563085653d73d1","api":{"playground":{"proxy":false}},"navbar":{"links":[{"href":"https://app.tetlith.com","label":"Dashboard"}],"primary":{"type":"button","label":"Get an API key","href":"https://app.tetlith.com/signup"}},"footer":{"socials":{}},"fonts":{"heading":{"family":"Inter"},"body":{"family":"Inter"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tetlith","hasAudioNarration":false,"actualSubdomain":"tetlith","customDomains":["docs.tetlith.com"],"gitSource":{"type":"github","owner":"raymondj9","repo":"tetlith-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6af19865ab0bbd1215007102","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"API Reference","count":27},{"language":"default","tag":"Endpoints","count":27},{"language":"default","tag":"Guides","count":9},{"language":"default","tag":"Accounts","count":8},{"language":"default","tag":"Entities","count":8},{"language":"default","tag":"Core concepts","count":4},{"language":"default","tag":"Get started","count":3},{"language":"default","tag":"Activity","count":3},{"language":"default","tag":"Transactions","count":3},{"language":"default","tag":"Webhooks","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"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":"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":"editor-metadata","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},{"name":"live-agents","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"concepts/errors","slug":"/concepts/errors","pageMetadata":{"title":"Errors","description":"One shape, everywhere — branch on the code, not the message","href":"/concepts/errors"},"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: \"One shape, everywhere — branch on the code, not the message\"\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`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tab,Table,Tabs}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Every error, from every layer, has the same body:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\t\"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"INSUFFICIENT_FUNDS\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\t\"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Account 5b6f… does not hold enough USDC_TRON to cover this transaction.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\t\"details\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"amount\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`code`})}),_jsxs(_components.td,{children:[`Stable and machine-readable. `,_jsx(_components.strong,{children:`Branch on this.`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`message`})}),_jsx(_components.td,{children:`Human-readable, for your logs — subject to change without notice.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`details`})}),_jsx(_components.td,{children:`Present on validation failures: one entry per rejected field.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`status-codes-you’ll-see-everywhere`,children:`Status codes you’ll see everywhere`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[`Malformed request, or a ledger rule refused it — `,_jsx(_components.code,{children:`code`}),` says which.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`401`})}),_jsx(_components.td,{children:`Missing, malformed, or revoked API key.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`403`})}),_jsx(_components.td,{children:`The key is valid but lacks the scope this operation requires.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`404`})}),_jsx(_components.td,{children:`No such record, or it belongs to another tenant.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`409`})}),_jsx(_components.td,{children:`Idempotency conflict — this key was already used with a different body.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`422`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`INSUFFICIENT_FUNDS`}),` and similar: well-formed, but the ledger says no.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`terminal-vs-retryable`,children:`Terminal vs. retryable`}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`Retry these`,id:`retry-these`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`429`}),` (honour `,_jsx(_components.code,{children:`Retry-After`}),`) and any `,_jsx(_components.code,{children:`5xx`}),`, always with the `,_jsx(_components.strong,{children:`same`}),`\nidempotency key. Anything else is not a transient failure.`]})}),_jsx(Tab,{title:`Don't retry these`,id:`dont-retry-these`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`422 INSUFFICIENT_FUNDS`}),`, `,_jsx(_components.code,{children:`400 UNBALANCED_TRANSACTION`}),`, and\n`,_jsx(_components.code,{children:`403 DESTINATION_SCREENED`}),` are terminal — the request was understood\nand refused. Retrying changes nothing; fix the underlying condition\nfirst (top up, correct the amount, or use an allowed destination).`]})})]})]})}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":"Errors","description":"One shape, everywhere — branch on the code, not the message","href":"/concepts/errors"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Status codes you’ll see everywhere","slug":"status-codes-you’ll-see-everywhere","depth":2,"children":[]},{"title":"Terminal vs. retryable","slug":"terminal-vs-retryable","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"tetlith","siteName":"Tetlith","title":"Errors - Tetlith","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-14T05:04:56.845Z","originalFileLocation":"concepts/errors.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=\"One shape, everywhere — branch on the code, not the message\">\u003cmeta data-mint-head name=\"application-name\" content=\"Tetlith\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tetlith/7kAsDe28vG4_93iU/_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/tetlith/7kAsDe28vG4_93iU/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tetlith/7kAsDe28vG4_93iU/_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/tetlith/7kAsDe28vG4_93iU/_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/tetlith/7kAsDe28vG4_93iU/_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/tetlith/7kAsDe28vG4_93iU/_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/tetlith/7kAsDe28vG4_93iU/_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/tetlith/7kAsDe28vG4_93iU/_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/tetlith/7kAsDe28vG4_93iU/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Errors - Tetlith\">\u003cmeta data-mint-head property=\"og:description\" content=\"One shape, everywhere — branch on the code, not the message\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tetlith\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tetlith.com/concepts/errors\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tetlith.mintlify.site/_mintlify/api/og/v2?division=Core+concepts\u0026amp;title=Errors\u0026amp;description=One+shape%2C+everywhere+%E2%80%94+branch+on+the+code%2C+not+the+message\u0026amp;theme=ae8eacbcfdfb24c3bc5cb424\u0026amp;signature=de92d51b5e8070ff2c08f67763fb9050289ede37eabf38ea18126a240288a2d6\">\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=\"Errors - Tetlith\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"One shape, everywhere — branch on the code, not the message\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tetlith.mintlify.site/_mintlify/api/og/v2?division=Core+concepts\u0026amp;title=Errors\u0026amp;description=One+shape%2C+everywhere+%E2%80%94+branch+on+the+code%2C+not+the+message\u0026amp;theme=ae8eacbcfdfb24c3bc5cb424\u0026amp;signature=de92d51b5e8070ff2c08f67763fb9050289ede37eabf38ea18126a240288a2d6\">\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/tetlith/7kAsDe28vG4_93iU/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Tetlith\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0a7f70\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tetlith.com/concepts/errors\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/concepts/errors.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tetlith.com/#organization\",\"name\":\"Tetlith\",\"url\":\"https://docs.tetlith.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tetlith/7DC9EdS9hm4SwFD8/logo/light.svg?fit=max\u0026auto=format\u0026n=7DC9EdS9hm4SwFD8\u0026q=85\u0026s=c9281db1c30cd1861b819e807fe6eb2b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tetlith.com#website\",\"name\":\"Tetlith\",\"url\":\"https://docs.tetlith.com\",\"publisher\":{\"@id\":\"https://docs.tetlith.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tetlith.com/concepts/errors#webpage\",\"url\":\"https://docs.tetlith.com/concepts/errors\",\"name\":\"Errors\",\"description\":\"One shape, everywhere — branch on the code, not the message\",\"dateModified\":\"2026-10-14T05:04:56.845Z\",\"isPartOf\":{\"@id\":\"https://docs.tetlith.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tetlith.com/concepts/errors#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tetlith.com/concepts/errors#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Core concepts\",\"item\":\"https://docs.tetlith.com/concepts/entities-and-accounts\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Errors\",\"item\":\"https://docs.tetlith.com/concepts/errors\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.tetlith.com/concepts/errors#article\",\"headline\":\"Errors\",\"name\":\"Errors\",\"description\":\"One shape, everywhere — branch on the code, not the message\",\"url\":\"https://docs.tetlith.com/concepts/errors\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tetlith.com/concepts/errors#webpage\"},\"dateModified\":\"2026-10-14T05:04:56.845Z\",\"publisher\":{\"@id\":\"https://docs.tetlith.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tetlith.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Tetlith\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Tetlith\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/concepts/errors.md","siteName":"Tetlith","nav":{"global":null,"tabs":[{"tab":"Guides","groups":[{"group":"Get started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Quickstart","href":"/quickstart"},{"title":"Authentication","href":"/authentication"}]},{"group":"Core concepts","pages":[{"title":"Entities \u0026 accounts","href":"/concepts/entities-and-accounts"},{"title":"Idempotency \u0026 amounts","description":"Safe retries, and why amounts are strings","href":"/concepts/idempotency"},{"title":"Errors","href":"/concepts/errors"},{"title":"Networks","description":"Testnet and mainnet are fully separate, end to end","href":"/concepts/networks"}]},{"group":"Webhooks","pages":[{"title":"Overview","href":"/webhooks/overview"},{"title":"Events","href":"/webhooks/events"}]}]},{"tab":"SDKs","pages":[{"title":"SDKs","href":"/sdks/typescript"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/entities/create-a-customer"}]}]},"basePath":"","title":"Errors - Tetlith","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":[],"chunks":[]}