# MRRM

**Área:** Séries temporais

A série temporal MRRM (MRR by Method) é a própria série do MRR fatiada por método de pagamento (campo `paymentType`). Cada ponto é o estoque naquele período: **não** some o intervalo.

`GET /v1/analytics/mrr/by-payment-method/series`

**Base URL Produção:** `https://api.validapay.com.br`

> Disponível apenas em produção. Esta rota não existe no sandbox: use credenciais e a URL de produção.

## Simulação de MRRM

A página HTML traz o gráfico interativo com as séries MRR, Churn, MRRM, Inadimplência e Assinantes e os filtros Semanal, Mensal, Semestral, Anual e Personalizado.
Os dados vêm das rotas públicas `GET /v1/analytics/demo/...` em `https://api.validapay.com.br`, sem token.
Assinantes usa `activeSubscriptions` de `GET /v1/analytics/demo/mrr`.


## MRR por método de pagamento

O card do painel lê o estoque num ponto em `GET /v1/analytics/mrr/by-payment-method`. Não usa `startDate` nem `endDate`.

| Filtro | Consulta |
|---|---|
| Semanal | `granularity=day` e `asOfDate` no início da janela de 1 a 4 semanas. |
| Mensal | `granularity=day` e `asOfDate` no fim do mês, limitado a hoje no mês corrente. |
| Personalizado | `granularity=day` e `asOfDate` no dia escolhido. |
| Semestral e Anual | `granularity=month` e `month` no mês corrente. |

`totalMrr` é a soma de `items[].mrr`. Métodos ausentes entram com zero. A largura da barra é `mrr / totalMrr`.

A página HTML simula a consulta em `GET /v1/analytics/demo/mrr/by-payment-method`, sem token. A série empilhada continua em `GET /v1/analytics/demo/mrr/by-payment-method/series`.

**Scopes necessários:** `subscriptions/read`

Valores monetários vêm como string decimal em reais (ex.: `"12345.67"`).

**Identidade por period:** `totalMrr` = soma de `methods[].mrr` = `mrr` do mesmo `period` em `/mrr`.

Case de uso:

_Como integrador, quero ver quanto do MRR vem de Pix, boleto e cartão ao longo do tempo._

### Query parameters

| Campo | Obrigatório | Descrição |
|---|---|---|
| `granularity` | não | month (default) ou day |
| `startDate` | não | Início diário YYYY-MM-DD |
| `endDate` | não | Fim diário YYYY-MM-DD |
| `startMonth` | não | Início mensal YYYY-MM |
| `endMonth` | não | Fim mensal YYYY-MM |

### Resposta 200: 200

```json
{
  "accountId": "460851686",
  "granularity": "day",
  "startDate": "2026-08-01",
  "endDate": "2026-08-16",
  "items": [
    {
      "period": "2026-08-14",
      "totalMrr": "41568.55",
      "methods": [
        {
          "paymentType": "BOLETO",
          "mrr": "37516.18",
          "subscriptionCount": 178,
          "customerCount": 178
        },
        {
          "paymentType": "CREDIT_CARD",
          "mrr": "2990.37",
          "subscriptionCount": 42,
          "customerCount": 40
        },
        {
          "paymentType": "PIX",
          "mrr": "1062.00",
          "subscriptionCount": 15,
          "customerCount": 15
        }
      ]
    }
  ]
}
```


### Resposta 400: 400 Intervalo de datas inválido

```json
{
  "error": {
    "message": "startDate e endDate devem ser informados juntos",
    "code": "INVALID_DATE_RANGE",
    "details": null,
    "timestamp": "2026-10-10T18:00:00.000Z"
  }
}
```


---

Página: https://docs.validapay.com.br/referencia/get-mrrm  
Contrato OpenAPI: https://docs.validapay.com.br/openapi.json