Usage

Get Company Billing

What ONE of your customers is paying you: subscription, invoices, upcoming charge.

Read from the stripe_* tables that the per-org Stripe sync populates from the customer's OWN connected account, so this is revenue the caller receives - not what the caller owes graph8, which is GET /usage.

payment_method is null by design rather than by omission: card data is not synced, and the hosted portal is the only place it exists.

A company in another org is a 404, not a 403 - the app's own choice, so that the API cannot be used to test whether a company id exists somewhere else.

get/companies/{company_id}/billing

Request

  • Base URL: https://be.graph8.com/api/v1
  • URL: https://be.graph8.com/api/v1/companies/{company_id}/billing
  • Auth: HTTP bearer

Path parameters

company_idinteger required

Query parameters

invoice_limitinteger

Invoices to return, newest first. 50 is a hard ceiling in the app, applied whatever is sent - declared honestly here so an over-large value is a 422 rather than a silently smaller answer.

Headers

Authorizationstring nullable
X-Target-Org-Idstring nullable

Response

Successful Response

dataReportPayload required

An OPEN envelope around one report's answer.

The app wraps every one of these reports in {success, data, meta}, where meta carries the cache state, the window and - on the agency reports - failed_org_ids, the orgs that contributed NOTHING to the totals above. That field is the difference between "this client sent no email" and "we could not query this client", so it is forwarded rather than flattened away.

Open on purpose: data is dict | list in the app and its contents grow with the product. A closed model would turn every new metric into a silently dropped one.

Changes

No recorded changes to this operation across all 2 revisions of this API.