---
title: "GET /reports/revenue"
method: GET
path: "/reports/revenue"
tags: ["Reports"]
---

# GET /reports/revenue

`GET /reports/revenue`

## Request

- Base URL: `https://api.railz.ai`
- URL: `https://api.railz.ai/reports/revenue`
- Auth: HTTP bearer

API to retrieve formatted revenue report

## Query parameters

- `businessName` string, required
- `serviceName` 'freshbooks' | 'quickbooks' | 'quickbooksDesktop' | 'xero' | 'oracleNetsuite' | 'sageBusinessCloud' | 'sageIntacct' | 'dynamicsBusinessCentral' | 'zohoBooks' | 'byod', required
- `startDate` string, required
- `endDate` string, required
- `reportFrequency` 'month' | 'quarter' | 'year', required
- `accountingMethod` 'cash' | 'accrual'

## Response `200`

Successfully returned revenue report

- object
  - `meta` object, required
    - `reportId` string[], required
    - `serviceName` 'freshbooks' | 'quickbooks' | 'quickbooksDesktop' | 'xero' | 'oracleNetsuite' | 'sageBusinessCloud' | 'sageIntacct' | 'dynamicsBusinessCentral' | 'dynamics365Finance' | 'wave' | 'myob' | 'zohoBooks' | 'byod', required
    - `businessName` string, required
    - `endDate` string, required: if report frequency is monthly, end date is maximum of 12 months from start date, if quaterly, its a maximum of 3 years from start date, if yearly, its maximum of 12 years from start date
    - `startDate` string, required
    - `reportFrequency` 'month' | 'quarter' | 'year', required
    - `currency` string[], required
  - `data` object, required
    - `subSections` object[], required: For each subsection, get its end date values and return the top 3 and the remaining sub section values should be summed up and indicated in the last object where name = 'Other'
      - `name` string, required: Sub section with the largest amount
      - `amount` number, required: Total of all values in the expenses section in incomeStatement results
    - `totalAmount` number, required: Total of all values in the expenses section in incomeStatement results as at end date
    - `percentageChange` number: Percentage change between previous period and current end date period

## Other responses

- `202`: Data in pending state
- `204`: No data available
- `400`: Bad Request Error - Thrown if fields sent via query does not follow specifications
- `401`: Unauthorized - Not logged in or log in expired
- `403`: Forbidden - Not enough permission
- `500`: Server Error

## Changes

- **2026-08-10** `5cdfae3fa1fa`: 3 breaking, 13 warning, 2 info
  - removed the enum value `myob` from the `query` request parameter `serviceName`
  - removed the enum value `sandbox` from the `query` request parameter `serviceName`
  - removed the enum value `wave` from the `query` request parameter `serviceName`
  - added the new `byod` enum value to the `meta/serviceName` response property for the response status `200`
  - …14 more

[Operation history](https://skmtc.dev/railz/apis/fis-accounting-data-as-a-service-api/changes/reports/revenue/get.md)

---

[API](https://skmtc.dev/railz/apis/fis-accounting-data-as-a-service-api.md) - [All operations](https://skmtc.dev/railz/apis/fis-accounting-data-as-a-service-api/llms.txt) - [OpenAPI document](https://skmtc.dev/railz/apis/fis-accounting-data-as-a-service-api/revisions/1383b9a47ac9?raw)
