---
title: "MRR bridge"
description: "How MRR moved over a range of days: opening MRR, the change by reason (new, expansion, reactivation, resume, contraction, pause, churn) with the largest movements behind each, and closing MRR. Built…"
canonical_url: "https://twominutebilling.com/help/developers/api-reference/analytics/mrr-bridge"
---
# MRR bridge

> How MRR moved over a range of days: opening MRR, the change by reason (new, expansion, reactivation, resume, contraction, pause, churn) with the largest movements behind each, and closing MRR. Built…

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

How MRR moved over a range of days: opening MRR, the change by reason (new, expansion, reactivation, resume, contraction, pause, churn) with the largest movements behind each, and closing MRR. Built from the MRR movements ledger, where the sum of the changes in a range equals the change in MRR across it.

## 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>
</tbody>
</table>

## Query parameters

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

<tbody>
  <tr>
    <td>
      <code>
        start
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      First day, YYYY-MM-DD in the business timezone. Default: 29 days before end.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        end
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      Last day, YYYY-MM-DD in the business timezone. Default: today.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        currency
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      ISO currency. Default: the business currency.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        top
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      Largest movements listed per reason. Default 5.
    </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 mrr_bridge. One of <code>
        mrr_bridge
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        business
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The business id.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        currency
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      ISO currency of every amount.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        start
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      First day of the range.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        end
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Last day of the range.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        from
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      The range start as an instant.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        to
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      The range end as an instant (exclusive).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        opening_mrr_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      MRR at the start of the range.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        change_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      The total change over the range.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        closing_mrr_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      MRR at the end of the range.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        unclassified_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Change under a reason not listed. Absent when none.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        reasons
      </code>
    </td>
    
    <td>
      <code>
        array of object
      </code>
    </td>
    
    <td>
      The change split by reason.
    </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>
      MRR bridge
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        400
      </code>
    </td>
    
    <td>
      Invalid range
    </td>
  </tr>
</tbody>
</table>
</template>

<template v-slot:request="">

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

</template>

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

```json [200 OK]
{
  "object": "mrr_bridge",
  "business": "biz_XXXXXXXXXXXX01",
  "currency": "USD",
  "start": "Start",
  "end": "End",
  "from": "2026-03-14T09:30:00Z",
  "to": "2026-04-14T09:30:00Z",
  "opening_mrr_minor": 2900,
  "change_minor": 2900,
  "closing_mrr_minor": 2900,
  "unclassified_minor": 2900,
  "reasons": [
    {
      "reason": "Requested by the customer.",
      "mrr_delta_minor": 2900,
      "movements": 1,
      "largest": [
        {
          "subscription": "sub_XXXXXXXXXXXX01",
          "customer": "cus_XXXXXXXXXXXX01",
          "customer_name": "Maya Castillo",
          "plan": {},
          "previous_plan": {},
          "previous_mrr_minor": 2900
        }
      ]
    }
  ]
}
```

```json [400 Bad Request]
{
  "error": {
    "type": "invalid_request_error",
    "message": "Invalid range"
  }
}
```

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


## Sitemap

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