Skip to content

Get Company Billing

GET
/companies/{company_id}/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.

Authorizations

Parameters

Path Parameters

company_id
required
integer

Query Parameters

invoice_limit

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.

integer
default: 20 >= 1 <= 50

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.

Header Parameters

X-Target-Org-Id
Any of:
string

Responses

200

Successful Response

object
data
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.

object
key
additional properties
any
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
notes
Any of:
Array<string>
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer
total_available
Any of:
integer
total_is_lower_bound
Any of:
boolean

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string