Skip to main content
Metronome supports a shared set of Invoice endpoints that allow you to retrieve, regenerate, and manage invoices associated with both Plans and Contracts. While these endpoints are shared between Plans and Contracts, note that some input and response parameters differ slightly depending on the entity you are targeting. For example, Contract invoices may include commit, credit, or usage details, whereas Plan invoices are generally scoped to plan-level billing events.

Available Endpoints

EndpointDescription
/customers/{customer_id}/invoices/{invoice_id}Retrieves a specific invoice for a given customer.
/customers/{customer_id}/invoicesLists all invoices for a given customer.
/invoices/regenerateRegenerates a previously issued invoice.
/invoices/voidVoids an existing invoice.

Associated Invoice Parameters

When using these endpoints, the associated invoices will include these parameters:
FieldTypeDescription
plan_idstring (UUID)The unique identifier for the plan associated with this invoice.
plan_namestringThe name of the plan associated with the invoice.
plan_custom_fieldsobjectA map of custom fields defined on the associated plan at the time of invoice generation.
invoice_adjustmentsarrayA list of adjustments applied to the invoice, such as credits, discounts, or manual corrections.
sub_line_itemsarrayA list of sub-line items that provide detailed breakdown of invoice charges and components.

InvoiceAdjustment Schema

The invoice_adjustments field contains an array of adjustment objects with the following structure:
FieldTypeRequiredDescription
namestringYesThe name of the adjustment (e.g., “Monthly minimum ($1,000)”).
totalnumberYesThe total amount of the adjustment.
credit_typestringYesThe type of credit associated with the adjustment.
credit_grant_idstringNoThe ID of the credit grant associated with the adjustment.
credit_grant_custom_fieldsobjectNoCustom fields associated with the credit grant.

InvoiceSubLineItem Schema

The sub_line_items field contains an array of sub-line item objects with the following structure:
FieldTypeRequiredDescription
namestringYesThe name of the sub-line item.
pricenumberNoThe unit price for this charge, present only if the charge is not tiered and the quantity is nonzero.
quantitynumberYesThe quantity associated with the sub-line item.
subtotalnumberYesThe subtotal amount for this sub-line item.
charge_idstring (UUID)NoThe ID of the charge associated with this sub-line item.
credit_grant_idstring (UUID)NoThe ID of the credit grant associated with this sub-line item.
tier_periodobjectNoWhen the current tier started and ends (for tiered charges only).
tiersarrayNoArray of tier information for tiered pricing.
custom_fieldsobjectYesCustom fields associated with the charge.
start_datestringNoThe start date for the charge (for seats charges only).
end_datestringNoThe end date for the charge (for seats charges only).

Tier Period Object

When tier_period is present, it contains:
FieldTypeRequiredDescription
starting_atstringYesRFC 3339 timestamp when the tier started.
ending_beforestringNoRFC 3339 timestamp when the tier ends.

Tier Object

Each item in the tiers array contains:
FieldTypeRequiredDescription
starting_atnumberYesAt what metric amount this tier begins.
quantitynumberYesThe quantity for this tier.
pricenumberYesThe price for this tier.
subtotalnumberYesThe subtotal for this tier.
Check out the Contracts version of the documentation here →
I