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/prorataBase URL Produção:
https://api.validapay.com.brBase URL Sandbox:
https://sandbox.validapay.com.brAuthorizations
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
| Name | Type | Required | Description |
|---|---|---|---|
| subscriptionId | string | Required | ID 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
oldobjectRequirednewobjectRequiredconst 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"
}
}