Agree.com Reports API

Read-only analytics for revenue, cashflow, and accounts receivable recovery. ## Overview Report endpoints mirror the in-app **Reports** dashboards (`/reports/revenue`, `/reports/cashflow`, `/reports/recovery`). All metrics are scoped to the authenticated API key's organization. Amounts use the `Money` object shape: `amount` is in the smallest currency unit (cents for USD) and `currency` is an ISO 4217 code (e.g. `"USD"`). ## Revenue | Endpoint | Description | |----------|-------------| | `GET /reports/revenue/stats` | ARR, MRR, growth, NRR, top-5 concentration | | `GET /reports/revenue/chart` | Monthly MRR/ARR history and forecast | | `GET /reports/revenue/customers` | Customers ranked by paid revenue | | `GET /reports/revenue/customers_by_mrr` | Customers ranked by subscription MRR | ## Cashflow | Endpoint | Description | |----------|-------------| | `GET /reports/cashflow/stats` | Cash collected MTD, outstanding total, DSO, fail rate | | `GET /reports/cashflow/chart` | Monthly cash collected history and forecast | | `GET /reports/cashflow/outstanding_invoices` | Outstanding invoice list | | `GET /reports/cashflow/forecast` | Expected cash in next 30/60/90 days | ## Recovery | Endpoint | Description | |----------|-------------| | `GET /reports/recovery/aging/chart` | Aging buckets by month | | `GET /reports/recovery/aging/invoices` | Invoices grouped by aging bucket | | `GET /reports/recovery/aging/trend` | Overdue totals and average days overdue | | `GET /reports/recovery/leakage/stats` | Counts/amounts by invoice stage | | `GET /reports/recovery/leakage/waterfall` | Stage waterfall for leakage analysis | | `GET /reports/recovery/leakage/stalled_invoices` | Stalled invoices | | `GET /reports/recovery/leakage/stage_durations` | Average days between stages |

Operations 15

GET /api/v1/reports/revenue/stats Revenue statistics #
GET /api/v1/reports/recovery/aging/trend Aging trend #
GET /api/v1/reports/revenue/chart Revenue chart data #
GET /api/v1/reports/recovery/leakage/stage_durations Stage duration statistics #
GET /api/v1/reports/recovery/leakage/stats Leakage statistics #
GET /api/v1/reports/recovery/leakage/waterfall Leakage waterfall #
GET /api/v1/reports/cashflow/chart Cashflow chart data #
GET /api/v1/reports/recovery/leakage/stalled_invoices Stalled invoices #
GET /api/v1/reports/cashflow/forecast Cash forecast #
GET /api/v1/reports/revenue/customers_by_mrr Customers by MRR #
GET /api/v1/reports/cashflow/outstanding_invoices Outstanding invoices #
GET /api/v1/reports/cashflow/stats Cashflow statistics #
GET /api/v1/reports/revenue/customers Customers by revenue #
GET /api/v1/reports/recovery/aging/chart Aging chart data #
GET /api/v1/reports/recovery/aging/invoices Invoices by aging bucket #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/agree-com-reports-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

agree-com-reports-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: '# Introduction


    Welcome to the Agree API!'
  title: Agree Reports API
  version: 1.0.0
servers:
- url: https://secure.agree.com
  variables: {}
security: []
tags:
- description: Read-only analytics for revenue, cashflow, and accounts receivable recovery.
  name: Reports
paths:
  /api/v1/reports/revenue/stats:
    get:
      callbacks: {}
      description: Returns ARR, MRR, MRR growth rate, net revenue retention (NRR), and top-5 customer concentration.
      operationId: AgreeWeb.API.V1.ReportController.revenue_stats
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportDataResponse'
          description: Revenue statistics
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Revenue statistics
      tags:
      - Reports
  /api/v1/reports/recovery/aging/trend:
    get:
      callbacks: {}
      description: Returns total overdue amount and average days overdue per month.
      operationId: AgreeWeb.API.V1.ReportController.recovery_aging_trend
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportListDataResponse'
          description: Aging trend
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Aging trend
      tags:
      - Reports
  /api/v1/reports/revenue/chart:
    get:
      callbacks: {}
      description: Returns historical and forecast MRR/ARR by month.
      operationId: AgreeWeb.API.V1.ReportController.revenue_chart
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportListDataResponse'
          description: Revenue chart
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Revenue chart data
      tags:
      - Reports
  /api/v1/reports/recovery/leakage/stage_durations:
    get:
      callbacks: {}
      description: Returns average days between invoice stages for current vs previous six-month periods.
      operationId: AgreeWeb.API.V1.ReportController.recovery_leakage_stage_durations
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportDataResponse'
          description: Stage durations
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Stage duration statistics
      tags:
      - Reports
  /api/v1/reports/recovery/leakage/stats:
    get:
      callbacks: {}
      description: Returns invoice counts and amounts by stage (drafted, outstanding, overdue, paid).
      operationId: AgreeWeb.API.V1.ReportController.recovery_leakage_stats
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportDataResponse'
          description: Leakage statistics
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Leakage statistics
      tags:
      - Reports
  /api/v1/reports/recovery/leakage/waterfall:
    get:
      callbacks: {}
      description: Returns waterfall stages for invoice progression (drafted → outstanding → overdue → paid).
      operationId: AgreeWeb.API.V1.ReportController.recovery_leakage_waterfall
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportListDataResponse'
          description: Leakage waterfall
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Leakage waterfall
      tags:
      - Reports
  /api/v1/reports/cashflow/chart:
    get:
      callbacks: {}
      description: Returns historical and forecast cash collected by month.
      operationId: AgreeWeb.API.V1.ReportController.cashflow_chart
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportListDataResponse'
          description: Cashflow chart
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Cashflow chart data
      tags:
      - Reports
  /api/v1/reports/recovery/leakage/stalled_invoices:
    get:
      callbacks: {}
      description: Lists invoices that have been stalled in a workflow stage.
      operationId: AgreeWeb.API.V1.ReportController.recovery_leakage_stalled_invoices
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportListDataResponse'
          description: Stalled invoices
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Stalled invoices
      tags:
      - Reports
  /api/v1/reports/cashflow/forecast:
    get:
      callbacks: {}
      description: Returns projected cash from outstanding invoices due in the next 30, 60, and 90 days.
      operationId: AgreeWeb.API.V1.ReportController.cashflow_forecast
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportDataResponse'
          description: Cash forecast
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Cash forecast
      tags:
      - Reports
  /api/v1/reports/revenue/customers_by_mrr:
    get:
      callbacks: {}
      description: Lists customers ranked by current monthly recurring revenue from active subscriptions.
      operationId: AgreeWeb.API.V1.ReportController.revenue_customers_by_mrr
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportListDataResponse'
          description: Customers by MRR
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Customers by MRR
      tags:
      - Reports
  /api/v1/reports/cashflow/outstanding_invoices:
    get:
      callbacks: {}
      description: Lists outstanding (sent or due) invoices with customer and aging details.
      operationId: AgreeWeb.API.V1.ReportController.cashflow_outstanding_invoices
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportListDataResponse'
          description: Outstanding invoices
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Outstanding invoices
      tags:
      - Reports
  /api/v1/reports/cashflow/stats:
    get:
      callbacks: {}
      description: 'Returns cash collected month-to-date, outstanding invoice total, days sales outstanding (DSO),

        and payment failure rate.'
      operationId: AgreeWeb.API.V1.ReportController.cashflow_stats
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportDataResponse'
          description: Cashflow statistics
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Cashflow statistics
      tags:
      - Reports
  /api/v1/reports/revenue/customers:
    get:
      callbacks: {}
      description: Lists customers ranked by total paid invoice revenue.
      operationId: AgreeWeb.API.V1.ReportController.revenue_customers
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportListDataResponse'
          description: Customers by revenue
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Customers by revenue
      tags:
      - Reports
  /api/v1/reports/recovery/aging/chart:
    get:
      callbacks: {}
      description: Returns overdue invoice amounts by aging bucket for the past six months.
      operationId: AgreeWeb.API.V1.ReportController.recovery_aging_chart
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportListDataResponse'
          description: Aging chart
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Aging chart data
      tags:
      - Reports
  /api/v1/reports/recovery/aging/invoices:
    get:
      callbacks: {}
      description: Lists outstanding invoices grouped by aging bucket (current, 1-30, 31-60, 61-90, 90+ days).
      operationId: AgreeWeb.API.V1.ReportController.recovery_aging_invoices
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportDataResponse'
          description: Invoices by aging
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
      security:
      - bearer: []
      summary: Invoices by aging bucket
      tags:
      - Reports
components:
  schemas:
    ReportListDataResponse:
      description: Report data payload containing a list
      properties:
        data:
          description: List of report records
          items:
            additionalProperties: true
            type: object
          type: array
      required:
      - data
      title: ReportListDataResponse
      type: object
    ReportDataResponse:
      description: Report data payload
      properties:
        data:
          additionalProperties: true
          description: Report-specific payload
          type: object
      required:
      - data
      title: ReportDataResponse
      type: object
    Unauthorized:
      description: Authentication required or invalid credentials
      example:
        error: Invalid or missing API key
      properties:
        error:
          description: Error message
          type: string
      title: Unauthorized
      type: object
  securitySchemes:
    bearer:
      description: API key authentication via Bearer token
      scheme: bearer
      type: http