Join usage-based billing early access (beta)
Usage-based billing is in early access (beta). Read how it works, then apply to join. We'll reach out if you meet the program requirements.
/metersReturns a paginated list of meters. Use the query parameters to page through results.
By default, Paddle returns meters that are active. Use the status query parameter to return meters that are archived.
meter.read permission.Query parameters
meta.pagination.next URL in responses for list operations.50Set how many entities are returned per page. Paddle returns the maximum number of results if a number greater than the maximum is requested. Check meta.pagination.per_page in the response to see how many were returned.
Default: 50; Maximum: 200.
id[DESC]Order returned entities by the specified field and direction ([ASC] or [DESC]). For example, ?order_by=id[ASC].
Valid fields for ordering: id.
activeactiveReturn entities where the status isactive. Returned entities can be used in Paddle and are returned when listing entities.archivedReturn entities where the status isarchived. Returned entities can't be used for billing and aren't returned when listing entities.
Header parameters
true to skip the count query on list operations. When set, meta.pagination.estimated_total returns -1 instead of an exact count.Response (200)
mtr_01kvqjfc6eb9kzk7s2wvz2aamqmtr_.^mtr_[a-z\d]{26}$ubu_01kw8ta2j8x5t7q4v9m1kd6phzubu_. Can't be changed after you create the meter.^ubu_[a-z\d]{26}$.*\S.*api_call. Paddle matches usage events to this meter using their action. More than one meter can have the same action, as long as each draws down a different usage balance unit. A usage event then draws down the customer's usage balance for each of them.^[a-z][a-z0-9_]*$sumsumAdds up thequantityof each usage event.
call or token. Shown alongside usage totals. Different from the usage balance unit's unit_name, which is the plural name of what customers hold a balance of."1" draws down one unit of the balance for each unit of usage, and "0.001" draws down one unit of the balance for every 1,000 units of usage. A decimal string greater than zero, with up to 9 decimal places.^([1-9][0-9]{0,34}(\.[0-9]{1,9})?|0\.(?:[1-9][0-9]{0,8}|0[1-9][0-9]{0,7}|00[1-9][0-9]{0,6}|000[1-9][0-9]{0,5}|0000[1-9][0-9]{0,4}|00000[1-9][0-9]{0,3}|000000[1-9][0-9]{0,2}|0000000[1-9][0-9]?|00000000[1-9]))$activeactiveEntity is active and can be used.archivedEntity is archived, so can't be used.
{"customer_reference_id":"abcd1234"}2024-10-12T07:20:50.52Z2024-10-13T07:20:50.52Zb15ec92e-8688-40d4-a04d-f44cbec93355after parameter that marks the starting point of the next page. Always returned, even if has_more is false.999Estimated number of entities for this response.
For datasets with 100,000 or fewer matches, returns the exact count. For datasets with more than 100,000 matches, returns 100001 to indicate that more than 100,000 entities match. Returns -1 when counting is skipped or couldn't be calculated.
Use has_more and next to page through all results rather than relying on estimated_total for an exact count.
{ "data": [ { "id": "mtr_01kvqjfc6eb9kzk7s2wvz2aamq", "usage_balance_unit_id": "ubu_01kw8ta2j8x5t7q4v9m1kd6phz", "name": "API calls", "action": "api_call", "description": "Calls to the public API", "aggregation": "sum", "unit_name": "call", "rate": "1", "custom_data": null, "status": "active", "created_at": "2026-09-01T09:10:00Z", "updated_at": "2026-09-01T09:10:00Z" }, { "id": "mtr_01kvqjg1p8t8vjx4h9wq0mfz3c", "usage_balance_unit_id": "ubu_01kw8tc7p4z8d5s2x6n3lf8rkb", "name": "AI tokens", "action": "ai_token", "description": null, "aggregation": "sum", "unit_name": "token", "rate": "1", "custom_data": null, "status": "active", "created_at": "2026-09-01T09:12:00Z", "updated_at": "2026-09-01T09:12:00Z" } ], "meta": { "request_id": "bb093d50-ddb5-401a-a5ba-034b187b396e", "pagination": { "per_page": 50, "next": "https://api.paddle.com/meters?after=mtr_01kvqjg1p8t8vjx4h9wq0mfz3c", "has_more": false, "estimated_total": 2 } }}