Skip to content

Reach API (1.0.3)

API specification for accessing financial data and reporting for financing companies. By implementing this specification, your API will serve as the data source for ReachApp, enabling all ReachSpec features with customizable configurations.

Reach pulls data from your API in two ways: on-demand sync (when a user clicks the sync button in ReachApp, Reach immediately calls your API endpoints to fetch the latest data) and nightly sync (Reach automatically performs scheduled data synchronization during off-hours to keep data current without interfering with customer workflows).

For authentication, OAuth 2.0 is used both for user sign-in and for API requests. Reach sends OAuth 2.0 access tokens in the Authorization: Bearer <token> header with every API request. Your API is responsible for validating these tokens and deciding whether to authenticate the request. Reach does not enforce authentication requirements - that decision is entirely up to your implementation.

Download OpenAPI description
Languages
Servers
Mock server
https://developer.reachreporting.com/_mock/openapi
http://localhost:{port}
API Base URL
https://{baseUrl}

Authentication

Endpoints for OAuth 2.0 authentication and authorization flows. We follow the OAuth 2.0 specification (RFC 6749).

High-Level Authentication Flow:

  1. Get Authorization Code: Users are redirected to your authorization endpoint (/oauth2/authorize) where they authenticate and grant access.
  2. Exchange for Tokens: Reach exchanges the authorization code for an access token and refresh token at your token endpoint (/oauth2/token).
  3. Token Lifetime: Access tokens have a limited lifetime specified by the expires_in field (in seconds) returned in the token response.
  4. Refresh Tokens: When an access token expires, Reach uses the refresh token to obtain a new access token without requiring user re-authentication.
  5. API Requests: Reach sends the access token in the Authorization: Bearer <token> header with every API request.

Client Credentials: The client ID and client secret provided to Reach are expected to not expire (at least for now).

Operations

Company Information

Endpoints for retrieving basic company information and metadata.

This data helps Reach identify and configure the company within the platform. The fiscal month end is particularly important as it determines how Reach aligns reporting periods and calculates year-to-date figures.

Operations

Reference Data

Endpoints for accessing reference data such as chart of accounts, budgets, classes, and departments.

Reference data defines the structure and organization of financial information:

  • Chart of Accounts: The list of all accounts used for recording transactions (e.g., Cash, Accounts Receivable, Revenue, Rent Expense). This forms the foundation of all financial reporting.
  • Budgets: Named budget scenarios that contain planned/forecasted figures. Customers may have multiple budgets (e.g., "2025 Operating Budget", "Conservative Forecast").
  • Classes: Segments used to categorize transactions across the business (e.g., by product line, project, or region). Not all companies use classes.
  • Departments: Organizational units for tracking income and expenses by team or function (e.g., Sales, Marketing, Engineering). Not all companies use departments.

Reach uses this reference data to structure reports and allow customers to filter and slice their financial data.

Operations

Metrics

Endpoints for retrieving non-financial metrics and operational KPIs.

Non-financial metrics are quantitative measures that aren't derived from the general ledger but are useful for business analysis. Examples include:

  • Headcount or FTE count
  • Units sold or produced
  • Customer count or subscriber count
  • Square footage or other capacity metrics
  • Any custom KPIs tracked in your system

These metrics can be used alongside financial data in Reach dashboards to calculate ratios (e.g., revenue per employee) or provide operational context.

Operations

Financial Statements

Endpoints for accessing financial statements including profit and loss, balance sheet, and cash flow statements.

These endpoints return the core financial data that powers Reach's reporting, forecasting, and analysis features:

  • Profit and Loss (P&L): Shows revenues, expenses, and net income over a period. Values represent activity during each month.
  • Balance Sheet: Shows assets, liabilities, and equity at a point in time. Values represent ending balances for each month.
  • Cash Flow Statement: Shows cash movements categorized by operating, investing, and financing activities. Values represent cash changes during each month.

All endpoints support optional filtering by budget, class, and department to enable segment-level reporting.

Operations

Request

Retrieves the Profit and Loss statement showing revenues, expenses, and net income.

Security
OAuth2
Path
CompanyIdstringrequired
Query
StartDatestring(date)required

Start date in YYYY-MM-DD format (e.g., 2025-01-01)

Example: StartDate=2025-01-01
EndDatestring(date)required

End date in YYYY-MM-DD format (e.g., 2025-01-31)

Example: EndDate=2025-01-31
AccountingBasisstring(AccountingBasis)required

Accounting method: CASH or ACCRUAL

Enum"CASH""ACCRUAL"
BudgetIdstring

Optional budget identifier. When omitted, returns actuals.

ClassIdstring

Optional class identifier to filter by class.

DepartmentIdstring

Optional department identifier to filter by department.

curl -i -X GET \
  'https://developer.reachreporting.com/_mock/openapi/companies/{CompanyId}/profit-loss?StartDate=2025-01-01&EndDate=2025-01-31&AccountingBasis=CASH&BudgetId=string&ClassId=string&DepartmentId=string' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Successful operation

Bodyapplication/json
DataArray of objects
Example: [{"AccountId":"90dcbc1e-05f3-11ea-82c7-96c172b25530","Values":[{"Value":"125000.50"},{"Value":"132500.00"},{"Value":"118750.25"}]},{"AccountId":"a1b2c3d4-05f3-11ea-82c7-96c172b25531","Values":[{"Value":"45000.00"},{"Value":"47500.00"},{"Value":"42500.00"}]},{"AccountId":"e5f6g7h8-05f3-11ea-82c7-96c172b25532","Values":[{"Value":"-35000.00"},{"Value":"-38000.00"},{"Value":"-32000.00"}]},{"AccountId":"i9j0k1l2-05f3-11ea-82c7-96c172b25533","Values":[{"Value":"-25000.00"},{"Value":"-26000.00"},{"Value":"-24000.00"}]}]
Response
application/json
{ "Data": [ {}, {}, {}, {} ] }

Request

Retrieves the Cash Flow Statement data showing cash movements by activity type. The statement is presented using the indirect method in the application.

Security
OAuth2
Path
CompanyIdstringrequired
Query
StartDatestring(date)required

Start date in YYYY-MM-DD format (e.g., 2025-01-01)

Example: StartDate=2025-01-01
EndDatestring(date)required

End date in YYYY-MM-DD format (e.g., 2025-01-31)

Example: EndDate=2025-01-31
BudgetIdstring

Optional budget identifier. When omitted, returns actuals.

ClassIdstring

Optional class identifier to filter by class.

DepartmentIdstring

Optional department identifier to filter by department.

curl -i -X GET \
  'https://developer.reachreporting.com/_mock/openapi/companies/{CompanyId}/cash-flow-statement?StartDate=2025-01-01&EndDate=2025-01-31&BudgetId=string&ClassId=string&DepartmentId=string' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Successful operation

Bodyapplication/json
DataArray of objects
Example: [{"AccountId":"defaa768-34e9-11e3-827d-af4343366b37","Values":[{"Value":"85000.00"},{"Value":"92000.00"},{"Value":"78000.00"}]},{"AccountId":"m3n4o5p6-34e9-11e3-827d-af4343366b38","Values":[{"Value":"-15000.75"},{"Value":"-18000.50"},{"Value":"-12000.00"}]},{"AccountId":"q7r8s9t0-34e9-11e3-827d-af4343366b39","Values":[{"Value":"-50000.00"},{"Value":"-45000.00"},{"Value":"-55000.00"}]},{"AccountId":"u1v2w3x4-34e9-11e3-827d-af4343366b40","Values":[{"Value":"25000.00"},{"Value":"30000.00"},{"Value":"20000.00"}]},{"AccountId":"y5z6a7b8-34e9-11e3-827d-af4343366b41","Values":[{"Value":"-10000.00"},{"Value":"-8000.00"},{"Value":"-12000.00"}]}]
Response
application/json
{ "Data": [ {}, {}, {}, {}, {} ] }

Request

Retrieves the Balance Sheet showing assets, liabilities, and equity.

Security
OAuth2
Path
CompanyIdstringrequired
Query
StartDatestring(date)required

Start date in YYYY-MM-DD format (e.g., 2025-01-01)

Example: StartDate=2025-01-01
EndDatestring(date)required

End date in YYYY-MM-DD format (e.g., 2025-01-31)

Example: EndDate=2025-01-31
AccountingBasisstring(AccountingBasis)required

Accounting method: CASH or ACCRUAL

Enum"CASH""ACCRUAL"
BudgetIdstring

Optional budget identifier. When omitted, returns actuals.

ClassIdstring

Optional class identifier to filter by class.

DepartmentIdstring

Optional department identifier to filter by department.

curl -i -X GET \
  'https://developer.reachreporting.com/_mock/openapi/companies/{CompanyId}/balance-sheet?StartDate=2025-01-01&EndDate=2025-01-31&AccountingBasis=CASH&BudgetId=string&ClassId=string&DepartmentId=string' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Successful operation

Bodyapplication/json
DataArray of objects
Example: [{"AccountId":"4f455bf6-34fe-11e3-827d-af4343366b37","Values":[{"Value":"250000.00"},{"Value":"275000.00"},{"Value":"300000.00"}]},{"AccountId":"c9d0e1f2-34fe-11e3-827d-af4343366b38","Values":[{"Value":"125000.00"},{"Value":"130000.00"},{"Value":"120000.00"}]},{"AccountId":"g3h4i5j6-34fe-11e3-827d-af4343366b39","Values":[{"Value":"50000.00"},{"Value":"52000.00"},{"Value":"48000.00"}]},{"AccountId":"k7l8m9n0-34fe-11e3-827d-af4343366b40","Values":[{"Value":"75000.00"},{"Value":"78000.00"},{"Value":"72000.00"}]},{"AccountId":"o1p2q3r4-34fe-11e3-827d-af4343366b41","Values":[{"Value":"200000.00"},{"Value":"210000.00"},{"Value":"190000.00"}]},{"AccountId":"s5t6u7v8-34fe-11e3-827d-af4343366b42","Values":[{"Value":"150000.00"},{"Value":"155000.00"},{"Value":"145000.00"}]}]
Response
application/json
{ "Data": [ {}, {}, {}, {}, {}, {} ] }

Usage

Endpoints provided by Reach for partners to view usage information. Partners do not need to implement these endpoints.

Use these endpoints to monitor adoption and understand how your customers are using the integration.

Operations