Attach invoices and receipts to transactions, supplier invoices, and client invoices
The MCP server can attach a file (an invoice or a receipt) to Qonto without ever streaming the file bytes through the model’s context. It is a two-step handshake: the server hands your client a short-lived presigned upload URL, your client uploads the file straight to object storage, then the server forwards the staged file to Qonto.For reading, listing, or detaching attachments already on a transaction, see Transactions and statements.
request_attachment_upload returns a short-lived presigned upload_url and an opaque blob_ref.
Your client uploads the file to upload_url with an HTTP PUT, sending the same Content-Type. The bytes go straight to object storage, never through the model.
upload_attachment takes the blob_ref and a target, reads the staged file, and pushes it to Qonto.
# Step 2: your client PUTs the raw bytes to the presigned URLcurl -X PUT \ -H "Content-Type: application/pdf" \ --upload-file invoice-2026-06.pdf \ "$UPLOAD_URL"
Step 1. Returns a presigned upload_url (PUT), a blob_ref, the accepted content_type, the size limit, and an expiry. Accepts PDF, JPEG, and PNG up to 15 MB.
Object storage (presigned PUT)
upload_attachment
Step 2. Reads the staged blob_ref and forwards it to Qonto as the chosen target. The staged file is deleted once Qonto accepts it.
Attach the file to a transaction (transaction_id required). Qonto processes it asynchronously, so it can take a few seconds to surface in list_transaction_attachments.
Expiry: the presigned upload_url is valid for about 15 minutes. Request a fresh one if it lapses before the file is uploaded.
The presigned upload_url is a short-lived write credential to object storage. The server hands it to your client to upload the file; do not paste it into a chat where it may be logged or shared. Pass an idempotency_key to upload_attachment to make a retried upload safe.
Try it
Attach this receipt to my last Amazon transaction.Upload these supplier invoices and tell me the totals Qonto extracted.Create a draft client invoice for ACME from the attached PDF.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Qonto","colors":{"primary":"#0E0E0E","light":"#B0B0B0","dark":"#0E0E0E"},"logo":{"light":"https://mintcdn.com/qonto-6237c309/Op_emyzb5FlZ5x50/logo/qonto-developers-light.svg?fit=max\u0026auto=format\u0026n=Op_emyzb5FlZ5x50\u0026q=85\u0026s=a8ce932eeec004b77efe8c0f611c5c5d","dark":"https://mintcdn.com/qonto-6237c309/Op_emyzb5FlZ5x50/logo/qonto-developers-dark.svg?fit=max\u0026auto=format\u0026n=Op_emyzb5FlZ5x50\u0026q=85\u0026s=bae39034af9c6d95a7e2e1a84a3857af","href":"https://docs.qonto.com/"},"favicon":"https://mintcdn.com/qonto-6237c309/IZJ5MTjzXpp-Ln1p/favicon.png?fit=max\u0026auto=format\u0026n=IZJ5MTjzXpp-Ln1p\u0026q=85\u0026s=557b33e6df403e1a96ae4b380aa212aa","api":{"playground":{"display":"interactive"},"examples":{"defaults":"all","prefill":true}},"appearance":{"default":"light"},"background":{"color":{"dark":"#1d1d1b"}},"navbar":{"links":[{"href":"https://qonto.com/en/integrations?#search","label":"Integrations"}],"primary":{"type":"button","label":"Developer Portal","href":"https://developers.qonto.com/sign-in/"}},"footer":{"socials":{"x":"https://x.com/getqonto","linkedin":"https://www.linkedin.com/company/qonto","instagram":"https://www.instagram.com/qonto","facebook":"https://www.facebook.com/getqonto"}},"seo":{"metatags":{"application-name":"Qonto APIs","description":"Qonto provides 2 collections of REST APIs and a Sandbox environment to help you build integrations on top of Qonto accounts, transactions, memberships, etc; no matter what your use case is.","keywords":"qonto api, qonto api reference, qonto api doc"},"indexing":"all"},"fonts":{"heading":{"family":"PolySans","source":"https://mintlify-assets.b-cdn.net/fonts/polysans-neutral-b855437b9905fe21c922ad25ed73abdfe6a7a8f2445c6e418f7f41d6d95c061f.woff2","format":"woff2"},"body":{"family":"PolySans","source":"https://mintlify-assets.b-cdn.net/fonts/polysans-neutral-b855437b9905fe21c922ad25ed73abdfe6a7a8f2445c6e418f7f41d6d95c061f.woff2","format":"woff2"}},"contextual":{"options":["copy","view","assistant","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"qonto-6237c309","hasAudioNarration":false,"actualSubdomain":"qonto-6237c309","customDomains":["docs.qonto.com"],"gitSource":{"type":"github","owner":"qonto-private","repo":"public-doc","deployBranch":"master","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeaf9fafcff05cc6472fa64","collectionId":"ee58945a-0c1d-4122-a0e1-9bdfd370070d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeaf9fafcff05cc6472fa64"},"feedback":{"thumbs":true,"edits":false,"issues":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aedbba21ecc1e6d50691a65","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API","count":243},{"language":"default","tag":"Business API","count":221},{"language":"default","tag":"Partnerships","count":85},{"language":"default","tag":"Embed Qonto in your product","count":78},{"language":"default","tag":"Embed TypeScript SDK","count":61},{"language":"default","tag":"MCP","count":54},{"language":"default","tag":"Invoicing","count":53},{"language":"default","tag":"Guides","count":36},{"language":"default","tag":"Resources","count":34},{"language":"default","tag":"CLI","count":34}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"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},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"td code{overflow-wrap:normal}"}],"page":{"pagePath":"mcp/tools/attachments","slug":"/mcp/tools/attachments","pageMetadata":{"title":"Uploading attachments","description":"Attach invoices and receipts to transactions, supplier invoices, and client invoices","href":"/mcp/tools/attachments"},"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: \"Attach invoices and receipts to transactions, supplier invoices, and client invoices\"\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={a:`a`,blockquote:`blockquote`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The MCP server can attach a file (an invoice or a receipt) to Qonto without ever streaming the file bytes through the model’s context. It is a two-step handshake: the server hands your client a short-lived presigned upload URL, your client uploads the file straight to object storage, then the server forwards the staged file to Qonto.`}),`\n`,_jsxs(_components.p,{children:[`For reading, listing, or detaching attachments already on a transaction, see `,_jsx(_components.a,{href:`/mcp/tools/transactions-and-statements`,children:`Transactions and statements`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-two-step-flow`,children:`The two-step flow`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`request_attachment_upload`})}),` returns a short-lived presigned `,_jsx(_components.code,{children:`upload_url`}),` and an opaque `,_jsx(_components.code,{children:`blob_ref`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Your client uploads the file`}),` to `,_jsx(_components.code,{children:`upload_url`}),` with an HTTP `,_jsx(_components.code,{children:`PUT`}),`, sending the same `,_jsx(_components.code,{children:`Content-Type`}),`. The bytes go straight to object storage, never through the model.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`upload_attachment`})}),` takes the `,_jsx(_components.code,{children:`blob_ref`}),` and a `,_jsx(_components.code,{children:`target`}),`, reads the staged file, and pushes it to Qonto.`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Step 2: your client PUTs the raw bytes to the presigned URL`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` PUT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/pdf\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --upload-file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` invoice-2026-06.pdf`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$UPLOAD_URL`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`tools`,children:`Tools`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Tool`}),_jsx(_components.th,{children:`What it does`}),_jsx(_components.th,{children:`Upstream`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`request_attachment_upload`})}),_jsxs(_components.td,{children:[`Step 1. Returns a presigned `,_jsx(_components.code,{children:`upload_url`}),` (PUT), a `,_jsx(_components.code,{children:`blob_ref`}),`, the accepted `,_jsx(_components.code,{children:`content_type`}),`, the size limit, and an expiry. Accepts PDF, JPEG, and PNG up to 15 MB.`]}),_jsx(_components.td,{children:`Object storage (presigned PUT)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`upload_attachment`})}),_jsxs(_components.td,{children:[`Step 2. Reads the staged `,_jsx(_components.code,{children:`blob_ref`}),` and forwards it to Qonto as the chosen `,_jsx(_components.code,{children:`target`}),`. The staged file is deleted once Qonto accepts it.`]}),_jsxs(_components.td,{children:[`Depends on `,_jsx(_components.code,{children:`target`}),` (see below)`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`targets`,children:`Targets`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`upload_attachment`}),` routes the file to one of four destinations via its `,_jsx(_components.code,{children:`target`}),` argument:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:_jsx(_components.code,{children:`target`})}),_jsx(_components.th,{children:`What it does`}),_jsx(_components.th,{children:`Returns`}),_jsx(_components.th,{children:`Upstream`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`standalone`})}),_jsx(_components.td,{children:`Create a reusable attachment, not linked to anything yet.`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`attachment_id`}),`, to reference from a transfer, supplier invoice, or another `,_jsx(_components.code,{children:`attachment_id`}),` field.`]}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/business-api/transactions-statements/attachments/upload-an-attachment`,children:`Upload an attachment`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`transaction`})}),_jsxs(_components.td,{children:[`Attach the file to a transaction (`,_jsx(_components.code,{children:`transaction_id`}),` required). Qonto processes it asynchronously, so it can take a few seconds to surface in `,_jsx(_components.code,{children:`list_transaction_attachments`}),`.`]}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/business-api/transactions-statements/attachments-in-transactions/upload-an-attachment-to-a-transaction`,children:`Upload an attachment to a transaction`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`supplier_invoice`})}),_jsx(_components.td,{children:`Create a supplier invoice from the file. Qonto OCR then extracts the supplier, invoice number, dates, amounts, and VAT. The per-file limit is 10 MB.`}),_jsxs(_components.td,{children:[`The raw `,_jsx(_components.code,{children:`response.supplier_invoices`}),` and `,_jsx(_components.code,{children:`response.errors`}),` for the per-item outcome.`]}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/business-api/spend-management/supplier-invoices/create-supplier-invoices`,children:`Create supplier invoices`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`client_invoice`})}),_jsx(_components.td,{children:`Stage the file for a client invoice.`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`upload_id`}),`, to pass to `,_jsx(_components.code,{children:`create_client_invoice`}),` as `,_jsx(_components.code,{children:`upload_id`}),`.`]}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/business-api/invoicing/client-invoices/create-a-client-invoice-upload`,children:`Create a client invoice upload`})})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`limits-and-formats`,children:`Limits and formats`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Formats:`}),` PDF, JPEG, PNG.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Size:`}),` up to 15 MB (10 MB for `,_jsx(_components.code,{children:`supplier_invoice`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Expiry:`}),` the presigned `,_jsx(_components.code,{children:`upload_url`}),` is valid for about 15 minutes. Request a fresh one if it lapses before the file is uploaded.`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The presigned `,_jsx(_components.code,{children:`upload_url`}),` is a short-lived write credential to object storage. The server hands it to your client to upload the file; do not paste it into a chat where it may be logged or shared. Pass an `,_jsx(_components.code,{children:`idempotency_key`}),` to `,_jsx(_components.code,{children:`upload_attachment`}),` to make a retried upload safe.`]})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Try it`})}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsx(_components.p,{children:`Attach this receipt to my last Amazon transaction.`}),`\n`,_jsx(_components.p,{children:`Upload these supplier invoices and tell me the totals Qonto extracted.`}),`\n`,_jsx(_components.p,{children:`Create a draft client invoice for ACME from the attached PDF.`}),`\n`]})]})}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":"Uploading attachments","description":"Attach invoices and receipts to transactions, supplier invoices, and client invoices","href":"/mcp/tools/attachments"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"The two-step flow","slug":"the-two-step-flow","depth":2,"children":[]},{"title":"Tools","slug":"tools","depth":2,"children":[]},{"title":"Targets","slug":"targets","depth":2,"children":[]},{"title":"Limits and formats","slug":"limits-and-formats","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/qonto-6237c309/825d995cd157b7a6/zendesk-widget.js"],"subdomain":"qonto-6237c309","siteName":"Qonto","title":"Uploading attachments - Qonto","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T13:08:58.936Z","originalFileLocation":"mcp/tools/attachments.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=\"light\"}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=\"Attach invoices and receipts to transactions, supplier invoices, and client invoices\">\u003cmeta data-mint-head name=\"keywords\" content=\"qonto api, qonto api reference, qonto api doc\">\u003cmeta data-mint-head name=\"application-name\" content=\"Qonto\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/qonto-6237c309/-JBBMXOClYmTjqns/_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/qonto-6237c309/-JBBMXOClYmTjqns/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/qonto-6237c309/-JBBMXOClYmTjqns/_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/qonto-6237c309/-JBBMXOClYmTjqns/_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/qonto-6237c309/-JBBMXOClYmTjqns/_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/qonto-6237c309/-JBBMXOClYmTjqns/_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/qonto-6237c309/-JBBMXOClYmTjqns/_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/qonto-6237c309/-JBBMXOClYmTjqns/_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/qonto-6237c309/-JBBMXOClYmTjqns/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Uploading attachments - Qonto\">\u003cmeta data-mint-head property=\"og:description\" content=\"Attach invoices and receipts to transactions, supplier invoices, and client invoices\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Qonto\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.qonto.com/mcp/tools/attachments\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://qonto-6237c309.mintlify.site/_mintlify/api/og/v2?division=Tools\u0026amp;title=Uploading+attachments\u0026amp;description=Attach+invoices+and+receipts+to+transactions%2C+supplier+invoices%2C+and+client+invoices\u0026amp;theme=6655e5e0682251dcd0a1ba16\u0026amp;signature=dd779522049968716726c795f2c4e2d2278516da1bd8143b68c46cef6b9c8943\">\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=\"Uploading attachments - Qonto\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Attach invoices and receipts to transactions, supplier invoices, and client invoices\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://qonto-6237c309.mintlify.site/_mintlify/api/og/v2?division=Tools\u0026amp;title=Uploading+attachments\u0026amp;description=Attach+invoices+and+receipts+to+transactions%2C+supplier+invoices%2C+and+client+invoices\u0026amp;theme=6655e5e0682251dcd0a1ba16\u0026amp;signature=dd779522049968716726c795f2c4e2d2278516da1bd8143b68c46cef6b9c8943\">\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/qonto-6237c309/-JBBMXOClYmTjqns/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Qonto\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0E0E0E\">\u003cmeta data-mint-head name=\"application-name\" content=\"Qonto APIs\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.qonto.com/mcp/tools/attachments\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/mcp/tools/attachments.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.qonto.com/#organization\",\"name\":\"Qonto\",\"url\":\"https://docs.qonto.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/qonto-6237c309/Op_emyzb5FlZ5x50/logo/qonto-developers-light.svg?fit=max\u0026auto=format\u0026n=Op_emyzb5FlZ5x50\u0026q=85\u0026s=a8ce932eeec004b77efe8c0f611c5c5d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.qonto.com#website\",\"name\":\"Qonto\",\"url\":\"https://docs.qonto.com\",\"publisher\":{\"@id\":\"https://docs.qonto.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.qonto.com/mcp/tools/attachments#webpage\",\"url\":\"https://docs.qonto.com/mcp/tools/attachments\",\"name\":\"Uploading attachments\",\"description\":\"Attach invoices and receipts to transactions, supplier invoices, and client invoices\",\"dateModified\":\"2026-10-27T13:08:58.936Z\",\"isPartOf\":{\"@id\":\"https://docs.qonto.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.qonto.com/mcp/tools/attachments#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.qonto.com/mcp/tools/attachments#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"MCP\",\"item\":\"https://docs.qonto.com/mcp/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tools\",\"item\":\"https://docs.qonto.com/mcp/tools/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Uploading attachments\",\"item\":\"https://docs.qonto.com/mcp/tools/attachments\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.qonto.com/mcp/tools/attachments#article\",\"headline\":\"Uploading attachments\",\"name\":\"Uploading attachments\",\"description\":\"Attach invoices and receipts to transactions, supplier invoices, and client invoices\",\"url\":\"https://docs.qonto.com/mcp/tools/attachments\",\"mainEntityOfPage\":{\"@id\":\"https://docs.qonto.com/mcp/tools/attachments#webpage\"},\"dateModified\":\"2026-10-27T13:08:58.936Z\",\"publisher\":{\"@id\":\"https://docs.qonto.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.qonto.com#website\"}}]}\u003c/script>","siteName":"Qonto","nav":{"global":null,"tabs":[{"tab":"Home","icon":"house","pages":[{"title":"Home","href":""}]},{"tab":"Guides","icon":"book-open","menu":[{"item":"Technical guides","icon":"compass","pages":[{"title":"Technical guides","href":"/guides"}]},{"item":"Use cases","icon":"briefcase","pages":[{"title":"Use cases","href":"/guides/use-cases"}]}],"pages":[{"title":"Guides","href":"/guides"}]},{"tab":"API","icon":"code","pages":[{"title":"API","href":"/api-reference/business-api/introduction/overview"}]},{"tab":"MCP","icon":"robot","groups":[{"group":"MCP","pages":[{"title":"Overview","href":"/mcp/overview"},{"title":"What you can do","href":"/mcp/capabilities"},{"title":"Authentication","href":"/mcp/authentication"},{"title":"Multi-organization","href":"/mcp/multi-organization"},{"title":"Security and limits","href":"/mcp/security"},{"title":"Terms and Disclosures","href":"/mcp/terms-and-disclosures"},{"group":"Install","pages":[{"title":"Quickstart","href":"/mcp/install/quickstart"},{"title":"Claude Desktop","href":"/mcp/install/claude-desktop"},{"title":"Claude Web","href":"/mcp/install/claude-web"},{"title":"Claude Code","href":"/mcp/install/claude-code"},{"title":"Cursor","href":"/mcp/install/cursor"},{"title":"VS Code","href":"/mcp/install/vscode"},{"title":"ChatGPT","href":"/mcp/install/chatgpt"},{"title":"Mistral Le Chat","href":"/mcp/install/mistral"},{"title":"Notion","href":"/mcp/install/notion"}]},{"group":"Tools","pages":[{"title":"Tool reference","href":"/mcp/tools/overview"},{"title":"Accounts and organizations","href":"/mcp/tools/accounts-and-organizations"},{"title":"Cards","href":"/mcp/tools/cards"},{"title":"Transactions and statements","description":"Read transactions, pull statements, and manage attachments","href":"/mcp/tools/transactions-and-statements"},{"title":"Uploading attachments","href":"/mcp/tools/attachments"},{"title":"Cash flow categories","description":"Browse the cash flow category catalog, grow it, and tag transactions","href":"/mcp/tools/cash-flow-categories"},{"title":"Clients","href":"/mcp/tools/clients"},{"title":"Invoices and billing","href":"/mcp/tools/invoices"},{"title":"Payment links","href":"/mcp/tools/payment-links"},{"title":"Requests","href":"/mcp/tools/requests"},{"title":"Plans and pricing","href":"/mcp/tools/plans-and-pricing"}]},{"title":"Troubleshooting","href":"/mcp/troubleshooting"}]}]},{"tab":"Resources","icon":"toolbox","menu":[{"item":"CLI","icon":"terminal","pages":[{"title":"CLI","href":"/cli/overview"}]},{"item":"FAQs","icon":"circle-question","pages":[{"title":"FAQs","href":"/faq-articles/faq-home"}]},{"item":"Support","icon":"life-ring","pages":[{"title":"Support","href":"/support"}]},{"item":"Security \u0026 compliance","icon":"shield-halved","pages":[{"title":"Security \u0026 compliance","href":"/security-and-compliance/security-measures"}]}],"pages":[{"title":"Resources","href":"/cli/overview"}]},{"tab":"Partnerships","icon":"handshake","menu":[{"item":"Integrations with Qonto","icon":"puzzle-piece","pages":[{"title":"Integrations with Qonto","href":"/partnerships/integrations"}]},{"item":"Embed Qonto in your product","icon":"link","pages":[{"title":"Embed Qonto in your product","href":"/partnerships/embed/overview"}]},{"item":"Company creation","icon":"building","pages":[{"title":"Company creation","href":"/partnerships/company-creation"}]},{"item":"Plateforme Agréée as a Service","icon":"file-invoice","pages":[{"title":"Plateforme Agréée as a Service","href":"/partnerships/plateforme-agreee-as-a-service"}]}],"pages":[{"title":"Partnerships","href":"/partnerships/integrations"}]}]},"basePath":"","title":"Uploading attachments - Qonto","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":[],"chunks":[]}