Retrieves OAuth 2.0 discovery document with authorization server configuration.
- Get User Information
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.
Authentication
Endpoints for OAuth 2.0 authentication and authorization flows. We follow the OAuth 2.0 specification (RFC 6749).
High-Level Authentication Flow:
- Get Authorization Code: Users are redirected to your authorization endpoint (
/oauth2/authorize) where they authenticate and grant access. - Exchange for Tokens: Reach exchanges the authorization code for an access token and refresh token at your token endpoint (
/oauth2/token). - Token Lifetime: Access tokens have a limited lifetime specified by the
expires_infield (in seconds) returned in the token response. - Refresh Tokens: When an access token expires, Reach uses the refresh token to obtain a new access token without requiring user re-authentication.
- 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).
- Mock serverhttps://developer.reachreporting.com/_mock/openapi/auth/oauth-discovery
- http://localhost:3000/auth/oauth-discovery
- API Base URLhttps://example.com/auth/oauth-discovery
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://developer.reachreporting.com/_mock/openapi/auth/oauth-discoverySuccessful operation
The URL of the authorization endpoint
The URL of the token endpoint
The OAuth 2.0 grant types supported by the authorization server
The response types supported by the authorization server
The OAuth 2.0 scopes supported by the authorization server
{ "issuer": "https://reachreporting.com", "authorization_endpoint": "https://reachreporting.com/oauth2/authorize", "token_endpoint": "https://reachreporting.com/oauth2/token", "grant_types_supported": [ "authorization_code", "refresh_token" ], "response_types_supported": [ "code" ], "scopes_supported": [ "openid", "profile", "email", "phone", "read:company" ], "token_endpoint_auth_methods_supported": [ "client_secret_post" ] }
The authorization code received from the authorization endpoint (required when grant_type is authorization_code)
The same redirect URI used in the authorization request (required when grant_type is authorization_code)
- Mock serverhttps://developer.reachreporting.com/_mock/openapi/oauth2/token
- http://localhost:3000/oauth2/token
- API Base URLhttps://example.com/oauth2/token
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://developer.reachreporting.com/_mock/openapi/oauth2/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d grant_type=authorization_code \
-d code=string \
-d redirect_uri=http://example.com \
-d client_id=string \
-d client_secret=string \
-d refresh_token=string{ "access_token": "string", "token_type": "Bearer", "expires_in": 0, "scope": "string", "refresh_token": "string" }
- Mock serverhttps://developer.reachreporting.com/_mock/openapi/oauth2/user-info
- http://localhost:3000/oauth2/user-info
- API Base URLhttps://example.com/oauth2/user-info
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://developer.reachreporting.com/_mock/openapi/oauth2/user-info{ "Id": "string", "Email": "string", "FirstName": "string", "LastName": "string", "CompanyDetails": [ { … } ] }
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.
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.
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.
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.