List the team's monthly usage-fee invoices

get/v1/tenants/{tenant_id}/billing-profile/invoices
Requires an API key

Requires billing:read, or a signed-in member whose team role manages billing (owner, admin, billing). One invoice per team (company) and month with a line per project: the kWh of the projects' charging sessions that ended in the month (UTC), every settlement type, times the project's rate. hosted_invoice_url is Stripe's page to view or pay it. A month below Stripe's 50-cent minimum, or without a card on file, is carried to the next month. Newest first.

Path parameters

  • tenant_idintegerRequired

Returns · 200

  • dataarray of PlatformInvoiceRecordRequired
    Child attributes
    • idstringRequired
      pfi_...: one per team and month.
    • team_idstringRequired
    • periodstringRequired
      The month, YYYY-MM (UTC).
    • statusenumRequired
      pending: being sent to Stripe. open: finalized, the card is charged automatically. paid (a $0 invoice after a 100% discount is paid when finalized). payment_failed: a charge failed (the team is past due; pay at hosted_invoice_url or update the card). uncollectible / void: set in Stripe. carried: below Stripe's 50-cent minimum or no card on file; the amount moves to the next month. skipped: a waived or Ivora internal team. held: Ivora is reviewing an implausible meter reading. empty: no usage.
      One of pending, open, paid, payment_failed, uncollectible, void, carried, skipped, held, empty
    • reasonstring | null
      carried: below_minimum or no_payment_method. skipped: waived or internal. held: implausible_reading. pending/paid: fully_discounted for a $0 invoice.
    • kwhstringRequired
    • usage_minorintegerRequired
      The month's usage lines (and late sessions), in US cents, at the normal rate.
    • discount_percentinteger
      The team's discount when the month was computed.
      Default 0
    • discount_minorinteger
      round_half_up(usage_minor x discount_percent / 100): the invoice's 'Ivora discount N%' line.
      Default 0
    • carried_in_minorintegerRequired
      A balance carried from earlier months (carried_from), already net of their discount.
    • carried_fromstring | null
      The earlier carried months taken over, comma-separated (YYYY-MM).
    • carried_tostring | null
      The month that took over this carried amount; empty while it is still pending (a waived, internal or held month never takes it over).
    • amount_minorintegerRequired
      usage_minor - discount_minor + minimum_topup_minor + carried_in_minor.
    • currencystring
      Default "usd"
    • linesarray of InvoiceLineRecordRequired
      Child attributes
      • tenant_idintegerRequired
        The project.
      • kindenum
        usage: the project's sessions that ended in the month. late: sessions of an earlier, already invoiced month that reached the CSMS after it was invoiced.
        One of usage, late · Default "usage"
      • periodsarray of string | null
        late: the months those sessions ended in.
      • kwhstringRequired
        Energy of the project's completed charging sessions (that ended in the month, or late ones): the exact decimal sum of the core's kWh.
      • rate_cents_per_kwhstringRequired
      • rate_sourceenumRequired
        One of team, project
      • transactionsintegerRequired
      • amount_minorintegerRequired
        round_half_up(kwh x rate) in US cents.
      • descriptionstring | null
        The invoice line: 'Ivora CSMS, <month>: <kWh> kWh x <rate> cents/kWh (project ...)'.
    • minimum_topup_minorinteger
      The 'minimum monthly commitment' line raising the month to the team's minimum.
      Default 0
    • collection_methodenum
      charge_automatically: the card on file (self-serve). send_invoice: an enterprise invoice with net terms, due on due_date.
      One of charge_automatically, send_invoice · Default "charge_automatically"
    • due_datestring | null
      send_invoice: when payment is due.
    • overdueboolean
      An open send_invoice invoice past its due_date.
      Default false
    • days_overdueinteger
      Default 0
    • payment_processingboolean
      A bank debit is in flight (ACH settles in a few business days).
      Default false
    • po_numberstring | null
    • stripe_invoice_idstring | null
    • numberstring | null
    • hosted_invoice_urlstring | null
      Stripe's page to view, download or pay the invoice.
    • attempt_countintegerRequired
    • created_atstringRequired
    • updated_atstringRequired
    • finalized_atstring | null
    • paid_atstring | null
    • failed_atstring | null
GET /v1/tenants/{tenant_id}/billing-profile/invoices
curl --fail-with-body "https://api.ivoracharge.com/v1/tenants/1042/billing-profile/invoices" \
  -H "Authorization: Bearer $IVORA_API_KEY"
Response · 200
{
  "data": [
    {
      "id": "id_0123456789abcdef",
      "team_id": "team_0123456789abcdef",
      "period": "string",
      "status": "pending",
      "reason": "string",
      "kwh": "string",
      "usage_minor": 1250,
      "discount_percent": 0,
      "discount_minor": 0,
      "carried_in_minor": 1250,
      "carried_from": "string",
      "carried_to": "string",
      "amount_minor": 1250,
      "currency": "usd",
      "lines": [
        {
          "tenant_id": 1042,
          "kind": "usage",
          "periods": [
            null
          ],
          "kwh": "string",
          "rate_cents_per_kwh": "string",
          "rate_source": "team",
          "transactions": 1,
          "amount_minor": 1250,
          "description": "string"
        }
      ],
      "minimum_topup_minor": 0,
      "collection_method": "charge_automatically",
      "due_date": "string",
      "overdue": false,
      "days_overdue": 0,
      "payment_processing": false,
      "po_number": "string",
      "stripe_invoice_id": "stripe_invoice_0123456789abcdef",
      "number": "string",
      "hosted_invoice_url": "https://app.example.com/return",
      "attempt_count": 1,
      "created_at": "2026-09-30T17:00:00Z",
      "updated_at": "2026-09-30T17:00:00Z",
      "finalized_at": "2026-09-30T17:00:00Z",
      "paid_at": "2026-09-30T17:00:00Z",
      "failed_at": "2026-09-30T17:00:00Z"
    }
  ]
}
Try it is not available here yetRequests from this page are off until the production API at https://api.ivoracharge.com is public. Use the code samples from your application server; Ivora grants production access. Keys are created in Developer tools.