---
title: "Explain an invoice"
description: "Why the invoice is what it is, from its stored lines: the totals ladder with a check that it adds up, the facts behind each line (kind, period, price, discounts, tax or why it was not taxed), and…"
canonical_url: "https://twominutebilling.com/help/developers/api-reference/invoices/explain-an-invoice"
---
# Explain an invoice

> Why the invoice is what it is, from its stored lines: the totals ladder with a check that it adds up, the facts behind each line (kind, period, price, discounts, tax or why it was not taxed), and…

<api-operation method="GET" path="/v1/businesses/{biz}/invoices/{inv}/explanation">
<template v-slot:docs="">

Why the invoice is what it is, from its stored lines: the totals ladder with a check that it adds up, the facts behind each line (kind, period, price, discounts, tax or why it was not taxed), and what changed from the same subscription's previous invoice, grouped by price. Nothing is recomputed.

## Path parameters

<table>
<thead>
  <tr>
    <th>
      Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Required
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        biz
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      Business id (biz_…)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        inv
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      The invoice id (inv_…).
    </td>
  </tr>
</tbody>
</table>

## Response

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Always invoice_explanation. One of <code>
        invoice_explanation
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The invoice id.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        number
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The invoice number, once issued.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        status
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The invoice status.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        currency
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      ISO currency of every amount.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        period_start
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      Start of the billed period.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        period_end
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      End of the billed period.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        totals
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      The stored totals, in minor units, and whether they add up.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        lines
      </code>
    </td>
    
    <td>
      <code>
        array of object
      </code>
    </td>
    
    <td>
      Each line with the facts behind it.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        discounts
      </code>
    </td>
    
    <td>
      <code>
        array of object
      </code>
    </td>
    
    <td>
      Every discount on the invoice.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        tax
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      The tax decision recorded on the invoice.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        compared_to_previous
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      The change from the same subscription's previous invoice. Null when there is none.
    </td>
  </tr>
</tbody>
</table>

## Status codes

<table>
<thead>
  <tr>
    <th>
      Status
    </th>
    
    <th>
      Meaning
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        200
      </code>
    </td>
    
    <td>
      Invoice explanation
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        404
      </code>
    </td>
    
    <td>
      No such invoice
    </td>
  </tr>
</tbody>
</table>
</template>

<template v-slot:request="">

```bash [Request]
curl "$TMBILLING_URL/v1/businesses/biz_XXXXXXXXXXXX01/invoices/inv_XXXXXXXXXXXX01/explanation" \
  -H "Authorization: Bearer $TMBILLING_API_KEY"
```

</template>

<template v-slot:response="">
<code-group>

```json [200 OK]
{
  "object": "invoice_explanation",
  "invoice": "inv_XXXXXXXXXXXX01",
  "number": "INV-1001",
  "status": "active",
  "currency": "USD",
  "period_start": "2026-03-14T09:30:00Z",
  "period_end": "2026-04-14T09:30:00Z",
  "totals": {
    "subtotal_minor": 2900,
    "item_level_discount_minor": 0,
    "document_level_discount_minor": 0,
    "tax_minor": 0,
    "rounding_minor": 2900,
    "total_minor": 2900,
    "credits_applied_minor": 0,
    "amount_paid_minor": 2900,
    "withholding_minor": 0,
    "amount_due_minor": 0,
    "identity": "Identity",
    "holds": false
  },
  "lines": [
    {
      "id": "3f6c1b9e-8a2d-4c5e-9f10-2b7d4e6a8c01",
      "description": "Everything a growing team needs.",
      "kind": "Kind",
      "why": "Why",
      "price": "pro-monthly-usd",
      "quantity": 1
    }
  ],
  "discounts": [
    {
      "label": "Welcome 10% off",
      "source": "Source",
      "coupon_code": "welcome-10",
      "scope": "Scope",
      "amount_minor": 2900,
      "line_item_ids": [
        "si_XXXXXXXXXXXX01"
      ]
    }
  ],
  "tax": {
    "treatment": "Treatment",
    "place_of_supply_code": "welcome-10",
    "seller_state_code": "welcome-10",
    "origin": {},
    "customer_tax_id": {}
  },
  "compared_to_previous": {
    "previous_invoice": "Previous invoice",
    "previous_number": "Previous number",
    "previous_total_minor": 2900,
    "total_delta_minor": 2900,
    "discount_delta_minor": 0,
    "tax_delta_minor": 0,
    "line_changes": [
      {
        "kind": "Kind",
        "price": "pro-monthly-usd",
        "description": "Everything a growing team needs.",
        "change": "added",
        "before": {},
        "after": {}
      }
    ]
  }
}
```

```json [404 Not Found]
{
  "error": {
    "type": "invalid_request_error",
    "message": "No such invoice"
  }
}
```

</code-group>
</template>
</api-operation>


## Sitemap

See the full [sitemap](https://twominutebilling.com/sitemap.md) for all pages.
