{ "info": { "_postman_id": "71af4a49-a9ac-4437-9f86-0f29c964c377", "name": "Account Level Webhooks Book Commands Cash Flow Analytics API", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "createdAt": "2026-07-28T02:24:56.000Z", "updatedAt": "2026-07-28T02:24:56.000Z", "lastUpdatedBy": "35240", "uid": "35240-71af4a49-a9ac-4437-9f86-0f29c964c377" }, "item": [ { "name": "v2", "item": [ { "name": "book", "item": [ { "name": "{book_uuid}", "item": [ { "name": "income", "item": [ { "name": "bank-statement-v2", "item": [ { "name": "xlsx", "item": [ { "name": "Bank statement income calculator (Excel)", "id": "b53047ae-526a-415b-a7a8-3a1966ee3532", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2/xlsx", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2", "xlsx" ], "variable": [ { "id": "2efcc555-ca30-4ea1-b58f-cf51a0860505", "key": "book_uuid", "value": "", "description": "(Required) The unique identifier of the <> that contains the bank statements you'd like to have analyzed.\n" } ] }, "description": "This API retrieves the bank statement income calculator in an Excel format.\n\n---\n\nVisit our [guide](https://docs.ocrolus.com/docs/bank-statement-income-calculator) for more information.\n\nThe output of this endpoint is intended for manual review, as opposed to automated consumption by your application.\n> \ud83d\udea7\n> The response will have a MIME type of `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`, hence there is no JSON response schema. See [here](https://docs.google.com/spreadsheets/d/1IeElDLJWQ-YZRmR_zO0OD6ltFnyOPIOQ/edit?usp=sharing&ouid=108945757603422712879&rtpof=true&sd=true) for an example output.\n" }, "response": [ { "id": "b53779e3-b05a-4419-a0c8-30b493fa833d", "name": "Success", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2/xlsx", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2", "xlsx" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "text", "header": [ { "key": "Content-Type", "value": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" } ], "cookie": [], "responseTime": null, "body": "{\n \"examples\": {\n \"ExampleSpreadsheet\": {\n \"summary\": \"Success\",\n \"externalValue\": \"https://docs.google.com/spreadsheets/d/1IeElDLJWQ-YZRmR_zO0OD6ltFnyOPIOQ/edit?usp=sharing&ouid=108945757603422712879&rtpof=true&sd=true\"\n }\n }\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-b53779e3-b05a-4419-a0c8-30b493fa833d" }, { "id": "67eb354a-d7f1-4ee4-888b-98608c2afb7a", "name": "Txn Limit Exceeded", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2/xlsx", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2", "xlsx" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Bad Request", "code": 400, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-67eb354a-d7f1-4ee4-888b-98608c2afb7a" }, { "id": "0c560aa9-0de8-44d8-a35d-5d67133dd3a8", "name": "Permission Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2/xlsx", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2", "xlsx" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Forbidden", "code": 403, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-0c560aa9-0de8-44d8-a35d-5d67133dd3a8" }, { "id": "64e783b4-ad8b-417e-aa04-b058352593ce", "name": "Book Not Found Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2/xlsx", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2", "xlsx" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Not Found", "code": 404, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-64e783b4-ad8b-417e-aa04-b058352593ce" }, { "id": "918f1325-d6fb-40c1-a81c-22f01517c230", "name": "Analytics Still Processing", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2/xlsx", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2", "xlsx" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Unordered Collection (RFC 3648)", "code": 425, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-918f1325-d6fb-40c1-a81c-22f01517c230" } ], "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-b53047ae-526a-415b-a7a8-3a1966ee3532" } ], "id": "8386a250-ee39-4475-9947-af8b75d694f1", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-8386a250-ee39-4475-9947-af8b75d694f1" }, { "name": "Bank statement income calculator", "id": "804e3485-02ac-4be1-ab4f-b7e29c9f264d", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2" ], "variable": [ { "id": "3bab7ed3-6f4d-472a-bf28-f8f5897e8b6e", "key": "book_uuid", "value": "", "description": "(Required) The unique identifier of the <> that contains the bank statements you'd like to have analyzed.\n" } ] }, "description": "This API retrieves the bank statement income calculator output in JSON format. You can also access this through the Dashboard. To learn more, see [Bank Statement Income Calculator](https://docs.ocrolus.com/docs/bank-statement-income-calculator).\n" }, "response": [ { "id": "21eb1e6a-91c3-4da9-8188-fda92697a672", "name": "Success", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"book_uuid\": \"\",\n \"calculated_at\": \"\",\n \"bank_statement_income\": [\n {\n \"account\": {\n \"pk\": \"\",\n \"account_number\": \"\",\n \"holder_name\": \"\"\n },\n \"deposits\": [\n {\n \"pk\": \"\",\n \"date\": \"\",\n \"description\": \"\",\n \"amount\": \"\",\n \"page_doc_pk\": \"\",\n \"period_pk\": \"\",\n \"period_uuid\": \"\",\n \"exclude\": \"\",\n \"is_large\": \"\",\n \"is_payroll\": \"\",\n \"is_internal_transfer\": \"\",\n \"is_recurring\": \"\"\n },\n {\n \"pk\": \"\",\n \"date\": \"\",\n \"description\": \"\",\n \"amount\": \"\",\n \"page_doc_pk\": \"\",\n \"period_pk\": \"\",\n \"period_uuid\": \"\",\n \"exclude\": \"\",\n \"is_large\": \"\",\n \"is_payroll\": \"\",\n \"is_internal_transfer\": \"\",\n \"is_recurring\": \"\"\n }\n ],\n \"calculations\": {\n \"nsf_count\": \"\",\n \"statement_summary\": [\n {\n \"begin_date\": \"\",\n \"end_date\": \"\",\n \"total_deposits\": \"\",\n \"total_nsf_count\": \"\",\n \"beginning_balance\": \"\",\n \"ending_balance\": \"\",\n \"statement_status\": \"\",\n \"period_pk\": \"\"\n },\n {\n \"begin_date\": \"\",\n \"end_date\": \"\",\n \"total_deposits\": \"\",\n \"total_nsf_count\": \"\",\n \"beginning_balance\": \"\",\n \"ending_balance\": \"\",\n \"statement_status\": \"\",\n \"period_pk\": \"\"\n }\n ],\n \"large_deposit_summary\": {\n \"average_deposit\": \"\",\n \"percentage_amount\": \"\",\n \"deposit_threshold\": \"\",\n \"threshold_base\": \"\",\n \"large_deposit_count\": \"\",\n \"large_deposit_amount\": \"\",\n \"large_deposit_txn_pks\": [\n \"\",\n \"\"\n ]\n },\n \"total_deposit_summary\": {\n \"deposits\": \"\",\n \"included_deposits\": \"\",\n \"excluded_deposits\": \"\"\n },\n \"total_included_months\": \"\",\n \"qualifying_income_average\": \"\"\n },\n \"recurring_transactions\": [\n {\n \"pk\": \"\",\n \"date\": \"\",\n \"description\": \"\",\n \"amount\": \"\"\n },\n {\n \"pk\": \"\",\n \"date\": \"\",\n \"description\": \"\",\n \"amount\": \"\"\n }\n ],\n \"total_withdrawls\": \"\",\n \"total_expense_summary\": {\n \"expenses\": \"\",\n \"included_expenses\": \"\",\n \"excluded_expenses\": \"\"\n },\n \"monthly_statement_summary\": {},\n \"negative_balance_day_summary\": {\n \"total_negative_balance_days\": \"\"\n }\n },\n {\n \"account\": {\n \"pk\": \"\",\n \"account_number\": \"\",\n \"holder_name\": \"\"\n },\n \"deposits\": [\n {\n \"pk\": \"\",\n \"date\": \"\",\n \"description\": \"\",\n \"amount\": \"\",\n \"page_doc_pk\": \"\",\n \"period_pk\": \"\",\n \"period_uuid\": \"\",\n \"exclude\": \"\",\n \"is_large\": \"\",\n \"is_payroll\": \"\",\n \"is_internal_transfer\": \"\",\n \"is_recurring\": \"\"\n },\n {\n \"pk\": \"\",\n \"date\": \"\",\n \"description\": \"\",\n \"amount\": \"\",\n \"page_doc_pk\": \"\",\n \"period_pk\": \"\",\n \"period_uuid\": \"\",\n \"exclude\": \"\",\n \"is_large\": \"\",\n \"is_payroll\": \"\",\n \"is_internal_transfer\": \"\",\n \"is_recurring\": \"\"\n }\n ],\n \"calculations\": {\n \"nsf_count\": \"\",\n \"statement_summary\": [\n {\n \"begin_date\": \"\",\n \"end_date\": \"\",\n \"total_deposits\": \"\",\n \"total_nsf_count\": \"\",\n \"beginning_balance\": \"\",\n \"ending_balance\": \"\",\n \"statement_status\": \"\",\n \"period_pk\": \"\"\n },\n {\n \"begin_date\": \"\",\n \"end_date\": \"\",\n \"total_deposits\": \"\",\n \"total_nsf_count\": \"\",\n \"beginning_balance\": \"\",\n \"ending_balance\": \"\",\n \"statement_status\": \"\",\n \"period_pk\": \"\"\n }\n ],\n \"large_deposit_summary\": {\n \"average_deposit\": \"\",\n \"percentage_amount\": \"\",\n \"deposit_threshold\": \"\",\n \"threshold_base\": \"\",\n \"large_deposit_count\": \"\",\n \"large_deposit_amount\": \"\",\n \"large_deposit_txn_pks\": [\n \"\",\n \"\"\n ]\n },\n \"total_deposit_summary\": {\n \"deposits\": \"\",\n \"included_deposits\": \"\",\n \"excluded_deposits\": \"\"\n },\n \"total_included_months\": \"\",\n \"qualifying_income_average\": \"\"\n },\n \"recurring_transactions\": [\n {\n \"pk\": \"\",\n \"date\": \"\",\n \"description\": \"\",\n \"amount\": \"\"\n },\n {\n \"pk\": \"\",\n \"date\": \"\",\n \"description\": \"\",\n \"amount\": \"\"\n }\n ],\n \"total_withdrawls\": \"\",\n \"total_expense_summary\": {\n \"expenses\": \"\",\n \"included_expenses\": \"\",\n \"excluded_expenses\": \"\"\n },\n \"monthly_statement_summary\": {},\n \"negative_balance_day_summary\": {\n \"total_negative_balance_days\": \"\"\n }\n }\n ]\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-21eb1e6a-91c3-4da9-8188-fda92697a672" }, { "id": "2136f535-81ed-4649-9ea3-d3d93985141c", "name": "Txn Limit Exceeded", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Bad Request", "code": 400, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-2136f535-81ed-4649-9ea3-d3d93985141c" }, { "id": "f2ed87e3-b359-491a-8121-e1b6d80ac6a7", "name": "Permission Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Forbidden", "code": 403, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-f2ed87e3-b359-491a-8121-e1b6d80ac6a7" }, { "id": "d95f3f79-1d11-415c-97bf-683fbbd69a8c", "name": "Book Not Found Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Not Found", "code": 404, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-d95f3f79-1d11-415c-97bf-683fbbd69a8c" }, { "id": "b70e400c-9a79-4da9-9ad9-1a0f0371bc74", "name": "Analytics Still Processing", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Unordered Collection (RFC 3648)", "code": 425, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-b70e400c-9a79-4da9-9ad9-1a0f0371bc74" }, { "id": "17dc328b-1ece-44cf-81d2-62ed419d1a18", "name": "Internal server error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/income/bank-statement-v2", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "income", "bank-statement-v2" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Internal Server Error", "code": 500, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-17dc328b-1ece-44cf-81d2-62ed419d1a18" } ], "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-804e3485-02ac-4be1-ab4f-b7e29c9f264d" } ], "id": "843d14f6-2e22-4177-9ae7-22d030d8eafb", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-843d14f6-2e22-4177-9ae7-22d030d8eafb" } ], "id": "61c94689-3a5c-4227-923b-8f526687d935", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-61c94689-3a5c-4227-923b-8f526687d935" }, { "name": "summary", "item": [ { "name": "Book summary", "id": "3938058e-e680-4f64-b5e3-dc8053a3f527", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/summary?exclude_bank_account_pks=&exclude_months=&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "summary" ], "query": [ { "description": "Bank account primary key(s) to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_bank_account_pks", "value": "" }, { "description": "Months (in YYYY-MM format) of transaction to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_months", "value": "" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "id": "07b713b9-d381-4bfc-84de-fddf7f248dbb", "key": "book_uuid", "value": "", "description": "(Required) The unique identifier of the <> that contains the bank statements you'd like to have analyzed.\n" } ] }, "description": "\nThis API retrieves the Cash Flow Analytics summary of a Book in JSON format. It provides daily balances, bank account PII, and time series for all transaction categories at the <> and bank account level. \n\nIt offers quicker analytics generation, more granular and accurate transaction categories (including improved revenue and expense calculations), and a more concise structure.\n\n---\n\n### Async processing \n\nThis API supports asynchronous processing. To get the asynchronous result, add `async=true` in the query parameter to run the request as a background job and receive a `job_id` immediately instead of waiting for the full response inline. When `async=true`, the endpoint returns `202 Accepted` with a `job_id` instead of the analytics payload.\n\nAsync mode is required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). Once submitted, poll\n[Async job status](https://docs.ocrolus.com/reference/async-job-status) API to retrieve the result when the job is complete.\n" }, "response": [ { "id": "f7555dc0-521b-41e4-a369-dd548a66661f", "name": "Success", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/summary?exclude_bank_account_pks=&exclude_months=&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "summary" ], "query": [ { "description": "Bank account primary key(s) to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_bank_account_pks", "value": "" }, { "description": "Months (in YYYY-MM format) of transaction to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_months", "value": "" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"book_pk\": \"\",\n \"book_name\": \"\",\n \"txn_count\": \"\",\n \"naics4_code\": \"\",\n \"naics_description\": \"\",\n \"naics6_code\": \"\",\n \"naics6_description\": \"\",\n \"naics_override\": \"\",\n \"mcc_code\": \"\",\n \"mcc_description_\": \"\",\n \"sic_code\": \"\",\n \"sic_description_\": \"\",\n \"loan_inquiries\": {\n \"smb_entity_name\": \"\",\n \"total_applications\": \"\",\n \"application_history\": [\n {\n \"created_ts\": \"\"\n }\n ],\n \"velocity\": {\n \"30_day_count\": \"\",\n \"60_day_count\": \"\",\n \"90_day_count\": \"\",\n \"180_day_count\": \"\",\n \"270_day_count\": \"\",\n \"365_day_count\": \"\"\n }\n },\n \"book_mismatch_severity\": \"\",\n \"daily_balances\": \"\",\n \"daily_cash_flows\": \"\",\n \"average_daily_cash_flow\": \"\",\n \"net_cash_flows_by_month\": \"\",\n \"minimum_balance_by_month\": \"\",\n \"maximum_balance_by_month\": \"\",\n \"average_daily_balance\": \"\",\n \"average_daily_balance_by_month\": \"\",\n \"average_daily_balance_weekday\": \"\",\n \"average_daily_balance_weekday_by_month\": \"\",\n \"total_days\": \"\",\n \"negative_balances_by_month\": \"\",\n \"negative_balances_weekday_by_month\": \"\",\n \"nnegative_balances_weekday_count_by_month\": \"\",\n \"cash_balance_trend_30d\": \"\",\n \"cash_balance_trend_60d\": \"\",\n \"cash_balance_trend_90d\": \"\",\n \"cash_flow_trend_30d\": \"\",\n \"cash_flow_trend_60d\": \"\",\n \"cash_flow_trend_90d\": \"\",\n \"average_txn_size_by_month\": {},\n \"average_deposits_by_month\": {},\n \"expense_by_month\": \"\",\n \"withdrawals_by_month\": \"\",\n \"revenue_by_month\": \"\",\n \"revenue_deduction_by_month\": \"\",\n \"deposits_by_month\": \"\",\n \"outside_source_deposits_by_month\": \"\",\n \"large_deposits_by_month\": \"\",\n \"debt_consolidator_inflows_by_month\": \"\",\n \"debt_consolidator_outflows_by_month\": \"\",\n \"factoring_inflows_by_month\": \"\",\n \"factoring_outflows_by_month\": \"\",\n \"payroll_inflows_by_month\": \"\",\n \"payroll_outflows_by_month\": \"\",\n \"insurance_inflows_by_month\": \"\",\n \"insurance_outflows_by_month\": \"\",\n \"venmo_zelle_cashapp_inflows_by_month\": \"\",\n \"venmo_zelle_cashapp_outflows_by_month\": \"\",\n \"atm_inflows_by_month\": \"\",\n \"atm_outflows_by_month\": \"\",\n \"tolls_inflows_by_month\": \"\",\n \"tolls_outflows_by_month\": \"\",\n \"paypal_inflows_by_month\": \"\",\n \"paypal_outflows_by_month\": \"\",\n \"equipment_lease_inflows_by_month\": \"\",\n \"equipment_lease_outflows_by_month\": \"\",\n \"checks_inflows_by_month\": \"\",\n \"checks_outflows_by_month\": \"\",\n \"txn_four_zeros_inflows_by_month\": \"\",\n \"txn_four_zeros_outflows_by_month\": \"\",\n \"txn_five_zeros_inflows_by_month\": \"\",\n \"txn_five_zeros_outflows_by_month\": \"\",\n \"probable_recurring_txns_inflows_by_month\": \"\",\n \"probable_recurring_txns_outflows_by_month\": \"\",\n \"fintech_loan_inflows_by_month\": \"\",\n \"fintech_loan_outflows_by_month\": \"\",\n \"bank_loan_inflows_by_month\": \"\",\n \"bank_loan_outflows_by_month\": \"\",\n \"other_loan_inflows_by_month\": \"\",\n \"other_loan_outflows_by_month\": \"\",\n \"fintech_mca_inflows_by_month\": \"\",\n \"fintech_mca_outflows_by_month\": \"\",\n \"bank_cash_advance_inflows_by_month\": \"\",\n \"bank_cash_advance_outflows_by_month\": \"\",\n \"debit_card_inflows_by_month\": \"\",\n \"debit_card_outflows_by_month\": \"\",\n \"credit_card_inflows_by_month\": \"\",\n \"credit_card_outflows_by_month\": \"\",\n \"merchant_service_inflows_by_month\": \"\",\n \"merchant_service_outflows_by_month\": \"\",\n \"sba_inflows_by_month\": \"\",\n \"sba_outflows_by_month\": \"\",\n \"remote_inflows_by_month\": \"\",\n \"remote_outflows_by_month\": \"\",\n \"benefits_inflows_by_month\": \"\",\n \"benefits_outflows_by_month\": \"\",\n \"card_rewards_inflows_by_month\": \"\",\n \"card_rewards_outflows_by_month\": \"\",\n \"crypto_inflows_by_month\": \"\",\n \"crypto_outflows_by_month\": \"\",\n \"gambling_inflows_by_month\": \"\",\n \"gambling_outflows_by_month\": \"\",\n \"investment_inflows_by_month\": \"\",\n \"investment_outflows_by_month\": \"\",\n \"reversed_inflows_by_month\": \"\",\n \"reversed_outflows_by_month\": \"\",\n \"state_tax_inflows_by_month\": \"\",\n \"state_tax_outflows_by_month\": \"\",\n \"payroll_tax_inflows_by_month\": \"\",\n \"payroll_tax_outflows_by_month\": \"\",\n \"internal_transfer_inflows_by_month\": \"\",\n \"internal_transfer_outflows_by_month\": \"\",\n \"merchant_service_transfer_inflows_by_month\": \"\",\n \"merchant_service_transfer_outflows_by_month\": \"\",\n \"wire_transfer_inflows_by_month\": \"\",\n \"wire_transfer_outflows_by_month\": \"\",\n \"other_transfer_inflows_by_month\": \"\",\n \"other_transfer_outflows_by_month\": \"\",\n \"truck_stop_inflows_by_month\": \"\",\n \"truck_stop_outflows_by_month\": \"\",\n \"federal_tax_inflows_by_month\": \"\",\n \"federal_tax_outflows_by_month\": \"\",\n \"bank_branch_inflows_by_month\": \"\",\n \"bank_branch_outflows_by_month\": \"\",\n \"credit_builder_inflows_by_month\": \"\",\n \"credit_builder_outflows_by_month\": \"\",\n \"rideshare_by_month\": \"\",\n \"expense_count_by_month\": \"\",\n \"withdrawals_count_by_month\": \"\",\n \"revenue_count_by_month\": \"\",\n \"deposits_count_by_month\": \"\",\n \"nsf_fee_count_by_month\": \"\",\n \"nsf_divisor\": \"\",\n \"nsf_raw_fee_count_by_month\": \"\",\n \"overdraft_fee_count_by_month\": \"\",\n \"overdraft_divisor\": \"\",\n \"overdraft_raw_fee_count_by_month\": \"\",\n \"returned_item_deposit_count_by_month\": \"\",\n \"returned_item_withdrawal_count_by_month\": \"\",\n \"fintech_loan_sources\": [\n {\n \"source\": \"\",\n \"deposit_sum\": \"\",\n \"deposit_count\": \"\",\n \"deposit\": \"\",\n \"pmt_sum\": \"\",\n \"pmt_count\": \"\",\n \"pmt_frequency\": \"\",\n \"pmts\": \"\",\n \"events\": \"\"\n }\n ],\n \"fintech_mca_sources\": [\n {\n \"source\": \"\",\n \"deposit_sum\": \"\",\n \"deposit_count\": \"\",\n \"pmt_sum\": \"\",\n \"pmt_count\": \"\",\n \"pmt_frequency\": \"\"\n }\n ],\n \"num_fintech_loan_sources\": \"\",\n \"num_fintech_mca_sources\": \"\",\n \"counterparties\": [\n {\n \"category\": \"\",\n \"distribution\": [\n {\n \"counterparty\": \"\",\n \"rank\": \"\",\n \"proportion\": \"\",\n \"amount\": \"\"\n }\n ],\n \"average_per_counteryparty\": \"\",\n \"num_counterparties\": \"\"\n }\n ],\n \"cash_flow_at_a_glance\": {\n \"total_revenue\": \"\",\n \"total_expense\": \"\",\n \"total_loan_proceeds\": \"\",\n \"total_loan_payments\": \"\",\n \"debt_coverage_ratio\": \"\",\n \"total_nsf_fee_count\": \"\"\n },\n \"missing_bank_accounts\": {\n \"account_type\": \"\",\n \"account_number\": \"\",\n \"total_transfered_to\": \"\",\n \"total_transfered_from\": \"\"\n },\n \"bank_accounts\": [\n {\n \"bank_account_pk\": \"\",\n \"bank_account_name\": \"\",\n \"bank_name\": \"\",\n \"account_type\": \"\",\n \"account_holder\": \"\",\n \"account_number\": \"\",\n \"holder_zip\": \"\",\n \"holder_country\": \"\",\n \"holder_state\": \"\",\n \"holder_city\": \"\",\n \"holder_address_1\": \"\",\n \"holder_address_2\": \"\",\n \"account_category\": \"\",\n \"txn_count\": \"\",\n \"daily_balances\": \"\",\n \"daily_cash_flows\": \"\",\n \"average_daily_cash_flow\": \"\",\n \"net_cash_flows_by_month\": \"\",\n \"minimum_balance_by_month\": \"\",\n \"average_daily_balance\": \"\",\n \"average_daily_balance_by_month\": \"\",\n \"average_daily_balance_weekday\": \"\",\n \"average_daily_balance_weekday_by_month\": \"\",\n \"total_days\": \"\",\n \"negative_balances_by_month\": \"\",\n \"negative_balances_count_by_month\": \"\",\n \"negative_balances_weekday_by_month\": \"\",\n \"negative_balances_weekday_count_by_month\": \"\",\n \"cash_balance_trend_30d\": \"\",\n \"cash_balance_trend_60d\": \"\",\n \"cash_balance_trend_90d\": \"\",\n \"cash_flow_trend_30d\": \"\",\n \"cash_flow_trend_60d\": \"\",\n \"cash_flow_trend_90d\": \"\",\n \"average_txn_size_by_month\": {},\n \"average_deposits_by_month\": {},\n \"expense_by_month\": \"\",\n \"withdrawals_by_month\": \"\",\n \"revenue_by_month\": \"\",\n \"revenue_deduction_by_month\": \"\",\n \"deposits_by_month\": \"\",\n \"outside_source_deposits_by_month\": \"\",\n \"debt_consolidator_inflows_by_month\": \"\",\n \"debt_consolidator_outflows_by_month\": \"\",\n \"factoring_inflows_by_month\": \"\",\n \"factoring_outflows_by_month\": \"\",\n \"payroll_inflows_by_month\": \"\",\n \"payroll_outflows_by_month\": \"\",\n \"insurance_inflows_by_month\": \"\",\n \"insurance_outflows_by_month\": \"\",\n \"venmo_zelle_cashapp_inflows_by_month\": \"\",\n \"venmo_zelle_cashapp_outflows_by_month\": \"\",\n \"atm_inflows_by_month\": \"\",\n \"atm_outflows_by_month\": \"\",\n \"tolls_inflows_by_month\": \"\",\n \"tolls_outflows_by_month\": \"\",\n \"paypal_inflows_by_month\": \"\",\n \"paypal_outflows_by_month\": \"\",\n \"equipment_lease_inflows_by_month\": \"\",\n \"equipment_lease_outflows_by_month\": \"\",\n \"checks_inflows_by_month\": \"\",\n \"checks_outflows_by_month\": \"\",\n \"txn_four_zeros_inflows_by_month\": \"\",\n \"txn_four_zeros_outflows_by_month\": \"\",\n \"txn_five_zeros_inflows_by_month\": \"\",\n \"txn_five_zeros_outflows_by_month\": \"\",\n \"probable_recurring_txns_inflows_by_month\": \"\",\n \"probable_recurring_txns_outflows_by_month\": \"\",\n \"fintech_loan_inflows_by_month\": \"\",\n \"fintech_loan_outflows_by_month\": \"\",\n \"bank_loan_inflows_by_month\": \"\",\n \"bank_loan_outflows_by_month\": \"\",\n \"other_loan_inflows_by_month\": \"\",\n \"other_loan_outflows_by_month\": \"\",\n \"fintech_mca_inflows_by_month\": \"\",\n \"fintech_mca_outflows_by_month\": \"\",\n \"bank_cash_advance_inflows_by_month\": \"\",\n \"bank_cash_advance_outflows_by_month\": \"\",\n \"debit_card_inflows_by_month\": \"\",\n \"debit_card_outflows_by_month\": \"\",\n \"credit_card_inflows_by_month\": \"\",\n \"credit_card_outflows_by_month\": \"\",\n \"merchant_service_inflows_by_month\": \"\",\n \"merchant_service_outflows_by_month\": \"\",\n \"sba_inflows_by_month\": \"\",\n \"sba_outflows_by_month\": \"\",\n \"remote_inflows_by_month\": \"\",\n \"remote_outflows_by_month\": \"\",\n \"benefits_inflows_by_month\": \"\",\n \"benefits_outflows_by_month\": \"\",\n \"card_rewards_inflows_by_month\": \"\",\n \"card_rewards_outflows_by_month\": \"\",\n \"crypto_inflows_by_month\": \"\",\n \"crypto_outflows_by_month\": \"\",\n \"gambling_inflows_by_month\": \"\",\n \"gambling_outflows_by_month\": \"\",\n \"investment_inflows_by_month\": \"\",\n \"investment_outflows_by_month\": \"\",\n \"reversed_inflows_by_month\": \"\",\n \"reversed_outflows_by_month\": \"\",\n \"state_tax_inflows_by_month\": \"\",\n \"state_tax_outflows_by_month\": \"\",\n \"payroll_tax_inflows_by_month\": \"\",\n \"payroll_tax_outflows_by_month\": \"\",\n \"internal_transfer_inflows_by_month\": \"\",\n \"internal_transfer_outflows_by_month\": \"\",\n \"merchant_service_transfer_inflows_by_month\": \"\",\n \"merchant_service_transfer_outflows_by_month\": \"\",\n \"wire_transfer_inflows_by_month\": \"\",\n \"wire_transfer_outflows_by_month\": \"\",\n \"other_transfer_inflows_by_month\": \"\",\n \"other_transfer_outflows_by_month\": \"\",\n \"truck_stop_inflows_by_month\": \"\",\n \"truck_stop_outflows_by_month\": \"\",\n \"federal_tax_inflows_by_month\": \"\",\n \"federal_tax_outflows_by_month\": \"\",\n \"bank_branch_inflows_by_month\": \"\",\n \"bank_branch_outflows_by_month\": \"\",\n \"credit_builder_inflows_by_month\": \"\",\n \"credit_builder_outflows_by_month\": \"\",\n \"rideshare_by_month\": \"\",\n \"expense_count_by_month\": \"\",\n \"withdrawals_count_by_month\": \"\",\n \"revenue_count_by_month\": \"\",\n \"deposits_count_by_month\": \"\",\n \"nsf_fee_count_by_month\": \"\",\n \"nsf_divisor\": \"\",\n \"nsf_raw_fee_count_by_month\": \"\",\n \"overdraft_fee_count_by_month\": \"\",\n \"overdraft_divisor\": \"\",\n \"overdraft_raw_fee_count_by_month\": \"\",\n \"returned_item_deposit_count_by_month\": \"\",\n \"returned_item_withdrawal_count_by_month\": \"\",\n \"nsf_paid_or_negative_balance_fee_count_by_month\": \"\",\n \"nsf_returned_or_not_paid_fee_count_by_month\": \"\",\n \"periods\": {\n \"begin_date\": \"\",\n \"end_date\": \"\",\n \"begin_balance\": \"\",\n \"end_balance\": \"\",\n \"txn_count\": \"\",\n \"uploaded_doc_pk\": \"\",\n \"average_amount\": \"\",\n \"average_daily_balance\": \"\",\n \"average_daily_cash_flow\": \"\",\n \"average_deposit\": \"\",\n \"deposit_sum\": \"\",\n \"deposit_count\": \"\",\n \"withdrawal_sum\": \"\",\n \"withdrawal_count\": \"\",\n \"revenue\": \"\",\n \"negative_balances_weekday\": \"\",\n \"nsf_fee_sum\": \"\",\n \"nsf_fee_count\": \"\",\n \"nsf_raw_fee_count\": \"\",\n \"overdraft_fee_sum\": \"\",\n \"overdraft_fee_count\": \"\",\n \"overdraft_raw_fee_count\": \"\",\n \"returned_item_deposit_count\": \"\",\n \"returned_item_withdrawal_count\": \"\",\n \"has_weekend_txn\": \"\",\n \"nsf_divisor\": \"\",\n \"overdraft_divisor\": \"\",\n \"max_deposit\": \"\",\n \"average_withdrawal\": \"\",\n \"max_withdrawal\": \"\",\n \"revenue_count\": \"\",\n \"revenue_deduction\": \"\",\n \"expense\": \"\",\n \"expense_count\": \"\",\n \"negative_balances\": \"\",\n \"nsf_days_count\": \"\",\n \"overdraft_days_count\": \"\",\n \"nsf_or_overdraft_days_count\": \"\",\n \"large_deposits\": \"\",\n \"reconciled\": \"\",\n \"recon_error_absolute_amount\": \"\",\n \"recon_error_pct_of_average_daily_balance\": \"\",\n \"primary_recon_error_reason\": \"\",\n \"secondary_recon_error_reason\": \"\",\n \"high_amount_average_daily_balance\": \"\",\n \"balance_ending_with_zero\": \"\",\n \"high_txns_count_atm_over_cash\": \"\",\n \"has_weekend_transactions\": \"\",\n \"no_txn_in_weekdays_within_period\": \"\",\n \"high_txns_amount_atm_over_cash\": \"\"\n }\n }\n ],\n \"number_of_docs_in_book\": \"\",\n \"number_of_docs_processed\": \"\",\n \"uploaded_docs\": [\n {\n \"pk\": \"\",\n \"uuid\": \"\",\n \"status\": \"\",\n \"pages\": \"\",\n \"mixed_uploaded_doc_pk\": \"\",\n \"mixed_uploaded_doc_uuid\": \"\",\n \"rejection_reason\": \"\"\n }\n ],\n \"book_uuid\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-f7555dc0-521b-41e4-a369-dd548a66661f" }, { "id": "f60bccb8-8459-458d-8dd1-e6d8ce60eb55", "name": "Accepted", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/summary?exclude_bank_account_pks=&exclude_months=&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "summary" ], "query": [ { "description": "Bank account primary key(s) to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_bank_account_pks", "value": "" }, { "description": "Months (in YYYY-MM format) of transaction to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_months", "value": "" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Accepted", "code": 202, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"job_id\": \"\",\n \"status\": \"PENDING\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-f60bccb8-8459-458d-8dd1-e6d8ce60eb55" }, { "id": "66f63b9f-aa8a-4a93-8b5e-c73cae8264fe", "name": "Txn Limit Exceeded", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/summary?exclude_bank_account_pks=&exclude_months=&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "summary" ], "query": [ { "description": "Bank account primary key(s) to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_bank_account_pks", "value": "" }, { "description": "Months (in YYYY-MM format) of transaction to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_months", "value": "" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Bad Request", "code": 400, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-66f63b9f-aa8a-4a93-8b5e-c73cae8264fe" }, { "id": "680185ca-bf59-45b4-bfda-384a2432acd5", "name": "Permission Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/summary?exclude_bank_account_pks=&exclude_months=&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "summary" ], "query": [ { "description": "Bank account primary key(s) to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_bank_account_pks", "value": "" }, { "description": "Months (in YYYY-MM format) of transaction to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_months", "value": "" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Forbidden", "code": 403, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-680185ca-bf59-45b4-bfda-384a2432acd5" }, { "id": "91d42abd-4b0d-4b28-a7be-38abc2e5a0b1", "name": "Data Not Found Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/summary?exclude_bank_account_pks=&exclude_months=&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "summary" ], "query": [ { "description": "Bank account primary key(s) to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_bank_account_pks", "value": "" }, { "description": "Months (in YYYY-MM format) of transaction to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_months", "value": "" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Not Found", "code": 404, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-91d42abd-4b0d-4b28-a7be-38abc2e5a0b1" }, { "id": "10512a4c-f42f-41c7-8587-8f2a3e205f46", "name": "Book Contains More Than 100k Transactions", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/summary?exclude_bank_account_pks=&exclude_months=&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "summary" ], "query": [ { "description": "Bank account primary key(s) to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_bank_account_pks", "value": "" }, { "description": "Months (in YYYY-MM format) of transaction to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_months", "value": "" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Unprocessable Entity (WebDAV) (RFC 4918)", "code": 422, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-10512a4c-f42f-41c7-8587-8f2a3e205f46" }, { "id": "0cbe5835-a712-4de3-b8ba-8866b0a82b80", "name": "Analytics Still Processing", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/summary?exclude_bank_account_pks=&exclude_months=&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "summary" ], "query": [ { "description": "Bank account primary key(s) to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_bank_account_pks", "value": "" }, { "description": "Months (in YYYY-MM format) of transaction to exclude from analytics calculations in the book summary. The underlying data remains in the system and is not deleted.\n> \ud83d\udcd8 This parameter is in beta. If you encounter any bug, please reach out to [support@ocrolus.com](mailto:support@ocrolus.com).\n", "key": "exclude_months", "value": "" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Unordered Collection (RFC 3648)", "code": 425, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-0cbe5835-a712-4de3-b8ba-8866b0a82b80" } ], "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-3938058e-e680-4f64-b5e3-dc8053a3f527" } ], "id": "dbf5e62f-1f73-40f9-ac18-41c4077c65e1", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-dbf5e62f-1f73-40f9-ac18-41c4077c65e1" }, { "name": "cash_flow_features", "item": [ { "name": "Cash flow features", "id": "f67cf480-1796-4bad-b741-710b34910b1c", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_features?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_features" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "id": "427a20d7-cc4f-408f-8c5b-29cfba7fc661", "key": "book_uuid", "value": "", "description": "(Required) The unique identifier of the <> that you'd like to analyze. All bank statements in this Book will be analyzed, and other documents will be ignored.\n" } ] }, "description": "This API retrieves pre-engineered analytics on a series of bank statements within a <> with an object structure that\u2019s suitable for modeling applications.\n> \ud83d\udcd8 Note \n > ***Min_days_to_include**: Minimum number of days required for the most recent calendar month to be included in monthly cash flow calculations. The default value is `0`. If the value is set to **32**, only fully completed months are included.\n\n---\n### Async processing \nThis API supports asynchronous processing. To get the asynchronous result, add `async=true` in the query parameter to run the request as a background job and receive a `job_id` immediately instead of waiting for the full response inline. When `async=true`, the endpoint returns `202 Accepted` with a `job_id` instead of the analytics payload.\n \nAsync mode is required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). Once submitted, poll [Async job status](https://docs.ocrolus.com/reference/async-job-status) API to retrieve the result when the job is complete.\n" }, "response": [ { "id": "139bd501-20ae-49a2-8d88-a26b239d6d56", "name": "Success\n", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_features?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_features" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"book_uuid\": \"\",\n \"book_end_month\": \"\",\n \"book_start_month\": \"\",\n \"num_of_months\": \"\",\n \"cash_flow_features\": [],\n \"number_of_docs_in_book\": \"\",\n \"number_of_docs_processed\": \"\",\n \"uploaded_docs\": [\n {\n \"pk\": \"\",\n \"uuid\": \"\",\n \"status\": \"\",\n \"pages\": \"\",\n \"mixed_uploaded_doc_pk\": \"\",\n \"mixed_uploaded_doc_uuid\": \"\",\n \"rejection_reason\": \"\"\n }\n ]\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-139bd501-20ae-49a2-8d88-a26b239d6d56" }, { "id": "4475336e-d5f2-4db5-af73-bd25e4444f6b", "name": "Accepted", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_features?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_features" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Accepted", "code": 202, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"job_id\": \"\",\n \"status\": \"PENDING\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-4475336e-d5f2-4db5-af73-bd25e4444f6b" }, { "id": "56b5a181-1a47-41de-be27-39d29efa1b70", "name": "Permission Errors", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_features?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_features" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Forbidden", "code": 403, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-56b5a181-1a47-41de-be27-39d29efa1b70" }, { "id": "4d5bae1c-0a55-40aa-ace9-70ebbc4993dd", "name": "Data Not Found Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_features?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_features" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Not Found", "code": 404, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-4d5bae1c-0a55-40aa-ace9-70ebbc4993dd" }, { "id": "65542bc4-7ccb-4457-ab53-1bb394b1270b", "name": "Book Contains More Than 100k Transactions", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_features?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_features" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Unprocessable Entity (WebDAV) (RFC 4918)", "code": 422, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-65542bc4-7ccb-4457-ab53-1bb394b1270b" }, { "id": "5469c8f2-a05c-45fc-ba63-263855f9a365", "name": "Analytics Still Processing", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_features?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_features" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Unordered Collection (RFC 3648)", "code": 425, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-5469c8f2-a05c-45fc-ba63-263855f9a365" } ], "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-f67cf480-1796-4bad-b741-710b34910b1c" } ], "id": "16ef404f-3cf3-45da-9ebc-3c6e244e8739", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-16ef404f-3cf3-45da-9ebc-3c6e244e8739" }, { "name": "enriched_txns", "item": [ { "name": "Enriched transactions", "id": "2291e926-8d96-4124-8295-d0f2c8cda4ea", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/enriched_txns?offset=&limit=&include_pending_plaid_transactions=false&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "enriched_txns" ], "query": [ { "description": "The starting point (number of records to skip) from the latest transaction to fetch results.", "key": "offset", "value": "" }, { "description": "The maximum number of records to be fetched starting from the specified `offset` value.", "key": "limit", "value": "" }, { "description": "Provides an option to include pending transactions in the response. When set to `true`, the response payload includes an additional `pending_plaid_transactions` field listing currently pending transactions for the Book\u2019s Plaid-linked accounts.\n\nPending Plaid transactions are transactions that the financial institution has reported to Plaid but which have not yet posted to the account. For example, card authorizations that have not cleared, or ACH debits still in flight. Including them gives you early visibility into recent activity that will eventually appear in the posted transaction set.\n\n> \ud83d\udcd8 Note \n> - Pending transactions are surfaced for visibility only. They are not processed through Ocrolus\u2019s enrichment pipeline and therefore do not include tags, categories, or counterparties.\n> - These transactions are excluded from all analytics outputs. Cash flow features, Book summaries, risk scores, lender analytics, and analytics exports are computed only from posted transactions. \n> - Once a pending transaction posts at the financial institution, it is processed through enrichment and appears in the standard posted transaction set on the next refresh. The pending entry is then removed. \n", "key": "include_pending_plaid_transactions", "value": "false" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "id": "94a6adf6-c516-4351-b60e-1ac6a2b06078", "key": "book_uuid", "value": "", "description": "(Required) The unique identifier of the <> that you'd like to analyze.\n" } ] }, "description": "\nThis API provides categorizations for each transaction in the requested <>. It's the building block for all the Cash Flow Analytics products. It contains a comprehensive list of categories, accurate Transaction tagging, and improved revenue, expense, and transfer logic.\n\n---\n\n### Async processing \n\nThis API supports asynchronous processing. To get the asynchronous result, add `async=true` in the query parameter to run the request as a background job and receive a `job_id` immediately instead of waiting for the full response inline. When `async=true`, the endpoint returns `202 Accepted` with a `job_id` instead of the analytics payload.\n\nAsync mode is required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). Once submitted, poll\n[Async job status](https://docs.ocrolus.com/reference/async-job-status) API to retrieve the result when the job is complete.\n" }, "response": [ { "id": "0fce3c4b-518c-403e-a273-83168325da99", "name": "Success", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/enriched_txns?offset=&limit=&include_pending_plaid_transactions=false&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "enriched_txns" ], "query": [ { "description": "The starting point (number of records to skip) from the latest transaction to fetch results.", "key": "offset", "value": "" }, { "description": "The maximum number of records to be fetched starting from the specified `offset` value.", "key": "limit", "value": "" }, { "description": "Provides an option to include pending transactions in the response. When set to `true`, the response payload includes an additional `pending_plaid_transactions` field listing currently pending transactions for the Book\u2019s Plaid-linked accounts.\n\nPending Plaid transactions are transactions that the financial institution has reported to Plaid but which have not yet posted to the account. For example, card authorizations that have not cleared, or ACH debits still in flight. Including them gives you early visibility into recent activity that will eventually appear in the posted transaction set.\n\n> \ud83d\udcd8 Note \n> - Pending transactions are surfaced for visibility only. They are not processed through Ocrolus\u2019s enrichment pipeline and therefore do not include tags, categories, or counterparties.\n> - These transactions are excluded from all analytics outputs. Cash flow features, Book summaries, risk scores, lender analytics, and analytics exports are computed only from posted transactions. \n> - Once a pending transaction posts at the financial institution, it is processed through enrichment and appears in the standard posted transaction set on the next refresh. The pending entry is then removed. \n", "key": "include_pending_plaid_transactions", "value": "false" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"book_uuid\": \"\",\n \"filtered_total\": \"\",\n \"offset\": \"\",\n \"limit\": \"\",\n \"enriched_transactions\": [\n {\n \"txn_pk\": \"\",\n \"txn_date\": \"\",\n \"description\": \"\",\n \"bank_account_pk\": \"\",\n \"uploaded_doc_pk\": \"\",\n \"uploaded_doc_name\": \"\",\n \"amount\": \"\",\n \"atm\": \"\",\n \"bank_branch\": \"\",\n \"bank_cash_advance\": \"\",\n \"bank_loan\": \"\",\n \"bank\": \"\",\n \"benefits\": \"\",\n \"card_rewards\": \"\",\n \"checks\": \"\",\n \"counterparty\": \"\",\n \"credit_builder\": \"\",\n \"credit_card\": \"\",\n \"crypto\": \"\",\n \"debit_card\": \"\",\n \"debt_consolidator\": \"\",\n \"deposits\": \"\",\n \"equipment_lease\": \"\",\n \"expense\": \"\",\n \"factoring\": \"\",\n \"federal_tax\": \"\",\n \"fintech_loan\": \"\",\n \"fintech_loan_source\": \"\",\n \"fintech_mca\": \"\",\n \"fintech_mca_source\": \"\",\n \"fintech\": \"\",\n \"gambling\": \"\",\n \"insurance\": \"\",\n \"internal_transfer\": \"\",\n \"investment\": \"\",\n \"large_deposits\": \"\",\n \"merchant_service_transfer\": \"\",\n \"merchant_service\": \"\",\n \"nsf\": \"\",\n \"nsf_paid_or_negative_balance\": \"\",\n \"nsf_returned_or_not_paid\": \"\",\n \"other_loan\": \"\",\n \"other_transfer\": \"\",\n \"outside_source_deposits\": \"\",\n \"overdraft\": \"\",\n \"paypal\": \"\",\n \"payroll_tax\": \"\",\n \"payroll\": \"\",\n \"probable_recurring_txns\": \"\",\n \"remote\": \"\",\n \"returned_item\": \"\",\n \"revenue_deduction_other\": \"\",\n \"revenue_deduction\": \"\",\n \"revenue\": \"\",\n \"reversed\": \"\",\n \"sba\": \"\",\n \"state_tax\": \"\",\n \"tolls\": \"\",\n \"truck_stop\": \"\",\n \"txn_five_zeros\": \"\",\n \"txn_four_zeros\": \"\",\n \"venmo_zelle_cashapp\": \"\",\n \"wire_transfer\": \"\",\n \"withdrawals\": \"\",\n \"comment\": \"\",\n \"is_noteworthy\": \"\",\n \"page_idx\": \"\",\n \"unreconciled_internal_transfer\": \"\",\n \"reconciled_txn_pk\": \"\",\n \"rideshare\": \"\",\n \"custom_tag\": \"\"\n },\n {\n \"txn_pk\": \"\",\n \"txn_date\": \"\",\n \"description\": \"\",\n \"bank_account_pk\": \"\",\n \"uploaded_doc_pk\": \"\",\n \"uploaded_doc_name\": \"\",\n \"amount\": \"\",\n \"atm\": \"\",\n \"bank_branch\": \"\",\n \"bank_cash_advance\": \"\",\n \"bank_loan\": \"\",\n \"bank\": \"\",\n \"benefits\": \"\",\n \"card_rewards\": \"\",\n \"checks\": \"\",\n \"counterparty\": \"\",\n \"credit_builder\": \"\",\n \"credit_card\": \"\",\n \"crypto\": \"\",\n \"debit_card\": \"\",\n \"debt_consolidator\": \"\",\n \"deposits\": \"\",\n \"equipment_lease\": \"\",\n \"expense\": \"\",\n \"factoring\": \"\",\n \"federal_tax\": \"\",\n \"fintech_loan\": \"\",\n \"fintech_loan_source\": \"\",\n \"fintech_mca\": \"\",\n \"fintech_mca_source\": \"\",\n \"fintech\": \"\",\n \"gambling\": \"\",\n \"insurance\": \"\",\n \"internal_transfer\": \"\",\n \"investment\": \"\",\n \"large_deposits\": \"\",\n \"merchant_service_transfer\": \"\",\n \"merchant_service\": \"\",\n \"nsf\": \"\",\n \"nsf_paid_or_negative_balance\": \"\",\n \"nsf_returned_or_not_paid\": \"\",\n \"other_loan\": \"\",\n \"other_transfer\": \"\",\n \"outside_source_deposits\": \"\",\n \"overdraft\": \"\",\n \"paypal\": \"\",\n \"payroll_tax\": \"\",\n \"payroll\": \"\",\n \"probable_recurring_txns\": \"\",\n \"remote\": \"\",\n \"returned_item\": \"\",\n \"revenue_deduction_other\": \"\",\n \"revenue_deduction\": \"\",\n \"revenue\": \"\",\n \"reversed\": \"\",\n \"sba\": \"\",\n \"state_tax\": \"\",\n \"tolls\": \"\",\n \"truck_stop\": \"\",\n \"txn_five_zeros\": \"\",\n \"txn_four_zeros\": \"\",\n \"venmo_zelle_cashapp\": \"\",\n \"wire_transfer\": \"\",\n \"withdrawals\": \"\",\n \"comment\": \"\",\n \"is_noteworthy\": \"\",\n \"page_idx\": \"\",\n \"unreconciled_internal_transfer\": \"\",\n \"reconciled_txn_pk\": \"\",\n \"rideshare\": \"\",\n \"custom_tag\": \"\"\n }\n ],\n \"total\": \"\",\n \"number_of_docs_in_book\": \"\",\n \"number_of_docs_processed\": \"\",\n \"uploaded_docs\": [\n {\n \"pk\": \"\",\n \"uuid\": \"\",\n \"status\": \"\",\n \"pages\": \"\",\n \"mixed_uploaded_doc_pk\": \"\",\n \"mixed_uploaded_doc_uuid\": \"\",\n \"rejection_reason\": \"\"\n },\n {\n \"pk\": \"\",\n \"uuid\": \"\",\n \"status\": \"\",\n \"pages\": \"\",\n \"mixed_uploaded_doc_pk\": \"\",\n \"mixed_uploaded_doc_uuid\": \"\",\n \"rejection_reason\": \"\"\n }\n ],\n \"mismatched_transactions\": [\n {\n \"txn_pk\": \"\",\n \"txn_date\": \"\",\n \"description\": \"\",\n \"amount\": \"\",\n \"uploaded_doc_pk\": \"\",\n \"uploaded_doc_format\": \"\",\n \"severity\": \"\",\n \"reason_code\": \"\",\n \"related_txn_pk\": \"\",\n \"tags\": \"\",\n \"counterparty\": \"\"\n },\n {\n \"txn_pk\": \"\",\n \"txn_date\": \"\",\n \"description\": \"\",\n \"amount\": \"\",\n \"uploaded_doc_pk\": \"\",\n \"uploaded_doc_format\": \"\",\n \"severity\": \"\",\n \"reason_code\": \"\",\n \"related_txn_pk\": \"\",\n \"tags\": \"\",\n \"counterparty\": \"\"\n }\n ],\n \"bank_checks\": [\n {\n \"uuid\": \"\",\n \"bank_account_pk\": \"\",\n \"amount\": \"\",\n \"pay_to\": \"\",\n \"txn_date\": \"\",\n \"check_number\": \"\",\n \"memo_number\": \"\"\n },\n {\n \"uuid\": \"\",\n \"bank_account_pk\": \"\",\n \"amount\": \"\",\n \"pay_to\": \"\",\n \"txn_date\": \"\",\n \"check_number\": \"\",\n \"memo_number\": \"\"\n }\n ],\n \"pending_plaid_transactions\": [\n {\n \"amount\": \"\",\n \"description\": \"\",\n \"iso_currency_code\": \"\",\n \"plaid_account_id\": \"\",\n \"plaid_txn_id\": \"\",\n \"txn_date\": \"\",\n \"uploaded_doc_uuid\": \"\"\n },\n {\n \"amount\": \"\",\n \"description\": \"\",\n \"iso_currency_code\": \"\",\n \"plaid_account_id\": \"\",\n \"plaid_txn_id\": \"\",\n \"txn_date\": \"\",\n \"uploaded_doc_uuid\": \"\"\n }\n ],\n \"analytic_constants_version\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-0fce3c4b-518c-403e-a273-83168325da99" }, { "id": "a8aa6343-c43c-4090-9c89-6a3d4d57b512", "name": "Accepted", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/enriched_txns?offset=&limit=&include_pending_plaid_transactions=false&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "enriched_txns" ], "query": [ { "description": "The starting point (number of records to skip) from the latest transaction to fetch results.", "key": "offset", "value": "" }, { "description": "The maximum number of records to be fetched starting from the specified `offset` value.", "key": "limit", "value": "" }, { "description": "Provides an option to include pending transactions in the response. When set to `true`, the response payload includes an additional `pending_plaid_transactions` field listing currently pending transactions for the Book\u2019s Plaid-linked accounts.\n\nPending Plaid transactions are transactions that the financial institution has reported to Plaid but which have not yet posted to the account. For example, card authorizations that have not cleared, or ACH debits still in flight. Including them gives you early visibility into recent activity that will eventually appear in the posted transaction set.\n\n> \ud83d\udcd8 Note \n> - Pending transactions are surfaced for visibility only. They are not processed through Ocrolus\u2019s enrichment pipeline and therefore do not include tags, categories, or counterparties.\n> - These transactions are excluded from all analytics outputs. Cash flow features, Book summaries, risk scores, lender analytics, and analytics exports are computed only from posted transactions. \n> - Once a pending transaction posts at the financial institution, it is processed through enrichment and appears in the standard posted transaction set on the next refresh. The pending entry is then removed. \n", "key": "include_pending_plaid_transactions", "value": "false" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Accepted", "code": 202, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"job_id\": \"\",\n \"status\": \"PENDING\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-a8aa6343-c43c-4090-9c89-6a3d4d57b512" }, { "id": "246644ba-90f0-4020-8b94-1472079f2afe", "name": "Permission Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/enriched_txns?offset=&limit=&include_pending_plaid_transactions=false&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "enriched_txns" ], "query": [ { "description": "The starting point (number of records to skip) from the latest transaction to fetch results.", "key": "offset", "value": "" }, { "description": "The maximum number of records to be fetched starting from the specified `offset` value.", "key": "limit", "value": "" }, { "description": "Provides an option to include pending transactions in the response. When set to `true`, the response payload includes an additional `pending_plaid_transactions` field listing currently pending transactions for the Book\u2019s Plaid-linked accounts.\n\nPending Plaid transactions are transactions that the financial institution has reported to Plaid but which have not yet posted to the account. For example, card authorizations that have not cleared, or ACH debits still in flight. Including them gives you early visibility into recent activity that will eventually appear in the posted transaction set.\n\n> \ud83d\udcd8 Note \n> - Pending transactions are surfaced for visibility only. They are not processed through Ocrolus\u2019s enrichment pipeline and therefore do not include tags, categories, or counterparties.\n> - These transactions are excluded from all analytics outputs. Cash flow features, Book summaries, risk scores, lender analytics, and analytics exports are computed only from posted transactions. \n> - Once a pending transaction posts at the financial institution, it is processed through enrichment and appears in the standard posted transaction set on the next refresh. The pending entry is then removed. \n", "key": "include_pending_plaid_transactions", "value": "false" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Forbidden", "code": 403, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-246644ba-90f0-4020-8b94-1472079f2afe" }, { "id": "92e607ef-73aa-4093-b6c7-80073051165d", "name": "No Data Found", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/enriched_txns?offset=&limit=&include_pending_plaid_transactions=false&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "enriched_txns" ], "query": [ { "description": "The starting point (number of records to skip) from the latest transaction to fetch results.", "key": "offset", "value": "" }, { "description": "The maximum number of records to be fetched starting from the specified `offset` value.", "key": "limit", "value": "" }, { "description": "Provides an option to include pending transactions in the response. When set to `true`, the response payload includes an additional `pending_plaid_transactions` field listing currently pending transactions for the Book\u2019s Plaid-linked accounts.\n\nPending Plaid transactions are transactions that the financial institution has reported to Plaid but which have not yet posted to the account. For example, card authorizations that have not cleared, or ACH debits still in flight. Including them gives you early visibility into recent activity that will eventually appear in the posted transaction set.\n\n> \ud83d\udcd8 Note \n> - Pending transactions are surfaced for visibility only. They are not processed through Ocrolus\u2019s enrichment pipeline and therefore do not include tags, categories, or counterparties.\n> - These transactions are excluded from all analytics outputs. Cash flow features, Book summaries, risk scores, lender analytics, and analytics exports are computed only from posted transactions. \n> - Once a pending transaction posts at the financial institution, it is processed through enrichment and appears in the standard posted transaction set on the next refresh. The pending entry is then removed. \n", "key": "include_pending_plaid_transactions", "value": "false" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Not Found", "code": 404, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-92e607ef-73aa-4093-b6c7-80073051165d" }, { "id": "b8df6ef8-e607-46ec-90ec-50f1e659116c", "name": "Book Contains More Than 100k Transactions", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/enriched_txns?offset=&limit=&include_pending_plaid_transactions=false&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "enriched_txns" ], "query": [ { "description": "The starting point (number of records to skip) from the latest transaction to fetch results.", "key": "offset", "value": "" }, { "description": "The maximum number of records to be fetched starting from the specified `offset` value.", "key": "limit", "value": "" }, { "description": "Provides an option to include pending transactions in the response. When set to `true`, the response payload includes an additional `pending_plaid_transactions` field listing currently pending transactions for the Book\u2019s Plaid-linked accounts.\n\nPending Plaid transactions are transactions that the financial institution has reported to Plaid but which have not yet posted to the account. For example, card authorizations that have not cleared, or ACH debits still in flight. Including them gives you early visibility into recent activity that will eventually appear in the posted transaction set.\n\n> \ud83d\udcd8 Note \n> - Pending transactions are surfaced for visibility only. They are not processed through Ocrolus\u2019s enrichment pipeline and therefore do not include tags, categories, or counterparties.\n> - These transactions are excluded from all analytics outputs. Cash flow features, Book summaries, risk scores, lender analytics, and analytics exports are computed only from posted transactions. \n> - Once a pending transaction posts at the financial institution, it is processed through enrichment and appears in the standard posted transaction set on the next refresh. The pending entry is then removed. \n", "key": "include_pending_plaid_transactions", "value": "false" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Unprocessable Entity (WebDAV) (RFC 4918)", "code": 422, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-b8df6ef8-e607-46ec-90ec-50f1e659116c" }, { "id": "0b927e96-0378-4cc6-83e0-15276f0e03a1", "name": "Analytics Still Processing", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/enriched_txns?offset=&limit=&include_pending_plaid_transactions=false&async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "enriched_txns" ], "query": [ { "description": "The starting point (number of records to skip) from the latest transaction to fetch results.", "key": "offset", "value": "" }, { "description": "The maximum number of records to be fetched starting from the specified `offset` value.", "key": "limit", "value": "" }, { "description": "Provides an option to include pending transactions in the response. When set to `true`, the response payload includes an additional `pending_plaid_transactions` field listing currently pending transactions for the Book\u2019s Plaid-linked accounts.\n\nPending Plaid transactions are transactions that the financial institution has reported to Plaid but which have not yet posted to the account. For example, card authorizations that have not cleared, or ACH debits still in flight. Including them gives you early visibility into recent activity that will eventually appear in the posted transaction set.\n\n> \ud83d\udcd8 Note \n> - Pending transactions are surfaced for visibility only. They are not processed through Ocrolus\u2019s enrichment pipeline and therefore do not include tags, categories, or counterparties.\n> - These transactions are excluded from all analytics outputs. Cash flow features, Book summaries, risk scores, lender analytics, and analytics exports are computed only from posted transactions. \n> - Once a pending transaction posts at the financial institution, it is processed through enrichment and appears in the standard posted transaction set on the next refresh. The pending entry is then removed. \n", "key": "include_pending_plaid_transactions", "value": "false" }, { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Unordered Collection (RFC 3648)", "code": 425, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-0b927e96-0378-4cc6-83e0-15276f0e03a1" } ], "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-2291e926-8d96-4124-8295-d0f2c8cda4ea" } ], "id": "dc18fb7c-2f1c-4887-af62-20a19d08abec", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-dc18fb7c-2f1c-4887-af62-20a19d08abec" }, { "name": "lender_analytics", "item": [ { "name": "xlsx", "item": [ { "name": "SMB analytics (Excel)", "id": "475bd5d5-9a7c-4aa0-a26a-c8c0fcc9fe4f", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/lender_analytics/xlsx?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "lender_analytics", "xlsx" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "id": "4d618215-8828-4f16-8982-3b5639217fdb", "key": "book_uuid", "value": "", "description": "(Required) The unique identifier of the <> that contains the bank statements you'd like to have analyzed.\n" } ] }, "description": "\nThis API retrieves analytics encompassing Enriched Transactions, Book Summary, Cash Flow Features for a Book in an Excel format.\n---\n\nThe output of this endpoint is intended for manual review, as opposed to automated consumption by your application.\n\n> \ud83d\udea7\n> The response will have a MIME type of `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`, hence there is no JSON response schema. See [here](https://docs.google.com/spreadsheets/d/1h7rIIlL4nrX5JxLhznDa69QKq11gAzWK) for an example output.\n\n---\n\n### Async processing \n\nThis API supports asynchronous processing. To get the asynchronous result, add `async=true` in the query parameter to run the request as a background job and receive a `job_id` immediately instead of waiting for the full response inline. When `async=true`, the endpoint returns `202 Accepted` with a `job_id` instead of the analytics payload.\n \nAsync mode is required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). Once submitted, poll\n[Async job status](https://docs.ocrolus.com/reference/async-job-status) API to retrieve the result when the job is complete.\n" }, "response": [ { "id": "5b23099c-f1cb-4fb7-aa49-058663b0e779", "name": "Success", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/lender_analytics/xlsx?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "lender_analytics", "xlsx" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "text", "header": [ { "key": "Content-Type", "value": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" } ], "cookie": [], "responseTime": null, "body": "{\n \"examples\": {\n \"ExampleSpreadsheet\": {\n \"summary\": \"Success\",\n \"externalValue\": \"https://docs.google.com/spreadsheets/d/1h7rIIlL4nrX5JxLhznDa69QKq11gAzWK\"\n }\n }\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-5b23099c-f1cb-4fb7-aa49-058663b0e779" }, { "id": "bcf82e92-f309-49d7-8f65-1fd1425e99c0", "name": "Accepted", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/lender_analytics/xlsx?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "lender_analytics", "xlsx" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Accepted", "code": 202, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"job_id\": \"\",\n \"status\": \"PENDING\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-bcf82e92-f309-49d7-8f65-1fd1425e99c0" }, { "id": "8b5aa625-9b39-4c5d-a60c-600759b48682", "name": "Txn Limit Exceeded", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/lender_analytics/xlsx?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "lender_analytics", "xlsx" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Bad Request", "code": 400, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-8b5aa625-9b39-4c5d-a60c-600759b48682" }, { "id": "e84ef7cd-6d04-4d84-a9d1-0f4dea5b4a7a", "name": "Permission Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/lender_analytics/xlsx?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "lender_analytics", "xlsx" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Forbidden", "code": 403, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-e84ef7cd-6d04-4d84-a9d1-0f4dea5b4a7a" }, { "id": "16bdcd9b-3f08-45dd-b185-3d1a7271162a", "name": "Data Not Found Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/lender_analytics/xlsx?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "lender_analytics", "xlsx" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Not Found", "code": 404, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-16bdcd9b-3f08-45dd-b185-3d1a7271162a" }, { "id": "76dadefd-f270-4dce-9627-cfdf1aa6c12f", "name": "Analytics Still Processing", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/lender_analytics/xlsx?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "lender_analytics", "xlsx" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Unordered Collection (RFC 3648)", "code": 425, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-76dadefd-f270-4dce-9627-cfdf1aa6c12f" } ], "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-475bd5d5-9a7c-4aa0-a26a-c8c0fcc9fe4f" } ], "id": "385e1ccc-7904-42ac-a140-171e36a885f7", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-385e1ccc-7904-42ac-a140-171e36a885f7" } ], "id": "e7d3fdb4-d4ec-4bb8-9047-b3574c34310e", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-e7d3fdb4-d4ec-4bb8-9047-b3574c34310e" }, { "name": "cash_flow_risk_score", "item": [ { "name": "Risk score", "id": "2ef4c46b-ccc3-483c-993d-0ce542088ac1", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_risk_score?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_risk_score" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "id": "f30fb8f3-478b-40f2-8ea4-a93fb86f817a", "key": "book_uuid", "value": "", "description": "(Required) The unique identifier of the <> that you'd like to analyze.\n" } ] }, "description": "This API retrieves the Risk Score of a Book in JSON format. The Ocrolus Risk Score offers a highly analytical approach to predicting the probability of default for borrowers based on cash flow analytics. This endpoint offers the following benefits:\n\n- Make quicker, more accurate lending decisions backed by data - Leverage alternative data effectively to gain a complete view of borrowers and speed up decision making\n\n- Mitigate credit risk - Easily identifying borrowers that are likely to default with the necessary level of context to understand contributors and detractors\n\n- Expand access to credit and approve more loans for borrowers - Having insight into borrowers\u2019 finances and associated risk can help you see opportunities where others only see risk\n\n### Async processing \n\nThis API supports asynchronous processing. To get the asynchronous result, add `async=true` in the query parameter to run the request as a background job and receive a `job_id` immediately instead of waiting for the full response inline. When `async=true`, the endpoint returns `202 Accepted` with a `job_id` instead of the analytics payload.\n \nAsync mode is required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). Once submitted, poll\n[Async job status](https://docs.ocrolus.com/reference/async-job-status) API to retrieve the result when the job is complete.\n" }, "response": [ { "id": "eade4956-3953-4c64-bfc5-2520e25699c7", "name": "Success", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_risk_score?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_risk_score" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"book_uuid\": \"\",\n \"proba_default\": \"\",\n \"feature_importance\": {\n \"feature\": \"\"\n },\n \"model_version\": \"\",\n \"error\": {}\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-eade4956-3953-4c64-bfc5-2520e25699c7" }, { "id": "674ccc35-2788-4b18-b4e7-f26302438b17", "name": "Accepted", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_risk_score?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_risk_score" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Accepted", "code": 202, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"job_id\": \"\",\n \"status\": \"PENDING\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-674ccc35-2788-4b18-b4e7-f26302438b17" }, { "id": "96a877bd-9263-46be-8110-2a288adb6401", "name": "Feature Not Enabled Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_risk_score?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_risk_score" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Bad Request", "code": 400, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-96a877bd-9263-46be-8110-2a288adb6401" }, { "id": "8b953ef2-f99f-4b31-91d0-6de6e9f4ccb5", "name": "Permission Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_risk_score?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_risk_score" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Forbidden", "code": 403, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-8b953ef2-f99f-4b31-91d0-6de6e9f4ccb5" }, { "id": "3b1c0db1-32d2-47d4-910a-0698fb337ef8", "name": "Data Not Found Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_risk_score?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_risk_score" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Not Found", "code": 404, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-3b1c0db1-32d2-47d4-910a-0698fb337ef8" }, { "id": "29f59afa-c90d-4d75-9da6-961dd56b9e2d", "name": "Analytics Still Processing", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/cash_flow_risk_score?async=false", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "cash_flow_risk_score" ], "query": [ { "description": "When `true`, runs the request as a background job and returns a `job_id` immediately instead of the analytics payload. Required for Books with more than 100,000 transactions. Books exceeding 1,000,000 transactions are rejected with `422` (error code `1100`). \n", "key": "async", "value": "false" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Unordered Collection (RFC 3648)", "code": 425, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"code\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-29f59afa-c90d-4d75-9da6-961dd56b9e2d" } ], "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-2ef4c46b-ccc3-483c-993d-0ce542088ac1" } ], "id": "1bacdfc2-d26b-4bd5-ba69-0a5fe80c05b6", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-1bacdfc2-d26b-4bd5-ba69-0a5fe80c05b6" }, { "name": "credit-shopping-events", "item": [ { "name": "Credit shopping events", "id": "b804ddef-8c99-4b8a-802a-f20c606d28a9", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/credit-shopping-events", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "credit-shopping-events" ], "variable": [ { "id": "419c0c7e-94a0-4b53-8be3-a45d38520a50", "key": "book_uuid", "value": "", "description": "(Required) The unique identifier of the <>.\n" } ] }, "description": "This API retrieve credit shopping events (CSE) for an SMB <>. It groups a merchant's loan inquiries into clusters to give lenders visibility into how frequently and how recently the merchant has shopped for credit. The response includes two velocity views \u2014 individual loan inquiries and grouped credit-shopping events, along with the full list of events and their anonymized lender inquiry timestamps.\n" }, "response": [ { "id": "27891fd9-32e3-4143-9bf5-06102b912fc1", "name": "Success", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/credit-shopping-events", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "credit-shopping-events" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"business_id\": \"\",\n \"business_name\": \"\",\n \"loan_inquiry_velocity\": {\n \"day_count_30\": \"\",\n \"day_count_60\": \"\",\n \"day_count_90\": \"\",\n \"day_count_180\": \"\",\n \"day_count_270\": \"\",\n \"day_count_365\": \"\"\n },\n \"credit_shopping_velocity\": {\n \"day_count_30\": \"\",\n \"day_count_60\": \"\",\n \"day_count_90\": \"\",\n \"day_count_180\": \"\",\n \"day_count_270\": \"\",\n \"day_count_365\": \"\"\n },\n \"credit_shopping_events\": [\n {\n \"first_inquiry_ts\": \"\",\n \"last_inquiry_ts\": \"\",\n \"duration_days\": \"\",\n \"inquiry_count\": \"\",\n \"unique_lender_count\": \"\",\n \"lenders\": [\n {\n \"application_history\": [\n \"\",\n \"\"\n ]\n },\n {\n \"application_history\": [\n \"\",\n \"\"\n ]\n }\n ]\n },\n {\n \"first_inquiry_ts\": \"\",\n \"last_inquiry_ts\": \"\",\n \"duration_days\": \"\",\n \"inquiry_count\": \"\",\n \"unique_lender_count\": \"\",\n \"lenders\": [\n {\n \"application_history\": [\n \"\",\n \"\"\n ]\n },\n {\n \"application_history\": [\n \"\",\n \"\"\n ]\n }\n ]\n }\n ]\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-27891fd9-32e3-4143-9bf5-06102b912fc1" }, { "id": "532071c6-4345-4a50-bdbe-9e0396d4b131", "name": "Invalid book_uuid", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/credit-shopping-events", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "credit-shopping-events" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Bad Request", "code": 400, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-532071c6-4345-4a50-bdbe-9e0396d4b131" }, { "id": "14298735-c8ea-4b5d-abb1-f267068a4123", "name": "Missing or invalid credentials", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/credit-shopping-events", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "credit-shopping-events" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Unauthorized", "code": 401, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-14298735-c8ea-4b5d-abb1-f267068a4123" }, { "id": "e3095f28-dff6-43f4-b583-1b9cd4e91bea", "name": "No SMB entity resolved for the Book", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/credit-shopping-events", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "credit-shopping-events" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Forbidden", "code": 403, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-e3095f28-dff6-43f4-b583-1b9cd4e91bea" }, { "id": "f32ba7c3-36f3-44ef-8e48-5835bde0d30c", "name": "Internal server error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/book/:book_uuid/credit-shopping-events", "host": [ "{{baseUrl}}" ], "path": [ "v2", "book", ":book_uuid", "credit-shopping-events" ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Internal Server Error", "code": 500, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-f32ba7c3-36f3-44ef-8e48-5835bde0d30c" } ], "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-b804ddef-8c99-4b8a-802a-f20c606d28a9" } ], "id": "1e241be7-9de0-44a1-b439-ef4cff608090", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-1e241be7-9de0-44a1-b439-ef4cff608090" } ], "id": "0b0f55b2-6732-4a35-a45f-82c68d9be97c", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-0b0f55b2-6732-4a35-a45f-82c68d9be97c" } ], "id": "e0d6ec41-784d-4122-8fb1-73b98088a14e", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-e0d6ec41-784d-4122-8fb1-73b98088a14e" }, { "name": "analytics", "item": [ { "name": "book", "item": [ { "name": "{book_uuid}", "item": [ { "name": "benchmark", "item": [ { "name": "Cash flow benchmarking (CFB)", "id": "517cea66-e08b-4531-8cd3-102ba89a8d58", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/v2/analytics/book/:book_uuid/benchmark?time_window_days=90&geography_type=national&geography_code=ALL&industry_level=naics4&industry_code=", "host": [ "{{baseUrl}}" ], "path": [ "v2", "analytics", "book", ":book_uuid", "benchmark" ], "query": [ { "description": "Rolling window, in days, measured back from the Book's creation date. Sets the period over which the Book's metrics and the peer distribution are computed.\n", "key": "time_window_days", "value": "90" }, { "description": "Geographic scope of the peer group. `msa` uses metropolitan statistical area codes.\n", "key": "geography_type", "value": "national" }, { "description": "Geographic identifier for the peer group: a state abbreviation (e.g., `NY`), an MSA code, or `ALL`. Must not be `ALL` when `geography_type` is `state` or `msa`.\n", "key": "geography_code", "value": "ALL" }, { "description": "<> granularity used to build the peer group.", "key": "industry_level", "value": "naics4" }, { "description": "NAICS code matching `industry_level`. Required as a 6-digit code when `industry_level` is `naics6`. Otherwise derived from the Book's NAICS data.\n", "key": "industry_code", "value": "" } ], "variable": [ { "id": "9d2ffc8b-6a52-4053-87a7-db6d8a976bec", "key": "book_uuid", "value": "", "description": "(Required) The unique identifier of the <>.\n" } ] }, "description": "Retrieve benchmarking percentiles for an SMB <>. The endpoint ranks the Book against anonymized peers across four metrics: revenue, expenses, fintech inflows, and fintech outflows. Use optional query parameters to shape the peer group by time window, geography, and industry granularity.\n\n> \ud83d\udea7 Early access!\n> This feature is available through early access. To enable either feature for your organization, contact your Account Manager.\n\n> \ud83d\udcd8 Peer-group validity\n> Results are returned only when the peer group contains 30 or more Books. Opted-out organizations are excluded before computation. The same inputs return identical results across the API and the Dashboard.\n" }, "response": [ { "id": "ad2ee98f-c8de-49b4-ba40-e42b761853c7", "name": "Success", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/analytics/book/:book_uuid/benchmark?time_window_days=90&geography_type=national&geography_code=ALL&industry_level=naics4&industry_code=", "host": [ "{{baseUrl}}" ], "path": [ "v2", "analytics", "book", ":book_uuid", "benchmark" ], "query": [ { "description": "Rolling window, in days, measured back from the Book's creation date. Sets the period over which the Book's metrics and the peer distribution are computed.\n", "key": "time_window_days", "value": "90" }, { "description": "Geographic scope of the peer group. `msa` uses metropolitan statistical area codes.\n", "key": "geography_type", "value": "national" }, { "description": "Geographic identifier for the peer group: a state abbreviation (e.g., `NY`), an MSA code, or `ALL`. Must not be `ALL` when `geography_type` is `state` or `msa`.\n", "key": "geography_code", "value": "ALL" }, { "description": "<> granularity used to build the peer group.", "key": "industry_level", "value": "naics4" }, { "description": "NAICS code matching `industry_level`. Required as a 6-digit code when `industry_level` is `naics6`. Otherwise derived from the Book's NAICS data.\n", "key": "industry_code", "value": "" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"book_uuid\": \"\",\n \"book_created_ts\": \"\",\n \"dimensions\": {\n \"time_window_days\": \"\",\n \"geography_type\": \"msa\",\n \"geography_code\": \"\",\n \"industry_level\": \"naics2\",\n \"industry_code\": \"\"\n },\n \"metrics\": [\n {\n \"metric\": \"fintech_inflows\",\n \"value\": \"\",\n \"percentile\": \"\"\n },\n {\n \"metric\": \"fintech_inflows\",\n \"value\": \"\",\n \"percentile\": \"\"\n }\n ]\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-ad2ee98f-c8de-49b4-ba40-e42b761853c7" }, { "id": "213c3a6c-4335-4676-a944-ec0e775b5d7a", "name": "Invalid request. Returned for an invalid `book_uuid`, invalid parameter value or combination, or a peer group fewer than 30 books.\n", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/analytics/book/:book_uuid/benchmark?time_window_days=90&geography_type=national&geography_code=ALL&industry_level=naics4&industry_code=", "host": [ "{{baseUrl}}" ], "path": [ "v2", "analytics", "book", ":book_uuid", "benchmark" ], "query": [ { "description": "Rolling window, in days, measured back from the Book's creation date. Sets the period over which the Book's metrics and the peer distribution are computed.\n", "key": "time_window_days", "value": "90" }, { "description": "Geographic scope of the peer group. `msa` uses metropolitan statistical area codes.\n", "key": "geography_type", "value": "national" }, { "description": "Geographic identifier for the peer group: a state abbreviation (e.g., `NY`), an MSA code, or `ALL`. Must not be `ALL` when `geography_type` is `state` or `msa`.\n", "key": "geography_code", "value": "ALL" }, { "description": "<> granularity used to build the peer group.", "key": "industry_level", "value": "naics4" }, { "description": "NAICS code matching `industry_level`. Required as a 6-digit code when `industry_level` is `naics6`. Otherwise derived from the Book's NAICS data.\n", "key": "industry_code", "value": "" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Bad Request", "code": 400, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"message\": \"\",\n \"code\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-213c3a6c-4335-4676-a944-ec0e775b5d7a" }, { "id": "25354a4a-76d4-461c-bf35-e0987b351e74", "name": "Permission Error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/analytics/book/:book_uuid/benchmark?time_window_days=90&geography_type=national&geography_code=ALL&industry_level=naics4&industry_code=", "host": [ "{{baseUrl}}" ], "path": [ "v2", "analytics", "book", ":book_uuid", "benchmark" ], "query": [ { "description": "Rolling window, in days, measured back from the Book's creation date. Sets the period over which the Book's metrics and the peer distribution are computed.\n", "key": "time_window_days", "value": "90" }, { "description": "Geographic scope of the peer group. `msa` uses metropolitan statistical area codes.\n", "key": "geography_type", "value": "national" }, { "description": "Geographic identifier for the peer group: a state abbreviation (e.g., `NY`), an MSA code, or `ALL`. Must not be `ALL` when `geography_type` is `state` or `msa`.\n", "key": "geography_code", "value": "ALL" }, { "description": "<> granularity used to build the peer group.", "key": "industry_level", "value": "naics4" }, { "description": "NAICS code matching `industry_level`. Required as a 6-digit code when `industry_level` is `naics6`. Otherwise derived from the Book's NAICS data.\n", "key": "industry_code", "value": "" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Unauthorized", "code": 401, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-25354a4a-76d4-461c-bf35-e0987b351e74" }, { "id": "d2a071a8-1556-4c8e-8d3b-9e41d429038d", "name": "Internal server error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/analytics/book/:book_uuid/benchmark?time_window_days=90&geography_type=national&geography_code=ALL&industry_level=naics4&industry_code=", "host": [ "{{baseUrl}}" ], "path": [ "v2", "analytics", "book", ":book_uuid", "benchmark" ], "query": [ { "description": "Rolling window, in days, measured back from the Book's creation date. Sets the period over which the Book's metrics and the peer distribution are computed.\n", "key": "time_window_days", "value": "90" }, { "description": "Geographic scope of the peer group. `msa` uses metropolitan statistical area codes.\n", "key": "geography_type", "value": "national" }, { "description": "Geographic identifier for the peer group: a state abbreviation (e.g., `NY`), an MSA code, or `ALL`. Must not be `ALL` when `geography_type` is `state` or `msa`.\n", "key": "geography_code", "value": "ALL" }, { "description": "<> granularity used to build the peer group.", "key": "industry_level", "value": "naics4" }, { "description": "NAICS code matching `industry_level`. Required as a 6-digit code when `industry_level` is `naics6`. Otherwise derived from the Book's NAICS data.\n", "key": "industry_code", "value": "" } ], "variable": [ { "key": "book_uuid" } ] } }, "status": "Internal Server Error", "code": 500, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-d2a071a8-1556-4c8e-8d3b-9e41d429038d" } ], "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-517cea66-e08b-4531-8cd3-102ba89a8d58" } ], "id": "879b01c2-3ada-47c1-ba2b-f9764fcc836f", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-879b01c2-3ada-47c1-ba2b-f9764fcc836f" } ], "id": "f8b0c3a8-794f-4c22-b661-f7fdafb27894", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-f8b0c3a8-794f-4c22-b661-f7fdafb27894" } ], "id": "d2a4a7ca-8fc4-4528-b32d-7de51ac1426d", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-d2a4a7ca-8fc4-4528-b32d-7de51ac1426d" }, { "name": "jobs", "item": [ { "name": "{job_id}", "item": [ { "name": "Async job status", "id": "75fbe192-55fc-4e94-889c-05d805b1c130", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/v2/analytics/jobs/:job_id", "host": [ "{{baseUrl}}" ], "path": [ "v2", "analytics", "jobs", ":job_id" ], "variable": [ { "id": "a9b258fd-e5e7-4e6c-99a9-f88dba24d745", "key": "job_id", "value": "", "description": "(Required) The job ID returned in the `202` response when the async request was submitted.\n" } ] }, "description": "Retrieves the status and result of an analytics job created when any supported analytics endpoint is called with **`async=true`**. Poll this endpoint until the job reaches a terminal state (`DONE` or `FAILED`).\n\nThe job **`status`** moves through the following states: **`PENDING`** while the job is running, **`DONE`** when the result is ready, and **`FAILED`** if the job could not be completed. Poll every few seconds until a terminal state is reached. Large Books may take longer to process.\n\nWhen the status is **`DONE`**, the response includes a **`result_url`**, a temporary pre-signed download link to retrieve the analytics payload, which is identical in shape to the corresponding synchronous endpoint's response. The job and its **`result_url`** are valid for 24 hours from the time the job was created.\n" }, "response": [ { "id": "bc759758-31ba-4597-a950-5797f68b0ae7", "name": "The job is complete. Fetch the `result_url` to download the analytics payload. The URL expires 24 hours after the job was created.\n", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/analytics/jobs/:job_id", "host": [ "{{baseUrl}}" ], "path": [ "v2", "analytics", "jobs", ":job_id" ], "variable": [ { "key": "job_id" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"job_id\": \"\",\n \"status\": \"DONE\",\n \"result_url\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-bc759758-31ba-4597-a950-5797f68b0ae7" }, { "id": "d9fb142b-2832-44d7-b33f-dac630af522b", "name": "The job is still running. Keep polling until the status changes to `DONE` or `FAILED`.\n", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/analytics/jobs/:job_id", "host": [ "{{baseUrl}}" ], "path": [ "v2", "analytics", "jobs", ":job_id" ], "variable": [ { "key": "job_id" } ] } }, "status": "Accepted", "code": 202, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"job_id\": \"\",\n \"status\": \"PENDING\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-d9fb142b-2832-44d7-b33f-dac630af522b" }, { "id": "92224d37-edd8-4815-aae5-b3a3b627acba", "name": "The job ID is not recognized, does not belong to your organization, or has expired. Jobs expire 24 hours after creation.", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/analytics/jobs/:job_id", "host": [ "{{baseUrl}}" ], "path": [ "v2", "analytics", "jobs", ":job_id" ], "variable": [ { "key": "job_id" } ] } }, "status": "Not Found", "code": 404, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"job_id\": \"\",\n \"error\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-92224d37-edd8-4815-aae5-b3a3b627acba" }, { "id": "0cb13b9a-2b6c-48f3-8890-44a351bea7ef", "name": "The job failed. The `error` field explains why. For example, a book that exceeds 1,000,000 transactions is rejected with `422`.\n", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/analytics/jobs/:job_id", "host": [ "{{baseUrl}}" ], "path": [ "v2", "analytics", "jobs", ":job_id" ], "variable": [ { "key": "job_id" } ] } }, "status": "Unprocessable Entity (WebDAV) (RFC 4918)", "code": 422, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"job_id\": \"\",\n \"status\": \"FAILED\",\n \"error\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-0cb13b9a-2b6c-48f3-8890-44a351bea7ef" }, { "id": "c44a8412-7b1e-4614-8d79-f3c033871dba", "name": "Internal server error", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "description": "Added as a part of security scheme: oauth2", "key": "Authorization", "value": "" } ], "url": { "raw": "{{baseUrl}}/v2/analytics/jobs/:job_id", "host": [ "{{baseUrl}}" ], "path": [ "v2", "analytics", "jobs", ":job_id" ], "variable": [ { "key": "job_id" } ] } }, "status": "Internal Server Error", "code": 500, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"status\": \"\",\n \"message\": \"\"\n}", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-c44a8412-7b1e-4614-8d79-f3c033871dba" } ], "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-75fbe192-55fc-4e94-889c-05d805b1c130" } ], "id": "dc044593-d870-431b-90e7-9bdd10f8b74e", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-dc044593-d870-431b-90e7-9bdd10f8b74e" } ], "id": "377d4ed1-039a-48e5-856d-640e2ed625f3", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-377d4ed1-039a-48e5-856d-640e2ed625f3" } ], "id": "91790510-4557-4c44-a169-2a959d28cb98", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-91790510-4557-4c44-a169-2a959d28cb98" } ], "id": "e2c6b52e-bac2-4d56-8e6f-1c842f445f1f", "createdAt": "2026-07-28T02:24:57.000Z", "updatedAt": "2026-07-28T02:24:57.000Z", "uid": "35240-e2c6b52e-bac2-4d56-8e6f-1c842f445f1f" } ], "auth": { "type": "oauth2", "oauth2": [ { "key": "accessTokenUrl", "value": "https://auth.ocrolus.com/oauth/token", "type": "string" }, { "key": "grant_type", "value": "client_credentials", "type": "string" } ] }, "variable": [ { "key": "baseUrl", "value": "https://api.ocrolus.com" } ] }