Generates short-lived presigned URLs that you can use to upload bank
statement PDFs directly to Teal-managed storage. Use this endpoint
before uploading any files and submitting them for processing.
PUT
/
documents
/
bank-statements
/
presign
Generate presigned URLs for bank statement uploads
Optional authorisation ID to associate with this request. If not provided, the system will attempt to resolve a valid authorisation for the user automatically.
Generated URLs and metadata for uploading the requested files.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Teal","colors":{"primary":"#0D9373","light":"#07C983","dark":"#0D9373"},"logo":{"light":"https://mintcdn.com/teal/Bcr09DVpVxdrVRJl/logo/light.svg?fit=max\u0026auto=format\u0026n=Bcr09DVpVxdrVRJl\u0026q=85\u0026s=f1f94f62054040d698706983d3b88016","dark":"https://mintcdn.com/teal/Bcr09DVpVxdrVRJl/logo/dark.svg?fit=max\u0026auto=format\u0026n=Bcr09DVpVxdrVRJl\u0026q=85\u0026s=e6414f548a8e27e0c07175a488d2f256"},"favicon":"https://mintcdn.com/teal/Bcr09DVpVxdrVRJl/favicon.svg?fit=max\u0026auto=format\u0026n=Bcr09DVpVxdrVRJl\u0026q=85\u0026s=dfb4da63f6b3fdca92c71519210b7ccd","navbar":{"links":[{"href":"mailto:hello@goteal.co","label":"Support"}]},"footer":{"socials":{"website":"https://goteal.co","linkedin":"https://www.linkedin.com/company/goteal"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Website","icon":"book-open-cover","href":"https://goteal.co"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"teal","hasAudioNarration":false,"actualSubdomain":"teal","customDomains":["docs.goteal.co"],"gitSource":{"type":"github","owner":"teal-connect","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adb82c56e43bdfe55f01a95","collectionId":"a44b63e9-4fff-4cf7-86d1-961ae27c6af7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adb82c56e43bdfe55f01a95"},"entitlements":{},"buildId":"6adb82c56e43bdfe55f01a95","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API Reference","count":45},{"language":"default","tag":"Accounts","count":7},{"language":"default","tag":"Authorisations","count":7},{"language":"default","tag":"Doc Scan","count":6},{"language":"default","tag":"Payroll","count":6},{"language":"default","tag":"Users","count":6},{"language":"default","tag":"Documentation","count":5},{"language":"default","tag":"Get Started","count":5},{"language":"default","tag":"Webhooks","count":4},{"language":"default","tag":"Configuration","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":"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":"byok-sep-25","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":"billing-updated-9-15","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/documents/bank-statements-presign","slug":"/api-reference/documents/bank-statements-presign","pageMetadata":{"title":"Presign bank statement uploads","openapi":"PUT /documents/bank-statements/presign","description":"Generates short-lived presigned URLs that you can use to upload bank\nstatement PDFs directly to Teal-managed storage. Use this endpoint\nbefore uploading any files and submitting them for processing.\n","href":"/api-reference/documents/bank-statements-presign"},"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: \"Generates short-lived presigned URLs that you can use to upload bank\\nstatement PDFs directly to Teal-managed storage. Use this endpoint\\nbefore uploading any files and submitting them for processing.\"\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Presign bank statement uploads","openapi":"PUT /documents/bank-statements/presign","description":"Generates short-lived presigned URLs that you can use to upload bank\nstatement PDFs directly to Teal-managed storage. Use this endpoint\nbefore uploading any files and submitting them for processing.\n","href":"/api-reference/documents/bank-statements-presign"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Generate presigned URLs for bank statement uploads","parameters":["e7d148b3-cee3-4bf4-9e2b-c49c48af1f33"],"description":"Generates short-lived presigned URLs that you can use to upload bank\nstatement PDFs directly to Teal-managed storage. Use this endpoint\nbefore uploading any files and submitting them for processing.\n","security":["a73de59d-0ef8-4ffd-adef-de9238658601"],"requestBody":"c32b4fe9-6e99-4368-93aa-f50a54e1d9db","responses":{"200":"08e370ba-5821-4f89-8ade-0fd7f68b80f7","400":"0967a0e6-5db6-4cec-a364-606344736b81","401":"1ebeb244-1017-486c-b19d-f7f67dc0a4d7"},"method":"put","type":"path","servers":["742833a9-e448-4843-b38b-cd5bf228a9b1","77e4d818-25f3-46e0-88a5-6a8a8c77be0b"],"path":"/documents/bank-statements/presign","baseUrlOptions":["https://api.sandbox.goteal.co","https://api.goteal.co"],"title":"Generate presigned URLs for bank statement uploads","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"e7d148b3-cee3-4bf4-9e2b-c49c48af1f33":{"name":"x-teal-authorisation-id","in":"header","required":false,"description":"Optional authorisation ID to associate with this request. If not provided, the system will attempt to resolve a valid authorisation for the user automatically.","schema":{"type":"string","format":"uuid","example":"7f3b8c2a-1d4e-4f6a-8b8c-9a0b1c2d3e4f","isRequired":false,"description":"Optional authorisation ID to associate with this request. If not provided, the system will attempt to resolve a valid authorisation for the user automatically.","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["files"],"properties":{"files":{"type":"array","description":"Bank statement files that require presigned upload URLs","minItems":1,"items":{"type":"object","required":["file_name"],"properties":{"file_name":{"type":"string","description":"File name including extension. Must be a PDF.","example":"hsbc-january-2024.pdf","isRequired":true,"uniqueKey":"files.items.[INDEX].file_name","typeLabel":"string"},"external_id":{"type":"string","description":"Optional identifier echoed back in the presign response.","example":"ext-stmt-2024-01","uniqueKey":"files.items.[INDEX].external_id","typeLabel":"string"}},"uniqueKey":"files.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"files","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"files":[{"file_name":"hsbc-january-2024.pdf","external_id":"ext-stmt-2024-01"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"08e370ba-5821-4f89-8ade-0fd7f68b80f7":{"description":"Presigned URLs generated successfully","content":{"application/json":{"schema":{"type":"object","required":["presigned_urls"],"properties":{"presigned_urls":{"type":"array","description":"Generated URLs and metadata for uploading the requested files.","items":{"type":"object","required":["file_name","presigned_url","path"],"properties":{"file_name":{"type":"string","description":"The requested file name.","example":"hsbc-january-2024.pdf","isRequired":true,"uniqueKey":"presigned_urls.items.[INDEX].file_name","typeLabel":"string"},"presigned_url":{"type":"string","format":"uri","description":"The URL to upload the file content to via HTTP PUT.","example":"https://s3.amazonaws.com/bucket/presigned-upload-key?signature=abc123","isRequired":true,"uniqueKey":"presigned_urls.items.[INDEX].presigned_url","typeLabel":"string\u003curi>"},"path":{"type":"string","description":"The storage path that must be echoed when submitting the bank statements.","example":"client/acct123/users/user456/stmt1.pdf","isRequired":true,"uniqueKey":"presigned_urls.items.[INDEX].path","typeLabel":"string"},"external_id":{"type":"string","description":"Optional identifier provided in the presign request.","example":"ext-stmt-2024-01","uniqueKey":"presigned_urls.items.[INDEX].external_id","typeLabel":"string"}},"uniqueKey":"presigned_urls.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"presigned_urls","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"presigned_urls":[{"file_name":"hsbc-january-2024.pdf","presigned_url":"https://s3.amazonaws.com/bucket/presigned-upload-key?signature=abc123","path":"client/acct123/users/user456/stmt1.pdf","external_id":"ext-stmt-2024-01"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"0967a0e6-5db6-4cec-a364-606344736b81":{"description":"Bad request if one of the required parameters is missing","content":{"application/json":{"schema":{"required":["errors"],"type":"object","properties":{"errors":{"type":"array","items":{"type":"string","uniqueKey":"errors.items.[INDEX]","typeLabel":"string"},"description":"An array of messages describing the errors","example":["The request is missing the required field `name`"],"isRequired":true,"uniqueKey":"errors","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":["The request is missing the required field `name`"]}}},"exampleType":"generated"}},"exampleType":"generated"},"1ebeb244-1017-486c-b19d-f7f67dc0a4d7":{"description":"Unauthorized if the X-API-KEY is not provided or is wrong","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"string","uniqueKey":"errors.items.[INDEX]","typeLabel":"string"},"description":"An array of messages describing the errors","example":["Not Authorization: Bearer \u003ctoken> provided or wrong value"],"uniqueKey":"errors","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":["Not Authorization: Bearer \u003ctoken> provided or wrong value"]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"a73de59d-0ef8-4ffd-adef-de9238658601":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Bearer token for authentication. The token should be the one returned by the /user-tokens endpoint.","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"742833a9-e448-4843-b38b-cd5bf228a9b1":{"url":"https://api.sandbox.goteal.co","description":"Sandbox server for experiments"},"77e4d818-25f3-46e0-88a5-6a8a8c77be0b":{"url":"https://api.goteal.co","description":"Production server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Bearer token for authentication. The token should be the one returned by the /user-tokens endpoint.","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer token for authentication. The token should be the one returned by the /user-tokens endpoint.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"teal","siteName":"Teal","title":"Presign bank statement uploads - Teal","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-04-14T10:54:12.380Z","originalFileLocation":"api-reference/documents/bank-statements-presign.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=\"Generates short-lived presigned URLs that you can use to upload bank statement PDFs directly to Teal-managed storage. Use this endpoint before uploading any files and submitting them for processing.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Teal\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/teal/LMHi1fxtC26ppOnK/_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/teal/LMHi1fxtC26ppOnK/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/teal/LMHi1fxtC26ppOnK/_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/teal/LMHi1fxtC26ppOnK/_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/teal/LMHi1fxtC26ppOnK/_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/teal/LMHi1fxtC26ppOnK/_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/teal/LMHi1fxtC26ppOnK/_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/teal/LMHi1fxtC26ppOnK/_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/teal/LMHi1fxtC26ppOnK/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Presign bank statement uploads - Teal\">\u003cmeta data-mint-head property=\"og:description\" content=\"Generates short-lived presigned URLs that you can use to upload bank statement PDFs directly to Teal-managed storage. Use this endpoint before uploading any files and submitting them for processing.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Teal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.goteal.co/api-reference/documents/bank-statements-presign\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://teal.mintlify.app/_mintlify/api/og/v2?division=Doc+Scan\u0026amp;title=Presign+bank+statement+uploads\u0026amp;description=Generates+short-lived+presigned+URLs+that+you+can+use+to+upload+bank%0Astatement+PDFs+directly+to+Teal-managed+storage.+Use+this+endpoint%0Abefore+uploading+any+fil\u0026amp;theme=20e9f009a1ad75d8032a04e4\u0026amp;signature=c7404931963ecd74778642585389ad6349b2f349564873878abb619ea0827343\">\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=\"Presign bank statement uploads - Teal\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Generates short-lived presigned URLs that you can use to upload bank statement PDFs directly to Teal-managed storage. Use this endpoint before uploading any files and submitting them for processing.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://teal.mintlify.app/_mintlify/api/og/v2?division=Doc+Scan\u0026amp;title=Presign+bank+statement+uploads\u0026amp;description=Generates+short-lived+presigned+URLs+that+you+can+use+to+upload+bank%0Astatement+PDFs+directly+to+Teal-managed+storage.+Use+this+endpoint%0Abefore+uploading+any+fil\u0026amp;theme=20e9f009a1ad75d8032a04e4\u0026amp;signature=c7404931963ecd74778642585389ad6349b2f349564873878abb619ea0827343\">\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/teal/LMHi1fxtC26ppOnK/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Teal\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0D9373\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.goteal.co/api-reference/documents/bank-statements-presign\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/documents/bank-statements-presign.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.goteal.co/#organization\",\"name\":\"Teal\",\"url\":\"https://docs.goteal.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/teal/Bcr09DVpVxdrVRJl/logo/light.svg?fit=max\u0026auto=format\u0026n=Bcr09DVpVxdrVRJl\u0026q=85\u0026s=f1f94f62054040d698706983d3b88016\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.goteal.co#website\",\"name\":\"Teal\",\"url\":\"https://docs.goteal.co\",\"publisher\":{\"@id\":\"https://docs.goteal.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.goteal.co/api-reference/documents/bank-statements-presign#webpage\",\"url\":\"https://docs.goteal.co/api-reference/documents/bank-statements-presign\",\"name\":\"Presign bank statement uploads\",\"description\":\"Generates short-lived presigned URLs that you can use to upload bank statement PDFs directly to Teal-managed storage. Use this endpoint before uploading any files and submitting them for processing.\",\"dateModified\":\"2026-04-14T10:54:12.380Z\",\"isPartOf\":{\"@id\":\"https://docs.goteal.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.goteal.co/api-reference/documents/bank-statements-presign#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.goteal.co/api-reference/documents/bank-statements-presign#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Doc Scan\",\"item\":\"https://docs.goteal.co/api-reference/documents/list\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Presign bank statement uploads\",\"item\":\"https://docs.goteal.co/api-reference/documents/bank-statements-presign\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.goteal.co/api-reference/documents/bank-statements-presign#apireference\",\"headline\":\"Presign bank statement uploads\",\"name\":\"Presign bank statement uploads\",\"description\":\"Generates short-lived presigned URLs that you can use to upload bank statement PDFs directly to Teal-managed storage. Use this endpoint before uploading any files and submitting them for processing.\",\"url\":\"https://docs.goteal.co/api-reference/documents/bank-statements-presign\",\"mainEntityOfPage\":{\"@id\":\"https://docs.goteal.co/api-reference/documents/bank-statements-presign#webpage\"},\"dateModified\":\"2026-04-14T10:54:12.380Z\",\"publisher\":{\"@id\":\"https://docs.goteal.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.goteal.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Teal\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Teal","nav":{"global":{"anchors":[{"anchor":"Website","icon":"book-open-cover","href":"https://goteal.co"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"API Documentation","pages":[{"title":"Quickstart","href":"/api-reference/quickstart"},{"title":"Webhooks","href":"/api-reference/webhooks"}]},{"group":"Users","pages":[{"title":"Create a User","openapi":"POST /users","href":"/api-reference/users/create"},{"title":"Retrieve a user","openapi":"GET /users/{user_id}","href":"/api-reference/users/get"},{"title":"Update a User","openapi":"PATCH /users/{user_id}","href":"/api-reference/users/update"},{"title":"List all users","openapi":"GET /users","href":"/api-reference/users/list"},{"title":"List all recurring users","openapi":"GET /users/recurring","href":"/api-reference/users/list-recurring"},{"title":"Delete a user","openapi":"DELETE /users/{user_id}","href":"/api-reference/users/delete"}]},{"group":"User Token","pages":[{"title":"Generate User token","openapi":"POST /user-tokens","href":"/api-reference/users/tokens"}]},{"group":"Accounts","pages":[{"title":"Create an account","openapi":"POST /accounts","href":"/api-reference/accounts/create"},{"title":"Submit MFA response","openapi":"PUT /accounts/{account_id}/mfa","href":"/api-reference/accounts/mfa"},{"title":"Direct Connection","openapi":"POST /accounts/direct-connections","href":"/api-reference/accounts/direct-connections-create"},{"title":"List all accounts","openapi":"GET /accounts","href":"/api-reference/accounts/list"},{"title":"List all recurring accounts","openapi":"GET /accounts/recurring","href":"/api-reference/accounts/list-recurring"},{"title":"Get an account","openapi":"GET /accounts/{account_id}","href":"/api-reference/accounts/get"},{"title":"Delete an account","openapi":"DELETE /accounts/{account_id}","href":"/api-reference/accounts/delete"}]},{"group":"Payroll","pages":[{"title":"Query Payroll Connection","openapi":"POST /payroll/entries/connections","href":"/api-reference/payroll/connections-create"},{"title":"Generate presigned payslip URLs","openapi":"POST /payroll/entries/payslips/presign","href":"/api-reference/payroll/payslips-presign"},{"title":"Payslips upload","openapi":"POST /payroll/entries/payslips","href":"/api-reference/payroll/payslips-create"},{"title":"Get Payroll","openapi":"GET /payroll/{user_id}","href":"/api-reference/payroll/get"},{"title":"List all entries","openapi":"GET /payroll/entries","href":"/api-reference/payroll/entries-list"},{"title":"Delete an entry","openapi":"DELETE /payroll/entries/{entry_id}","href":"/api-reference/payroll/entries-delete"}]},{"group":"Expenditure","pages":[{"title":"Get ONS expenditure","openapi":"GET /expenditure/{user_id}/ons","href":"/api-reference/expenditure/ons"}]},{"group":"Gov Connect","pages":[{"title":"Query Gov Connection","openapi":"POST /gov-connect/entries/connections","href":"/api-reference/gov-connect/connections-create"},{"title":"Get Gov Connect income","openapi":"GET /gov-connect/{user_id}","href":"/api-reference/gov-connect/get"}]},{"group":"Doc Scan","pages":[{"title":"Lists all documents","openapi":"GET /documents","href":"/api-reference/documents/list"},{"title":"Retrieve a specific document","openapi":"GET /documents/{document_id}","href":"/api-reference/documents/get"},{"title":"Delete a document","openapi":"DELETE /documents/{document_id}","description":null,"href":"/api-reference/documents/delete"},{"title":"Presign bank statement uploads","openapi":"PUT /documents/bank-statements/presign","href":"/api-reference/documents/bank-statements-presign"},{"title":"Upload bank statements","openapi":"PUT /documents/bank-statements","description":"Uploading bank statements is a three-step flow:\n 1. Request upload slots with `PUT /documents/bank-statements/presign`,\n providing each PDF file name (and optional external identifier).\n The response includes `presigned_url` and `path` values for every\n requested file.\n 2. Upload the PDF content to every `presigned_url` using an HTTP `PUT`\n request with `Content-Type: application/octet-stream`.\n 3. Call this endpoint with the JSON payload returned in step one,\n echoing the `path` (and optional `external_document_id`) for every\n uploaded file so Teal can extract and store the bank statement data.\nThe `path` values you submit must match the ones returned by the presign\nstep. Any files that failed validation or extraction are reported in the\n`bank_statement_errors` array.\n","href":"/api-reference/documents/bank-statements-upload"},{"title":"List bank statement submissions","openapi":"GET /bankstatements/{user_id}","href":"/api-reference/documents/bank-statements-get"}]},{"group":"Authorisations","pages":[{"title":"Create an Authorisation Term","openapi":"POST /authorisations/terms","href":"/api-reference/authorisations/terms-create"},{"title":"List Authorisation Terms","openapi":"GET /authorisations/terms","href":"/api-reference/authorisations/terms-list"},{"title":"Get an Authorisation Term","openapi":"GET /authorisations/terms/{term_id}","href":"/api-reference/authorisations/terms-get"},{"title":"Get Latest Term for User","openapi":"GET /authorisations/terms/latest","href":"/api-reference/authorisations/terms-latest"},{"title":"Record Authorisation Acceptance","openapi":"POST /authorisations","href":"/api-reference/authorisations/create"},{"title":"List User Authorisations","openapi":"GET /authorisations","href":"/api-reference/authorisations/list"},{"title":"Revoke an Authorisation","openapi":"PUT /authorisations/{authorisation_id}/revoke","href":"/api-reference/authorisations/revoke"}]},{"group":"Providers","pages":[{"title":"List all providers","openapi":"GET /providers","href":"/api-reference/providers/list"}]},{"group":"Configuration","pages":[{"title":"Get client configuration","openapi":"GET /configuration","href":"/api-reference/configuration/get"},{"title":"Update client configuration","openapi":"PATCH /configuration","href":"/api-reference/configuration/update"}]},{"group":"Webhooks","pages":[{"title":"Create a Webhook","openapi":"POST /webhooks","href":"/api-reference/webhooks/create"},{"title":"Retrieve a Webhook","openapi":"GET /webhooks/{webhook_id}","href":"/api-reference/webhooks/get"},{"title":"List all webhooks","openapi":"GET /webhooks","href":"/api-reference/webhooks/list"},{"title":"Delete a Webhook","openapi":"DELETE /webhooks/{webhook_id}","href":"/api-reference/webhooks/delete"}]}]}]},"basePath":"","title":"Presign bank statement uploads - Teal","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}