Movement table


The /reports/movement-table endpoint returns a detailed list of individual MRR movements (new, expansion, contraction, churn, reactivation) for a given period. Each movement includes customer details, amounts, and optional line-level breakdowns.

💡 Use case: Investigate specific MRR changes, audit movements, export detailed transaction data. Essential for understanding which customers drove revenue changes.

GET /reports/movement-table

Returns a list of individual movements with customer-level detail.

Authentication

Required

Include your API key in the Authorization header:

curl https://api.growpanel.io/reports/movement-table \
-H "Authorization: Bearer YOUR_API_KEY"

Query parameters

ParameterTypeDescription
dateoptionalstringDate range. Format: YYYYMMDD-YYYYMMDD or shortcuts like last-12-months. Defaults to last 365 days.
intervaloptionalstringAggregation interval: day, week, month, quarter, year. Defaults to month.
baseCurrencyoptionalstringTarget currency for conversion. Defaults to account base currency.
selected-dateoptionalstringFilter movements to a specific period start date (format: YYYY-MM-DD).
selected-typeoptionalstringFilter by movement type: new, expansion, contraction, churn, reactivation
breakdownoptionalstringGroup by dimension (e.g., plan, country).
breakdown-valueoptionalstringFilter to a specific breakdown value when using breakdown parameter.
committedoptionalstringSet to true to show committed/future movements instead of actual.
fix_fxoptionalbooleanUse fixed exchange rates from start date.
sortoptionalstringSort field (e.g., mrr_change, date, customer_name).
orderoptionalstringSort direction: asc or desc. Defaults to desc.
customeroptionalstringFilter by customer ID to show detailed line items for that customer.
regionoptionalstringFilter by region or country codes (space-separated).
currencyoptionalstringFilter by currency codes (space-separated).
planoptionalstringFilter by plan group IDs (space-separated).
industryoptionalstringFilter by industry (space-separated).
data_sourceoptionalstringFilter by data source ID (space-separated).

Response

200 OK

Returns a list of movements with customer details.

{
"result": {
"list": [
{
"date": "2025-01-15",
"currency": "usd",
"customer_id": "cus_123",
"customer_name": "Acme Corp",
"customer_email": "[email protected]",
"type": "expansion",
"description": "Pro Plan → Enterprise Plan",
"mrr_change": 5000,
"mrr_change_base_currency": 5000,
"customer_count_change": 0,
"quantity_change": 0
},
{
"date": "2025-01-20",
"currency": "eur",
"customer_id": "cus_456",
"customer_name": "Beta LLC",
"customer_email": "[email protected]",
"type": "new",
"description": "Pro Plan",
"mrr_change": 4900,
"mrr_change_base_currency": 5290,
"customer_count_change": 1,
"quantity_change": 1
}
]
}
}

Response fields

FieldTypeDescription
datestringDate of the movement (ISO format: YYYY-MM-DD)
currencystringOriginal currency of the movement
customer_idstringCustomer external ID from billing system
customer_namestringCustomer name
customer_emailstringCustomer email address
typestringMovement type: new, expansion, contraction, churn, reactivation
descriptionstringHuman-readable description of the change
mrr_changenumberMRR change in original currency (cents, negative for churn/contraction)
mrr_change_base_currencynumberMRR change converted to base currency (cents)
customer_count_changeintegerCustomer count change (-1 for churn, 1 for new, 0 for expansion/contraction)
quantity_changeintegerSeat/quantity change (for usage-based or per-seat plans)

Line-level detail

When filtering by customer parameter, an additional lines array is included with invoice-level detail:

{
"result": {
"list": [
{
"date": "2025-01-15",
"customer_id": "cus_123",
"type": "expansion",
"mrr_change": 5000,
"lines": [
{
"description": "Enterprise Plan",
"mrr": 10000,
"quantity": 1
},
{
"description": "Pro Plan (removed)",
"mrr": -5000,
"quantity": -1
}
]
}
]
}
}

Example requests

Get all movements for January 2025

curl "https://api.growpanel.io/reports/movement-table?date=20250101-20250131" \
-H "Authorization: Bearer YOUR_API_KEY"

Get only expansion movements

curl "https://api.growpanel.io/reports/movement-table?selected-type=expansion" \
-H "Authorization: Bearer YOUR_API_KEY"

Get movements for a specific period

curl "https://api.growpanel.io/reports/movement-table?selected-date=2025-01-01&interval=month" \
-H "Authorization: Bearer YOUR_API_KEY"

Get detailed lines for a customer

curl "https://api.growpanel.io/reports/movement-table?customer=cus_123" \
-H "Authorization: Bearer YOUR_API_KEY"

Sort by largest MRR changes

curl "https://api.growpanel.io/reports/movement-table?sort=mrr_change&order=desc" \
-H "Authorization: Bearer YOUR_API_KEY"

Notes

⚠️ Currency values: All monetary values are returned in cents/smallest currency unit. Divide by 100 for display in most currencies.

  • Movement types: Each movement represents a discrete change in customer MRR
  • Negative values: Churn and contraction have negative mrr_change values
  • Date alignment: Movements are timestamped to the interval start date
  • Customer filtering: Use customer parameter to drill into specific customer changes
  • Committed mode: Set committed=true to see future scheduled movements