Assinaturas

Calcular Pro Rata

Calcula o valor de pro rata para uma troca de plano sem efetuar cobrança.

Útil para exibir ao cliente o valor exato da mudança antes de confirmar o upgrade. O cálculo considera os dias restantes do ciclo atual.

Envie old com o preço/quantidade atuais e new com o preço/quantidade desejados.

Case de uso:

Como SaaS, quero mostrar na interface "Você pagará R$ 45,48 hoje pela diferença proporcional" antes do cliente confirmar o upgrade.

POST/v1/subscriptions/:subscriptionId/prorata
Base URL Produção:https://api.validapay.com.br
Base URL Sandbox:https://sandbox.validapay.com.br

Authorizations

bearer

Authorization

string · header · required

Cabeçalho de autenticação Bearer no formato Bearer {{token}} onde {{token}} é o seu token OAuth2.

Escopos requeridos

subscriptions/read

Path Parameters

NameTypeRequiredDescription
subscriptionIdstringRequiredID da assinatura (ex: sub_xxx) - required

Body

application/json

Content-Type:application/json
{
  "old": {
    "priceId": "price_xxx",
    "quantity": 1
  },
  "new": {
    "priceId": "price_yyy",
    "quantity": 1
  }
}

Schema

oldobjectRequired
newobjectRequired
const url = 'https://sandbox.validapay.com.br/v1/subscriptions/:subscriptionId/prorata';

const options = {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer {{token}}',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
  "old": {
    "priceId": "price_xxx",
    "quantity": 1
  },
  "new": {
    "priceId": "price_yyy",
    "quantity": 1
  }
})
};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));

Response Examples

200200
{
  "subscriptionId": "sub_xxx",
  "currentAmount": 99.9,
  "newAmount": 199.9,
  "prorataAmount": 45.48,
  "remainingDays": 15,
  "cycleDays": 31,
  "currentCredit": 48.34,
  "nextCycleChargeDate": "2024-02-15"
}
404404 old
{
    "error": {
        "message": "Preço antigo não encontrado",
        "code": "OLD_PRICE_NOT_FOUND",
        "details": null,
        "timestamp": "2026-07-14T21:39:36.322Z"
    }
}
404404 new
{
    "error": {
        "message": "Preço novo não encontrado",
        "code": "NEW_PRICE_NOT_FOUND",
        "details": null,
        "timestamp": "2026-07-14T21:39:36.322Z"
    }
}
404404 sub
{
    "error": {
        "message": "Assinatura não encontrada",
        "code": "SUBSCRIPTION_NOT_FOUND",
        "details": null,
        "timestamp": "2026-07-14T21:39:36.322Z"
    }
}