{"info":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","description":"<html><head></head><body><p>Convert bank statement PDFs into structured data. Upload a PDF, poll for completion, then export as JSON, CSV, XLSX, QBO, or Xero-compatible formats.</p>\n<p>Contact Support:<br>Name: Bankstatemently Support<br>Email: <a href=\"https://mailto:help@bankstatemently.com\">help@bankstatemently.com</a></p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"52862871","collectionId":"11c37c3c-db86-4fab-a0b4-b37cd2634064","publishedId":"2sBXcKBHki","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-03-03T12:32:10.000Z"},"item":[{"name":"documents","item":[{"name":"{id}","item":[{"name":"data","item":[{"name":"Get structured document data","id":"6b21b93c-00f1-45d0-ab4d-8c81a907f711","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.bankstatemently.com/v1/documents/:id/data?raw=false&limit=500&offset=0","description":"<p>Retrieve structured document data including accounts and transactions. Only available when document status is <code>completed</code>. Transactions are paginated. Rate limit: 60 requests per minute.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}},"urlObject":{"path":["documents",":id","data"],"host":["https://api.bankstatemently.com/v1"],"query":[{"description":{"content":"<p>Set to <code>true</code> to include <code>originalData</code> (raw pre-normalization cell values) on each transaction. When enabled, max limit is reduced to 500.</p>\n","type":"text/plain"},"key":"raw","value":"false"},{"description":{"content":"<p>Maximum number of transactions per page.</p>\n","type":"text/plain"},"key":"limit","value":"500"},{"description":{"content":"<p>Number of transactions to skip for pagination.</p>\n","type":"text/plain"},"key":"offset","value":"0"}],"variable":[{"description":{"content":"<p>The document UUID.</p>\n","type":"text/plain"},"type":"any","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","key":"id"}]}},"response":[{"id":"b0d0a5b3-57f2-4f16-be01-afbcae1cd723","name":"Structured document data with accounts and transactions.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/data?raw=false&limit=500&offset=0","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","data"],"query":[{"description":"Set to `true` to include `originalData` (raw pre-normalization cell values) on each transaction. When enabled, max limit is reduced to 500.","key":"raw","value":"false"},{"description":"Maximum number of transactions per page.","key":"limit","value":"500"},{"description":"Number of transactions to skip for pagination.","key":"offset","value":"0"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"d290f1ee-6c54-4b01-90e6-d701748f0851\",\n  \"contentHash\": \"a1b2c3d4e5f6\",\n  \"createdAt\": \"2026-02-27T10:30:00.000Z\",\n  \"updatedAt\": \"2026-02-27T10:31:15.000Z\",\n  \"processedAt\": \"2026-02-27T10:31:15.000Z\",\n  \"document\": {\n    \"documentType\": \"bank-statement\",\n    \"bank\": \"DBS Bank\",\n    \"bankId\": \"dbs-bank-ltd\",\n    \"country\": \"SG\",\n    \"currency\": \"SGD\",\n    \"languages\": [\n      \"en\"\n    ],\n    \"statementDate\": \"2026-01-31\",\n    \"statementPeriod\": {\n      \"from\": \"2026-01-01\",\n      \"to\": \"2026-01-31\"\n    },\n    \"pageCount\": 3\n  },\n  \"accounts\": [\n    {\n      \"accountId\": 0,\n      \"accountNumber\": \"XXX-X-XX1234\",\n      \"accountHolderName\": \"John Doe\",\n      \"currency\": \"SGD\",\n      \"isPrimary\": true,\n      \"totals\": {\n        \"openingBalance\": 5000,\n        \"closingBalance\": 4250.75,\n        \"totalCredits\": 1200,\n        \"totalDebits\": 1949.25\n      }\n    }\n  ],\n  \"transactions\": [\n    {\n      \"sequence\": 0,\n      \"date\": \"2026-01-02\",\n      \"description\": \"SALARY CREDIT\",\n      \"amount\": 1200,\n      \"direction\": \"credit\",\n      \"currency\": \"SGD\",\n      \"balance\": 6200,\n      \"accountId\": 0,\n      \"accountNumber\": \"XXX-X-XX1234\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": 47,\n    \"limit\": 500,\n    \"offset\": 0,\n    \"hasMore\": false\n  },\n  \"exports\": {\n    \"json\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851/export/json\",\n    \"csv\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851/export/csv\",\n    \"xlsx\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851/export/xlsx\",\n    \"qbo\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851/export/qbo\",\n    \"xero\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851/export/xero\"\n  }\n}"},{"id":"5f54a2f5-a9d8-4c6d-8ad1-1191d1070328","name":"Authentication failed, API key revoked, or API key expired.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/data?raw=false&limit=500&offset=0","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","data"],"query":[{"description":"Set to `true` to include `originalData` (raw pre-normalization cell values) on each transaction. When enabled, max limit is reduced to 500.","key":"raw","value":"false"},{"description":"Maximum number of transactions per page.","key":"limit","value":"500"},{"description":"Number of transactions to skip for pagination.","key":"offset","value":"0"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"authentication_error\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"Invalid API key provided.\",\n    \"request_id\": \"req_3cGi7jKlN1b5eF2g\"\n  }\n}"},{"id":"97edecb3-41fb-4860-ba4f-c07db438a18a","name":"Document not found.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/data?raw=false&limit=500&offset=0","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","data"],"query":[{"description":"Set to `true` to include `originalData` (raw pre-normalization cell values) on each transaction. When enabled, max limit is reduced to 500.","key":"raw","value":"false"},{"description":"Maximum number of transactions per page.","key":"limit","value":"500"},{"description":"Number of transactions to skip for pagination.","key":"offset","value":"0"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"document_not_found\",\n    \"message\": \"Document not found.\",\n    \"request_id\": \"req_9xQr5tVwY3b6dE2f\"\n  }\n}"},{"id":"4e5c22c5-fbc7-4d66-9a59-1934b0820818","name":"Document processing not yet completed.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/data?raw=false&limit=500&offset=0","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","data"],"query":[{"description":"Set to `true` to include `originalData` (raw pre-normalization cell values) on each transaction. When enabled, max limit is reduced to 500.","key":"raw","value":"false"},{"description":"Maximum number of transactions per page.","key":"limit","value":"500"},{"description":"Number of transactions to skip for pagination.","key":"offset","value":"0"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."}]}},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"document_not_ready\",\n    \"message\": \"Document is not ready (status: processing). Poll GET /v1/documents/{id} until status is \\\"completed\\\".\",\n    \"meta\": {\n      \"status\": \"processing\"\n    },\n    \"request_id\": \"req_3cGi7jKlN1b5eF2g\"\n  }\n}"},{"id":"f0039695-18df-4598-9a9c-e2ea73b0c7b8","name":"Too many requests. Wait the number of seconds indicated by the `Retry-After` header.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/data?raw=false&limit=500&offset=0","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","data"],"query":[{"description":"Set to `true` to include `originalData` (raw pre-normalization cell values) on each transaction. When enabled, max limit is reduced to 500.","key":"raw","value":"false"},{"description":"Maximum number of transactions per page.","key":"limit","value":"500"},{"description":"Number of transactions to skip for pagination.","key":"offset","value":"0"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"Retry-After","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-Request-Id","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-API-Version","value":""}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"rate_limit_error\",\n    \"code\": \"rate_limit_exceeded\",\n    \"message\": \"Rate limit exceeded. Retry after 12 seconds.\",\n    \"meta\": {\n      \"retry_after\": 12\n    },\n    \"request_id\": \"req_6dFj8kMnR2a3bE5g\"\n  }\n}"},{"id":"08d52998-a282-4530-acc5-2f1c1cfd3ff8","name":"An unexpected server error occurred.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/data?raw=false&limit=500&offset=0","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","data"],"query":[{"description":"Set to `true` to include `originalData` (raw pre-normalization cell values) on each transaction. When enabled, max limit is reduced to 500.","key":"raw","value":"false"},{"description":"Maximum number of transactions per page.","key":"limit","value":"500"},{"description":"Number of transactions to skip for pagination.","key":"offset","value":"0"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"api_error\",\n    \"code\": \"internal_error\",\n    \"message\": \"An unexpected error occurred. If this persists, contact support with the request_id.\",\n    \"request_id\": \"req_0zAg4hIlO9b2cD7e\"\n  }\n}"}],"_postman_id":"6b21b93c-00f1-45d0-ab4d-8c81a907f711"}],"id":"1fe7717c-4adb-4bda-9e24-bc788f44b068","_postman_id":"1fe7717c-4adb-4bda-9e24-bc788f44b068","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}}},{"name":"export","item":[{"name":"{format}","item":[{"name":"Download converted document","id":"47a85d91-acb0-47bd-ad2b-ab217bac7d46","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.bankstatemently.com/v1/documents/:id/export/:format?flavor=enhanced&dateFormat=MM/DD/YYYY","description":"<p>Download the processed document in the specified format. The document must have status <code>completed</code>. Rate limit: 30 requests per minute.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}},"urlObject":{"path":["documents",":id","export",":format"],"host":["https://api.bankstatemently.com/v1"],"query":[{"description":{"content":"<p>The data flavor to export. <code>original</code> returns raw extracted data; <code>enhanced</code> (default) includes AI-enriched fields; <code>normalized</code> applies standardized formatting.</p>\n","type":"text/plain"},"key":"flavor","value":"enhanced"},{"description":{"content":"<p>Date format string for Xero CSV exports (e.g., <code>DD/MM/YYYY</code>). Only applicable when format is <code>xero</code>.</p>\n","type":"text/plain"},"key":"dateFormat","value":"MM/DD/YYYY"}],"variable":[{"description":{"content":"<p>The document UUID.</p>\n","type":"text/plain"},"type":"any","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","key":"id"},{"description":{"content":"<p>The export format.</p>\n","type":"text/plain"},"type":"any","value":"xlsx","key":"format"}]}},"response":[{"id":"75481b66-1cb8-4606-ac4b-c3fe9b2a84f9","name":"The exported file. Content-Type varies by format.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/export/:format?flavor=enhanced&dateFormat=MM/DD/YYYY","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","export",":format"],"query":[{"description":"The data flavor to export. `original` returns raw extracted data; `enhanced` (default) includes AI-enriched fields; `normalized` applies standardized formatting.","key":"flavor","value":"enhanced"},{"description":"Date format string for Xero CSV exports (e.g., `DD/MM/YYYY`). Only applicable when format is `xero`.","key":"dateFormat","value":"MM/DD/YYYY"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."},{"key":"format","value":"xlsx","description":"The export format."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-Request-Id","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-API-Version","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"RateLimit-Limit","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"RateLimit-Remaining","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"RateLimit-Reset","value":""},{"disabled":false,"description":{"content":"Attachment filename for the exported file.","type":"text/plain"},"key":"Content-Disposition","value":"attachment; filename=\"statement-jan-2026.csv\""}],"cookie":[],"responseTime":null,"body":"{\n  \"document\": {\n    \"bank\": \"DBS Bank\",\n    \"country\": \"SG\",\n    \"currency\": \"SGD\"\n  },\n  \"statements\": [\n    {\n      \"period\": {\n        \"from\": \"2026-01-01\",\n        \"to\": \"2026-01-31\"\n      },\n      \"transactions\": [\n        {\n          \"date\": \"2026-01-05\",\n          \"description\": \"GIRO PAYMENT\",\n          \"amount\": -150,\n          \"balance\": 4850\n        }\n      ]\n    }\n  ]\n}"},{"id":"7df5383e-3156-47b1-a837-bf62114e1643","name":"Invalid request parameters (e.g., invalid flavor).","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/export/:format?flavor=enhanced&dateFormat=MM/DD/YYYY","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","export",":format"],"query":[{"description":"The data flavor to export. `original` returns raw extracted data; `enhanced` (default) includes AI-enriched fields; `normalized` applies standardized formatting.","key":"flavor","value":"enhanced"},{"description":"Date format string for Xero CSV exports (e.g., `DD/MM/YYYY`). Only applicable when format is `xero`.","key":"dateFormat","value":"MM/DD/YYYY"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."},{"key":"format","value":"xlsx","description":"The export format."}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"invalid_export_flavor\",\n    \"message\": \"Invalid flavor. Use \\\"original\\\", \\\"enhanced\\\", or \\\"normalized\\\".\",\n    \"request_id\": \"req_4kLm8nOpR1c5fG3h\"\n  }\n}"},{"id":"fb2ae878-ae18-41b5-ba7f-f78cc890fe92","name":"Authentication failed, API key revoked, or API key expired.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/export/:format?flavor=enhanced&dateFormat=MM/DD/YYYY","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","export",":format"],"query":[{"description":"The data flavor to export. `original` returns raw extracted data; `enhanced` (default) includes AI-enriched fields; `normalized` applies standardized formatting.","key":"flavor","value":"enhanced"},{"description":"Date format string for Xero CSV exports (e.g., `DD/MM/YYYY`). Only applicable when format is `xero`.","key":"dateFormat","value":"MM/DD/YYYY"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."},{"key":"format","value":"xlsx","description":"The export format."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"authentication_error\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"Invalid API key provided.\",\n    \"request_id\": \"req_3cGi7jKlN1b5eF2g\"\n  }\n}"},{"id":"76174f87-32f3-4afc-9486-bb6054e2af8e","name":"Document or completed processing run not found.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/export/:format?flavor=enhanced&dateFormat=MM/DD/YYYY","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","export",":format"],"query":[{"description":"The data flavor to export. `original` returns raw extracted data; `enhanced` (default) includes AI-enriched fields; `normalized` applies standardized formatting.","key":"flavor","value":"enhanced"},{"description":"Date format string for Xero CSV exports (e.g., `DD/MM/YYYY`). Only applicable when format is `xero`.","key":"dateFormat","value":"MM/DD/YYYY"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."},{"key":"format","value":"xlsx","description":"The export format."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"document_not_found\",\n    \"message\": \"Document not found.\",\n    \"request_id\": \"req_2bHj6kMnQ0a4cD9e\"\n  }\n}"},{"id":"5b02177a-14eb-4543-8bcc-b68f58da2c96","name":"Document processing not yet completed.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/export/:format?flavor=enhanced&dateFormat=MM/DD/YYYY","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","export",":format"],"query":[{"description":"The data flavor to export. `original` returns raw extracted data; `enhanced` (default) includes AI-enriched fields; `normalized` applies standardized formatting.","key":"flavor","value":"enhanced"},{"description":"Date format string for Xero CSV exports (e.g., `DD/MM/YYYY`). Only applicable when format is `xero`.","key":"dateFormat","value":"MM/DD/YYYY"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."},{"key":"format","value":"xlsx","description":"The export format."}]}},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"document_not_ready\",\n    \"message\": \"Document is not ready for export (status: processing). Poll GET /v1/documents/{id} until status is \\\"completed\\\".\",\n    \"meta\": {\n      \"status\": \"processing\"\n    },\n    \"request_id\": \"req_5mNo9pQrS2d6gH4i\"\n  }\n}"},{"id":"f37ef3ea-43d1-46ce-97a9-6eb2321b7c25","name":"Export generation failed.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/export/:format?flavor=enhanced&dateFormat=MM/DD/YYYY","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","export",":format"],"query":[{"description":"The data flavor to export. `original` returns raw extracted data; `enhanced` (default) includes AI-enriched fields; `normalized` applies standardized formatting.","key":"flavor","value":"enhanced"},{"description":"Date format string for Xero CSV exports (e.g., `DD/MM/YYYY`). Only applicable when format is `xero`.","key":"dateFormat","value":"MM/DD/YYYY"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."},{"key":"format","value":"xlsx","description":"The export format."}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"export_failed\",\n    \"message\": \"Failed to generate CSV export: no transactions found.\",\n    \"request_id\": \"req_5eIk9lNoS2d7gH4i\"\n  }\n}"},{"id":"9f8a4b30-b2e9-4e1e-8185-c633fc647001","name":"Too many requests. Wait the number of seconds indicated by the `Retry-After` header.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/export/:format?flavor=enhanced&dateFormat=MM/DD/YYYY","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","export",":format"],"query":[{"description":"The data flavor to export. `original` returns raw extracted data; `enhanced` (default) includes AI-enriched fields; `normalized` applies standardized formatting.","key":"flavor","value":"enhanced"},{"description":"Date format string for Xero CSV exports (e.g., `DD/MM/YYYY`). Only applicable when format is `xero`.","key":"dateFormat","value":"MM/DD/YYYY"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."},{"key":"format","value":"xlsx","description":"The export format."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"Retry-After","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-Request-Id","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-API-Version","value":""}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"rate_limit_error\",\n    \"code\": \"rate_limit_exceeded\",\n    \"message\": \"Rate limit exceeded. Retry after 12 seconds.\",\n    \"meta\": {\n      \"retry_after\": 12\n    },\n    \"request_id\": \"req_6dFj8kMnR2a3bE5g\"\n  }\n}"},{"id":"f5078ff0-5ba9-4755-97b7-595b14517396","name":"An unexpected server error occurred.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/export/:format?flavor=enhanced&dateFormat=MM/DD/YYYY","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","export",":format"],"query":[{"description":"The data flavor to export. `original` returns raw extracted data; `enhanced` (default) includes AI-enriched fields; `normalized` applies standardized formatting.","key":"flavor","value":"enhanced"},{"description":"Date format string for Xero CSV exports (e.g., `DD/MM/YYYY`). Only applicable when format is `xero`.","key":"dateFormat","value":"MM/DD/YYYY"}],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID."},{"key":"format","value":"xlsx","description":"The export format."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"api_error\",\n    \"code\": \"internal_error\",\n    \"message\": \"An unexpected error occurred. If this persists, contact support with the request_id.\",\n    \"request_id\": \"req_0zAg4hIlO9b2cD7e\"\n  }\n}"}],"_postman_id":"47a85d91-acb0-47bd-ad2b-ab217bac7d46"}],"id":"783cd884-13eb-4215-a15a-e88d3997e701","_postman_id":"783cd884-13eb-4215-a15a-e88d3997e701","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}}}],"id":"c7dae73c-f479-4828-a7a4-a67d04ec9842","_postman_id":"c7dae73c-f479-4828-a7a4-a67d04ec9842","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}}},{"name":"unlock","item":[{"name":"Unlock a password-protected document","id":"93a2f8b6-ac9d-42d4-bda5-e5dd2d7f5739","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"password\": \"my-pdf-password\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.bankstatemently.com/v1/documents/:id/unlock","description":"<p>Submit a password to unlock and process a password-protected PDF. The document must have status <code>password_required</code>. On success, the document transitions to <code>processing</code> status. Rate limit: 20 requests per minute.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}},"urlObject":{"path":["documents",":id","unlock"],"host":["https://api.bankstatemently.com/v1"],"query":[],"variable":[{"description":{"content":"<p>The document UUID returned from the upload endpoint.</p>\n","type":"text/plain"},"type":"any","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","key":"id"}]}},"response":[{"id":"9763b441-221d-4686-92bf-5b498a02b015","name":"Password accepted. Document is now processing.","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"password\": \"my-pdf-password\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/unlock","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","unlock"],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID returned from the upload endpoint."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-Request-Id","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-API-Version","value":""}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"d290f1ee-6c54-4b01-90e6-d701748f0851\",\n  \"status\": \"processing\",\n  \"contentHash\": \"a1b2c3d4e5f6\",\n  \"createdAt\": \"2026-02-27T10:30:00.000Z\",\n  \"statements\": [],\n  \"links\": {\n    \"self\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851\"\n  }\n}"},{"id":"667f3532-bb0f-45a4-b7b3-6ce60d1d0a3d","name":"Invalid request (e.g., document is not in `password_required` status).","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"password\": \"my-pdf-password\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/unlock","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","unlock"],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID returned from the upload endpoint."}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"invalid_status\",\n    \"message\": \"Document status is \\\"processing\\\", not \\\"password_required\\\".\",\n    \"request_id\": \"req_9aXc3eGi5kMo7qSu\"\n  }\n}"},{"id":"77530d54-ad49-474f-82ad-03e5397bfc65","name":"Authentication failed, API key revoked, or API key expired.","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"password\": \"my-pdf-password\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/unlock","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","unlock"],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID returned from the upload endpoint."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"authentication_error\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"Invalid API key provided.\",\n    \"request_id\": \"req_3cGi7jKlN1b5eF2g\"\n  }\n}"},{"id":"ee696863-7bfd-4730-bec8-65d037ff245f","name":"Document not found.","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"password\": \"my-pdf-password\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/unlock","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","unlock"],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID returned from the upload endpoint."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"document_not_found\",\n    \"message\": \"Document not found.\",\n    \"request_id\": \"req_1bYd4fHj6lNp8rTv\"\n  }\n}"},{"id":"5ed8e70e-113f-49ea-9fba-709b7fbe1f0c","name":"Wrong password.","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"password\": \"my-pdf-password\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/unlock","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","unlock"],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID returned from the upload endpoint."}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"wrong_password\",\n    \"message\": \"The password provided is incorrect. Please try again.\",\n    \"meta\": {\n      \"attempts_remaining\": 8\n    },\n    \"request_id\": \"req_2cZe5gIk7mOq9sUw\"\n  }\n}"},{"id":"c21d3773-ccfc-49ed-8703-7c09b50d25bb","name":"Rate limit exceeded or maximum unlock attempts reached.","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"password\": \"my-pdf-password\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/unlock","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","unlock"],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID returned from the upload endpoint."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"rate_limit_error\",\n    \"code\": \"rate_limit_exceeded\",\n    \"message\": \"Rate limit exceeded. Try again later.\",\n    \"request_id\": \"req_3dAf6hJl8nPr0tVx\"\n  }\n}"},{"id":"08c11254-a47f-4a0f-835c-ddf8d2579e08","name":"An unexpected server error occurred.","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"password\": \"my-pdf-password\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/unlock","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","unlock"],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID returned from the upload endpoint."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"api_error\",\n    \"code\": \"internal_error\",\n    \"message\": \"An unexpected error occurred. If this persists, contact support with the request_id.\",\n    \"request_id\": \"req_0zAg4hIlO9b2cD7e\"\n  }\n}"}],"_postman_id":"93a2f8b6-ac9d-42d4-bda5-e5dd2d7f5739"}],"id":"b6fb7f7c-2c44-47fd-82b9-00cdae9e8ddf","_postman_id":"b6fb7f7c-2c44-47fd-82b9-00cdae9e8ddf","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}}},{"name":"categorize","item":[{"name":"Categorize transactions","id":"437c23ef-5c91-4a64-a231-bed37f4d325d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.bankstatemently.com/v1/documents/:id/categorize","description":"<p>Categorize a document's transactions using AI. Returns cached categories if already generated (no credit charge). Otherwise deducts 1 credit and runs LLM-based categorization. Rate limit: 20 requests per minute.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}},"urlObject":{"path":["documents",":id","categorize"],"host":["https://api.bankstatemently.com/v1"],"query":[],"variable":[{"description":{"content":"<p>Document UUID returned by the upload endpoint.</p>\n","type":"text/plain"},"type":"any","value":"0ea0bcc1-2dc2-b2cc-7c1d-2fb07f502914","key":"id"}]}},"response":[{"id":"ed376dc6-9359-4ec3-9522-744b37bac7e5","name":"Categories returned (cached or freshly generated).","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/categorize","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","categorize"],"variable":[{"key":"id","value":"0ea0bcc1-2dc2-b2cc-7c1d-2fb07f502914","description":"Document UUID returned by the upload endpoint."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-Request-Id","value":""}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"d290f1ee-6c54-4b01-90e6-d701748f0851\",\n  \"contentHash\": \"a1b2c3d4e5f6...\",\n  \"categories\": {\n    \"metadata\": {\n      \"categorizedAt\": \"2026-03-04T12:00:00.000Z\",\n      \"model\": \"claude-haiku-4-5-20251001\",\n      \"totalTransactions\": 42\n    },\n    \"mappings\": {\n      \"1\": \"groceries\",\n      \"2\": \"dining\",\n      \"3\": \"transfers\",\n      \"4\": \"bills_utilities\",\n      \"5\": \"shopping\"\n    }\n  }\n}"},{"id":"68fe39c1-5829-405b-a29b-22d21c09a939","name":"Authentication failed, API key revoked, or API key expired.","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/categorize","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","categorize"],"variable":[{"key":"id","value":"0ea0bcc1-2dc2-b2cc-7c1d-2fb07f502914","description":"Document UUID returned by the upload endpoint."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"authentication_error\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"Invalid API key provided.\",\n    \"request_id\": \"req_3cGi7jKlN1b5eF2g\"\n  }\n}"},{"id":"4596fb7c-5375-4862-8938-27681af216d0","name":"Insufficient credits.","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/categorize","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","categorize"],"variable":[{"key":"id","value":"0ea0bcc1-2dc2-b2cc-7c1d-2fb07f502914","description":"Document UUID returned by the upload endpoint."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"quota_exceeded\",\n    \"code\": \"insufficient_credits\",\n    \"message\": \"Insufficient credits. Categorization requires 1 credit.\",\n    \"meta\": {\n      \"credits_required\": 1,\n      \"credits_remaining\": 0\n    },\n    \"request_id\": \"req_8zOn4lQrX3b5cA2d\"\n  }\n}"},{"id":"3845ec4b-ee6d-48ca-9909-a1d8d9b9994e","name":"Document not found.","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/categorize","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","categorize"],"variable":[{"key":"id","value":"0ea0bcc1-2dc2-b2cc-7c1d-2fb07f502914","description":"Document UUID returned by the upload endpoint."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"document_not_found\",\n    \"message\": \"Document not found.\",\n    \"request_id\": \"req_9aPo5mRsY4c6dB3e\"\n  }\n}"},{"id":"981942c5-53ad-4f6b-ab60-9a3d1d691187","name":"Document not ready for categorization.","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/categorize","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","categorize"],"variable":[{"key":"id","value":"0ea0bcc1-2dc2-b2cc-7c1d-2fb07f502914","description":"Document UUID returned by the upload endpoint."}]}},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"document_not_ready\",\n    \"message\": \"Document is not ready for categorization (status: processing). Poll GET /v1/documents/{id} until status is \\\"completed\\\".\",\n    \"meta\": {\n      \"status\": \"processing\"\n    },\n    \"request_id\": \"req_0bQp6nStZ5d7eC4f\"\n  }\n}"},{"id":"3b9d8a8d-2a8a-4c4c-bb35-b5a82ace866c","name":"Too many requests. Wait the number of seconds indicated by the `Retry-After` header.","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/categorize","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","categorize"],"variable":[{"key":"id","value":"0ea0bcc1-2dc2-b2cc-7c1d-2fb07f502914","description":"Document UUID returned by the upload endpoint."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"Retry-After","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-Request-Id","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-API-Version","value":""}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"rate_limit_error\",\n    \"code\": \"rate_limit_exceeded\",\n    \"message\": \"Rate limit exceeded. Retry after 12 seconds.\",\n    \"meta\": {\n      \"retry_after\": 12\n    },\n    \"request_id\": \"req_6dFj8kMnR2a3bE5g\"\n  }\n}"},{"id":"f02173de-7d35-4609-92a1-a7ab1fc9db53","name":"An unexpected server error occurred.","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id/categorize","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id","categorize"],"variable":[{"key":"id","value":"0ea0bcc1-2dc2-b2cc-7c1d-2fb07f502914","description":"Document UUID returned by the upload endpoint."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"api_error\",\n    \"code\": \"internal_error\",\n    \"message\": \"An unexpected error occurred. If this persists, contact support with the request_id.\",\n    \"request_id\": \"req_0zAg4hIlO9b2cD7e\"\n  }\n}"}],"_postman_id":"437c23ef-5c91-4a64-a231-bed37f4d325d"}],"id":"c1c8187a-82a9-4b3e-89d6-1b6893ea6766","_postman_id":"c1c8187a-82a9-4b3e-89d6-1b6893ea6766","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}}},{"name":"Get document processing status","id":"0a138cd9-0598-461d-b8eb-fc29ff21a613","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.bankstatemently.com/v1/documents/:id","description":"<p>Poll the status of an uploaded document. When status is <code>completed</code>, the response includes statement metadata and export URLs. Rate limit: 120 requests per minute.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}},"urlObject":{"path":["documents",":id"],"host":["https://api.bankstatemently.com/v1"],"query":[],"variable":[{"description":{"content":"<p>The document UUID returned from the upload endpoint.</p>\n","type":"text/plain"},"type":"any","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","key":"id"}]}},"response":[{"id":"14b1e684-066d-44d6-8773-0dd33ef6bda7","name":"Document status and metadata.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id"],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID returned from the upload endpoint."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-Request-Id","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-API-Version","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"RateLimit-Limit","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"RateLimit-Remaining","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"RateLimit-Reset","value":""}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"d290f1ee-6c54-4b01-90e6-d701748f0851\",\n  \"status\": \"processing\",\n  \"contentHash\": \"a1b2c3d4e5f6\",\n  \"createdAt\": \"2026-02-27T10:30:00.000Z\",\n  \"updatedAt\": \"2026-02-27T10:30:00.000Z\",\n  \"statements\": [],\n  \"links\": {\n    \"self\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851\"\n  }\n}"},{"id":"4071cafc-3584-4490-8a73-b13c1e224c15","name":"Authentication failed, API key revoked, or API key expired.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id"],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID returned from the upload endpoint."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"authentication_error\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"Invalid API key provided.\",\n    \"request_id\": \"req_3cGi7jKlN1b5eF2g\"\n  }\n}"},{"id":"5ca04e95-7459-40a0-9124-5eb88f32cef2","name":"Document not found or does not belong to the authenticated user.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id"],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID returned from the upload endpoint."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"document_not_found\",\n    \"message\": \"Document not found.\",\n    \"request_id\": \"req_9xQr5tVwY3b6dE2f\"\n  }\n}"},{"id":"c88b85cc-2e87-4417-a0c1-45362987ff3e","name":"Too many requests. Wait the number of seconds indicated by the `Retry-After` header.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id"],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID returned from the upload endpoint."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"Retry-After","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-Request-Id","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-API-Version","value":""}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"rate_limit_error\",\n    \"code\": \"rate_limit_exceeded\",\n    \"message\": \"Rate limit exceeded. Retry after 12 seconds.\",\n    \"meta\": {\n      \"retry_after\": 12\n    },\n    \"request_id\": \"req_6dFj8kMnR2a3bE5g\"\n  }\n}"},{"id":"821eabd1-3568-445d-bd5d-ea486bc16c8e","name":"An unexpected server error occurred.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents/:id","host":["https://api.bankstatemently.com/v1"],"path":["documents",":id"],"variable":[{"key":"id","value":"893093cc-21d6-b881-ed5a-46dd9c3c4a65","description":"The document UUID returned from the upload endpoint."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"api_error\",\n    \"code\": \"internal_error\",\n    \"message\": \"An unexpected error occurred. If this persists, contact support with the request_id.\",\n    \"request_id\": \"req_0zAg4hIlO9b2cD7e\"\n  }\n}"}],"_postman_id":"0a138cd9-0598-461d-b8eb-fc29ff21a613"}],"id":"a9f0b075-8feb-4bf2-a0a3-0164a237bb16","_postman_id":"a9f0b075-8feb-4bf2-a0a3-0164a237bb16","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}}},{"name":"Upload a bank statement PDF","id":"7c950938-9c82-4b01-a091-511439ff28b0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"description":"<p>A unique key to ensure the request is processed at most once. Must be unique per request — use a UUID. Keys expire after 24 hours. If a duplicate key is detected, the original response is replayed with <code>X-Idempotency-Replayed: true</code>.</p>\n","key":"Idempotency-Key","value":"703b74ed-78da-4f84-addd-4a9776d04d4e"},{"description":"<p>Original filename for the uploaded PDF. Used for display purposes only. Defaults to 'document.pdf' if not provided.</p>\n","key":"X-Filename","value":""},{"description":"<p>Webhook URL for processing completion notifications. Overrides the default webhook URL configured on the API key.</p>\n","key":"X-Webhook-URL","value":""},{"description":"<p>Decryption password for encrypted PDFs. When provided, the PDF is decrypted and processed in a single request — no need for the two-step unlock flow. The password is used in memory only and never stored or logged.</p>\n","key":"X-Password","value":""},{"key":"Content-Type","value":"application/pdf"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"string"},"url":"https://api.bankstatemently.com/v1/documents","description":"<p>Upload a PDF bank statement for conversion. The file is processed asynchronously. Poll the returned <code>id</code> via GET /v1/documents/{id} to check progress. Rate limit: 10 requests per minute.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}},"urlObject":{"path":["documents"],"host":["https://api.bankstatemently.com/v1"],"query":[{"disabled":true,"description":{"content":"<p>Set to 'true' to reprocess a previously failed upload of the same file. Without this, re-uploading a failed file returns an already_processing error.</p>\n","type":"text/plain"},"key":"retry","value":"true"}],"variable":[]}},"response":[{"id":"18bb6e3a-5dfb-4c8f-905a-64639ba7a6e4","name":"Upload accepted. Processing has started, or the PDF requires a password.","originalRequest":{"method":"POST","header":[{"description":"A unique key to ensure the request is processed at most once. Must be unique per request — use a UUID. Keys expire after 24 hours. If a duplicate key is detected, the original response is replayed with `X-Idempotency-Replayed: true`.","key":"Idempotency-Key","value":"idk_abc123def456"},{"description":"Original filename for the uploaded PDF. Used for display purposes only. Defaults to 'document.pdf' if not provided.","key":"X-Filename","value":"statement-jan-2026.pdf"},{"description":"Webhook URL for processing completion notifications. Overrides the default webhook URL configured on the API key.","key":"X-Webhook-URL","value":"https://example.com/webhooks/bankstatemently"},{"description":"Decryption password for encrypted PDFs. When provided, the PDF is decrypted and processed in a single request — no need for the two-step unlock flow. The password is used in memory only and never stored or logged.","key":"X-Password","value":"string"},{"key":"Content-Type","value":"application/pdf"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"string"},"url":{"raw":"https://api.bankstatemently.com/v1/documents?retry=true","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Set to 'true' to reprocess a previously failed upload of the same file. Without this, re-uploading a failed file returns an already_processing error.","key":"retry","value":"true"}]}},"status":"Accepted","code":202,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"X-Request-Id","value":"","description":{"content":"","type":"text/plain"},"disabled":false},{"key":"X-API-Version","value":"","description":{"content":"","type":"text/plain"},"disabled":false},{"key":"X-Idempotency-Replayed","value":"","description":{"content":"","type":"text/plain"},"disabled":false},{"key":"RateLimit-Limit","value":"","description":{"content":"","type":"text/plain"},"disabled":false},{"key":"RateLimit-Remaining","value":"","description":{"content":"","type":"text/plain"},"disabled":false},{"key":"RateLimit-Reset","value":"","description":{"content":"","type":"text/plain"},"disabled":false}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"d290f1ee-6c54-4b01-90e6-d701748f0851\",\n  \"status\": \"processing\",\n  \"contentHash\": \"a1b2c3d4e5f6\",\n  \"createdAt\": \"2026-02-27T10:30:00.000Z\",\n  \"statements\": [],\n  \"links\": {\n    \"self\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851\"\n  }\n}"},{"id":"6b05f5f8-d8d6-4e88-9c03-16968bf697ea","name":"Invalid request (e.g., missing file, wrong content type, invalid file).","originalRequest":{"method":"POST","header":[{"description":"A unique key to ensure the request is processed at most once. Must be unique per request — use a UUID. Keys expire after 24 hours. If a duplicate key is detected, the original response is replayed with `X-Idempotency-Replayed: true`.","key":"Idempotency-Key","value":"idk_abc123def456"},{"description":"Original filename for the uploaded PDF. Used for display purposes only. Defaults to 'document.pdf' if not provided.","key":"X-Filename","value":"statement-jan-2026.pdf"},{"description":"Webhook URL for processing completion notifications. Overrides the default webhook URL configured on the API key.","key":"X-Webhook-URL","value":"https://example.com/webhooks/bankstatemently"},{"description":"Decryption password for encrypted PDFs. When provided, the PDF is decrypted and processed in a single request — no need for the two-step unlock flow. The password is used in memory only and never stored or logged.","key":"X-Password","value":"string"},{"key":"Content-Type","value":"application/pdf"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"string"},"url":{"raw":"https://api.bankstatemently.com/v1/documents?retry=true","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Set to 'true' to reprocess a previously failed upload of the same file. Without this, re-uploading a failed file returns an already_processing error.","key":"retry","value":"true"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"missing_file\",\n    \"message\": \"No file provided. Send a PDF as multipart/form-data with field name \\\"file\\\".\",\n    \"request_id\": \"req_7yNm3kPqW2a4bZ1c\"\n  }\n}"},{"id":"7d4c13bb-adee-4cfb-99c3-cb5d618077e7","name":"Authentication failed, API key revoked, or API key expired.","originalRequest":{"method":"POST","header":[{"description":"A unique key to ensure the request is processed at most once. Must be unique per request — use a UUID. Keys expire after 24 hours. If a duplicate key is detected, the original response is replayed with `X-Idempotency-Replayed: true`.","key":"Idempotency-Key","value":"idk_abc123def456"},{"description":"Original filename for the uploaded PDF. Used for display purposes only. Defaults to 'document.pdf' if not provided.","key":"X-Filename","value":"statement-jan-2026.pdf"},{"description":"Webhook URL for processing completion notifications. Overrides the default webhook URL configured on the API key.","key":"X-Webhook-URL","value":"https://example.com/webhooks/bankstatemently"},{"description":"Decryption password for encrypted PDFs. When provided, the PDF is decrypted and processed in a single request — no need for the two-step unlock flow. The password is used in memory only and never stored or logged.","key":"X-Password","value":"string"},{"key":"Content-Type","value":"application/pdf"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"string"},"url":{"raw":"https://api.bankstatemently.com/v1/documents?retry=true","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Set to 'true' to reprocess a previously failed upload of the same file. Without this, re-uploading a failed file returns an already_processing error.","key":"retry","value":"true"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"authentication_error\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"Invalid API key provided.\",\n    \"request_id\": \"req_3cGi7jKlN1b5eF2g\"\n  }\n}"},{"id":"6ff61571-1956-4501-9835-8c9d6f02a622","name":"Quota exceeded (insufficient credits, page limit, or file size).","originalRequest":{"method":"POST","header":[{"description":"A unique key to ensure the request is processed at most once. Must be unique per request — use a UUID. Keys expire after 24 hours. If a duplicate key is detected, the original response is replayed with `X-Idempotency-Replayed: true`.","key":"Idempotency-Key","value":"idk_abc123def456"},{"description":"Original filename for the uploaded PDF. Used for display purposes only. Defaults to 'document.pdf' if not provided.","key":"X-Filename","value":"statement-jan-2026.pdf"},{"description":"Webhook URL for processing completion notifications. Overrides the default webhook URL configured on the API key.","key":"X-Webhook-URL","value":"https://example.com/webhooks/bankstatemently"},{"description":"Decryption password for encrypted PDFs. When provided, the PDF is decrypted and processed in a single request — no need for the two-step unlock flow. The password is used in memory only and never stored or logged.","key":"X-Password","value":"string"},{"key":"Content-Type","value":"application/pdf"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"string"},"url":{"raw":"https://api.bankstatemently.com/v1/documents?retry=true","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Set to 'true' to reprocess a previously failed upload of the same file. Without this, re-uploading a failed file returns an already_processing error.","key":"retry","value":"true"}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"quota_exceeded\",\n    \"code\": \"insufficient_credits\",\n    \"message\": \"Insufficient credits. This file requires 3 credit(s) but you have 1 remaining. Purchase more at https://bankstatemently.com/pricing.\",\n    \"meta\": {\n      \"credits_required\": 3,\n      \"credits_remaining\": 1\n    },\n    \"request_id\": \"req_8zAb2cDe4fGh6iJk\"\n  }\n}"},{"id":"8eb81751-025b-43fd-9ad3-75144fcd6a12","name":"Document already exists or is being processed.","originalRequest":{"method":"POST","header":[{"description":"A unique key to ensure the request is processed at most once. Must be unique per request — use a UUID. Keys expire after 24 hours. If a duplicate key is detected, the original response is replayed with `X-Idempotency-Replayed: true`.","key":"Idempotency-Key","value":"idk_abc123def456"},{"description":"Original filename for the uploaded PDF. Used for display purposes only. Defaults to 'document.pdf' if not provided.","key":"X-Filename","value":"statement-jan-2026.pdf"},{"description":"Webhook URL for processing completion notifications. Overrides the default webhook URL configured on the API key.","key":"X-Webhook-URL","value":"https://example.com/webhooks/bankstatemently"},{"description":"Decryption password for encrypted PDFs. When provided, the PDF is decrypted and processed in a single request — no need for the two-step unlock flow. The password is used in memory only and never stored or logged.","key":"X-Password","value":"string"},{"key":"Content-Type","value":"application/pdf"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"string"},"url":{"raw":"https://api.bankstatemently.com/v1/documents?retry=true","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Set to 'true' to reprocess a previously failed upload of the same file. Without this, re-uploading a failed file returns an already_processing error.","key":"retry","value":"true"}]}},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"already_processing\",\n    \"message\": \"This document is already being processed. Poll GET /v1/documents/{id} for status updates.\",\n    \"request_id\": \"req_4fHj8lNpT2g6iK0m\"\n  }\n}"},{"id":"a3de395e-428d-4159-9066-00cc2a1f65bc","name":"Too many requests. Wait the number of seconds indicated by the `Retry-After` header.","originalRequest":{"method":"POST","header":[{"description":"A unique key to ensure the request is processed at most once. Must be unique per request — use a UUID. Keys expire after 24 hours. If a duplicate key is detected, the original response is replayed with `X-Idempotency-Replayed: true`.","key":"Idempotency-Key","value":"idk_abc123def456"},{"description":"Original filename for the uploaded PDF. Used for display purposes only. Defaults to 'document.pdf' if not provided.","key":"X-Filename","value":"statement-jan-2026.pdf"},{"description":"Webhook URL for processing completion notifications. Overrides the default webhook URL configured on the API key.","key":"X-Webhook-URL","value":"https://example.com/webhooks/bankstatemently"},{"description":"Decryption password for encrypted PDFs. When provided, the PDF is decrypted and processed in a single request — no need for the two-step unlock flow. The password is used in memory only and never stored or logged.","key":"X-Password","value":"string"},{"key":"Content-Type","value":"application/pdf"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"string"},"url":{"raw":"https://api.bankstatemently.com/v1/documents?retry=true","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Set to 'true' to reprocess a previously failed upload of the same file. Without this, re-uploading a failed file returns an already_processing error.","key":"retry","value":"true"}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"Retry-After","value":"","description":{"content":"","type":"text/plain"},"disabled":false},{"key":"X-Request-Id","value":"","description":{"content":"","type":"text/plain"},"disabled":false},{"key":"X-API-Version","value":"","description":{"content":"","type":"text/plain"},"disabled":false}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"rate_limit_error\",\n    \"code\": \"rate_limit_exceeded\",\n    \"message\": \"Rate limit exceeded. Retry after 12 seconds.\",\n    \"meta\": {\n      \"retry_after\": 12\n    },\n    \"request_id\": \"req_6dFj8kMnR2a3bE5g\"\n  }\n}"},{"id":"d2811fef-f83c-44b7-9b15-e787abfdae9d","name":"An unexpected server error occurred.","originalRequest":{"method":"POST","header":[{"description":"A unique key to ensure the request is processed at most once. Must be unique per request — use a UUID. Keys expire after 24 hours. If a duplicate key is detected, the original response is replayed with `X-Idempotency-Replayed: true`.","key":"Idempotency-Key","value":"idk_abc123def456"},{"description":"Original filename for the uploaded PDF. Used for display purposes only. Defaults to 'document.pdf' if not provided.","key":"X-Filename","value":"statement-jan-2026.pdf"},{"description":"Webhook URL for processing completion notifications. Overrides the default webhook URL configured on the API key.","key":"X-Webhook-URL","value":"https://example.com/webhooks/bankstatemently"},{"description":"Decryption password for encrypted PDFs. When provided, the PDF is decrypted and processed in a single request — no need for the two-step unlock flow. The password is used in memory only and never stored or logged.","key":"X-Password","value":"string"},{"key":"Content-Type","value":"application/pdf"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"string"},"url":{"raw":"https://api.bankstatemently.com/v1/documents?retry=true","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Set to 'true' to reprocess a previously failed upload of the same file. Without this, re-uploading a failed file returns an already_processing error.","key":"retry","value":"true"}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"api_error\",\n    \"code\": \"internal_error\",\n    \"message\": \"An unexpected error occurred. If this persists, contact support with the request_id.\",\n    \"request_id\": \"req_0zAg4hIlO9b2cD7e\"\n  }\n}"},{"id":"6b5e7aa2-d2fe-42d4-aa77-eceab8c5076e","name":"The service is temporarily unavailable.","originalRequest":{"method":"POST","header":[{"description":"A unique key to ensure the request is processed at most once. Must be unique per request — use a UUID. Keys expire after 24 hours. If a duplicate key is detected, the original response is replayed with `X-Idempotency-Replayed: true`.","key":"Idempotency-Key","value":"idk_abc123def456"},{"description":"Original filename for the uploaded PDF. Used for display purposes only. Defaults to 'document.pdf' if not provided.","key":"X-Filename","value":"statement-jan-2026.pdf"},{"description":"Webhook URL for processing completion notifications. Overrides the default webhook URL configured on the API key.","key":"X-Webhook-URL","value":"https://example.com/webhooks/bankstatemently"},{"description":"Decryption password for encrypted PDFs. When provided, the PDF is decrypted and processed in a single request — no need for the two-step unlock flow. The password is used in memory only and never stored or logged.","key":"X-Password","value":"string"},{"key":"Content-Type","value":"application/pdf"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"string"},"url":{"raw":"https://api.bankstatemently.com/v1/documents?retry=true","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Set to 'true' to reprocess a previously failed upload of the same file. Without this, re-uploading a failed file returns an already_processing error.","key":"retry","value":"true"}]}},"status":"Service Unavailable","code":503,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"api_error\",\n    \"code\": \"service_unavailable\",\n    \"message\": \"Document processing is temporarily unavailable. Please try again later.\",\n    \"request_id\": \"req_1aEh5iLmP0c4dC8f\"\n  }\n}"},{"id":"4f8818db-5ab0-4f54-9963-a1bc92a597a6","name":"Wrong password. Only returned when X-Password header is provided for an encrypted PDF.","originalRequest":{"method":"POST","header":[{"description":"A unique key to ensure the request is processed at most once. Must be unique per request — use a UUID. Keys expire after 24 hours. If a duplicate key is detected, the original response is replayed with `X-Idempotency-Replayed: true`.","key":"Idempotency-Key","value":"string"},{"description":"Original filename for the uploaded PDF. Used for display purposes only. Defaults to 'document.pdf' if not provided.","key":"X-Filename","value":"string"},{"description":"Webhook URL for processing completion notifications. Overrides the default webhook URL configured on the API key.","key":"X-Webhook-URL","value":"http://wPng.kiZDMy,qLhDkG"},{"description":"Decryption password for encrypted PDFs. When provided, the PDF is decrypted and processed in a single request — no need for the two-step unlock flow. The password is used in memory only and never stored or logged.","key":"X-Password","value":"string"},{"key":"Content-Type","value":"application/pdf"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"body":{"mode":"raw","raw":"string"},"url":{"raw":"https://api.bankstatemently.com/v1/documents?retry=true","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Set to 'true' to reprocess a previously failed upload of the same file. Without this, re-uploading a failed file returns an already_processing error.","key":"retry","value":"true"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"invalid_request_error\",\n    \"code\": \"wrong_password\",\n    \"message\": \"The password provided is incorrect. Please try again.\",\n    \"request_id\": \"req_3eGi7kMoS1f5hJ9l\"\n  }\n}"}],"_postman_id":"7c950938-9c82-4b01-a091-511439ff28b0"},{"name":"List recent documents","id":"ac17174b-db91-4cd9-8f42-28f0c7bcfe1a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.bankstatemently.com/v1/documents?limit=20&offset=0&status=password_required","description":"<p>Retrieve a paginated list of your uploaded documents, ordered by creation date descending. Rate limit: 120 requests per minute.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}},"urlObject":{"path":["documents"],"host":["https://api.bankstatemently.com/v1"],"query":[{"description":{"content":"<p>Maximum number of documents to return.</p>\n","type":"text/plain"},"key":"limit","value":"20"},{"description":{"content":"<p>Number of documents to skip for pagination.</p>\n","type":"text/plain"},"key":"offset","value":"0"},{"description":{"content":"<p>Filter documents by processing status.</p>\n","type":"text/plain"},"key":"status","value":"password_required"}],"variable":[]}},"response":[{"id":"c115971d-8b03-4488-9704-4298c05c55ae","name":"Paginated list of documents.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents?limit=20&offset=0&status=password_required","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Maximum number of documents to return.","key":"limit","value":"20"},{"description":"Number of documents to skip for pagination.","key":"offset","value":"0"},{"description":"Filter documents by processing status.","key":"status","value":"password_required"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-Request-Id","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-API-Version","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"RateLimit-Limit","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"RateLimit-Remaining","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"RateLimit-Reset","value":""}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"d290f1ee-6c54-4b01-90e6-d701748f0851\",\n      \"status\": \"completed\",\n      \"contentHash\": \"a1b2c3d4e5f6\",\n      \"filename\": \"statement-jan-2026.pdf\",\n      \"pageCount\": 3,\n      \"source\": \"api\",\n      \"createdAt\": \"2026-02-27T10:30:00.000Z\",\n      \"updatedAt\": \"2026-02-27T10:31:15.000Z\",\n      \"exports\": {\n        \"json\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851/export/json\",\n        \"csv\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851/export/csv\",\n        \"xlsx\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851/export/xlsx\",\n        \"qbo\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851/export/qbo\",\n        \"xero\": \"https://api.bankstatemently.com/v1/documents/d290f1ee-6c54-4b01-90e6-d701748f0851/export/xero\"\n      }\n    },\n    {\n      \"id\": \"e3a1b2c3-7d54-4b01-90e6-f801849g1962\",\n      \"status\": \"processing\",\n      \"contentHash\": \"b2c3d4e5f6g7\",\n      \"filename\": \"statement-feb-2026.pdf\",\n      \"pageCount\": null,\n      \"source\": \"api\",\n      \"createdAt\": \"2026-02-27T11:00:00.000Z\",\n      \"updatedAt\": \"2026-02-27T11:00:00.000Z\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": 42,\n    \"limit\": 20,\n    \"offset\": 0,\n    \"hasMore\": true\n  }\n}"},{"id":"6661573a-325b-4776-8aeb-6717f734aae6","name":"Authentication failed, API key revoked, or API key expired.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents?limit=20&offset=0&status=password_required","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Maximum number of documents to return.","key":"limit","value":"20"},{"description":"Number of documents to skip for pagination.","key":"offset","value":"0"},{"description":"Filter documents by processing status.","key":"status","value":"password_required"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"authentication_error\",\n    \"code\": \"invalid_api_key\",\n    \"message\": \"Invalid API key provided.\",\n    \"request_id\": \"req_3cGi7jKlN1b5eF2g\"\n  }\n}"},{"id":"ec4ef2e3-df5d-460f-b37d-a62d7c5e2aae","name":"Too many requests. Wait the number of seconds indicated by the `Retry-After` header.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents?limit=20&offset=0&status=password_required","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Maximum number of documents to return.","key":"limit","value":"20"},{"description":"Number of documents to skip for pagination.","key":"offset","value":"0"},{"description":"Filter documents by processing status.","key":"status","value":"password_required"}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"Retry-After","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-Request-Id","value":""},{"disabled":false,"description":{"content":"","type":"text/plain"},"key":"X-API-Version","value":""}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"rate_limit_error\",\n    \"code\": \"rate_limit_exceeded\",\n    \"message\": \"Rate limit exceeded. Retry after 12 seconds.\",\n    \"meta\": {\n      \"retry_after\": 12\n    },\n    \"request_id\": \"req_6dFj8kMnR2a3bE5g\"\n  }\n}"},{"id":"2273a89a-2cc6-4aad-91b0-166292661382","name":"An unexpected server error occurred.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: apikey","key":"X-API-Key","value":"<API Key>"}],"url":{"raw":"https://api.bankstatemently.com/v1/documents?limit=20&offset=0&status=password_required","host":["https://api.bankstatemently.com/v1"],"path":["documents"],"query":[{"description":"Maximum number of documents to return.","key":"limit","value":"20"},{"description":"Number of documents to skip for pagination.","key":"offset","value":"0"},{"description":"Filter documents by processing status.","key":"status","value":"password_required"}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"type\": \"api_error\",\n    \"code\": \"internal_error\",\n    \"message\": \"An unexpected error occurred. If this persists, contact support with the request_id.\",\n    \"request_id\": \"req_0zAg4hIlO9b2cD7e\"\n  }\n}"}],"_postman_id":"ac17174b-db91-4cd9-8f42-28f0c7bcfe1a"}],"id":"552c3e59-b07b-47a4-a443-c46d57ac9e97","_postman_id":"552c3e59-b07b-47a4-a443-c46d57ac9e97","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","id":"11c37c3c-db86-4fab-a0b4-b37cd2634064","name":"Bankstatemently API","type":"collection"}}}],"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":""}]}},"event":[{"listen":"prerequest","script":{"id":"b5dcbdb8-a268-4e7a-a280-cfe8ec29977d","type":"text/javascript","packages":{},"exec":[""]}},{"listen":"test","script":{"id":"9d70289e-28be-44a2-b3d6-55982f70a884","type":"text/javascript","packages":{},"exec":[""]}}],"variable":[{"key":"baseUrl","value":"https://api.bankstatemently.com/v1","type":"any"},{"key":"BANKSTATEMENTLY_API_KEY","value":"","type":"any"}]}