O cancelamento de apólices ocorre em 2 modalidades, a depender da situação: agendado e imediato. Esse processo é iniciado ao fazer uma chamada na API GraphQL para a mutation CancelPolicy
.
Para criar um cancelamento agendado o parceiro deve enviar uma data no atributo scheduledTo
. Alguns detalhes sobre esse atributo:
09/11/2023
será processado no dia 10/11/2023
.Exemplo de payload para cancelamento agendado:
mutation {
cancelPolicy(
input: {
attributes: {
policyNumber: "987654321"
product: AUTO
reason: "cancellation"
integrationId: CANCELAMENTO_SEGURADO_GCS
scheduledTo: "2023-11-15"
bankAccount: {
bank: { code: "104", digit: "0", name: "Caixa" }
agency: { number: "5555", digit: "1" }
account: { number: "74321", digit: "5", operation: "001" }
}
}
}
) {
success
policyCancellation {
amountToRefund
errors {
attribute
messages {
code
description
}
}
message
protocolNumber
refundMethod
scheduledTo
status
}
}
}
Resposta da API
{
"data": {
"cancelPolicy": {
"success": true,
"policyCancellation": {
"status": "scheduled",
"scheduledTo": "2023-11-16",
"protocolNumber": "202311161642E0022977",
"message": "O Cancelamento da apólice 987654321 foi agendado para o dia 2023-11-15. Na data agendada, o cancelamento será efetivado caso não seja aberto um sinistro até lá.",
"amountToRefund": "789.95",
"refundMethod": "PaymentMethod::PartnerInvoice",
"errors": null
}
}
}
}
Para criar um cancelamento imediato o parceiro deve solicitar o cancelamento sem enviar uma data no payload.
Exemplo de payload para cancelamento imediato, sem scheduledTo
nos atributos:
mutation {
cancelPolicy(
input: {
attributes: {
policyNumber: "987654321"
product: AUTO
reason: "cancellation"
integrationId: CANCELAMENTO_SEGURADO_GCS
bankAccount: {
bank: { code: "104", digit: "0", name: "Caixa" }
agency: { number: "5555", digit: "1" }
account: { number: "74321", digit: "5", operation: "001" }
}
}
}
) {
success
policyCancellation {
amountToRefund
errors {
attribute
messages {
code
description
}
}
message
protocolNumber
refundMethod
scheduledTo
status
}
}
}
Resposta da API:
{
"data": {
"cancelPolicy": {
"success": true,
"policyCancellation": {
"status": "pending",
"scheduledTo": null,
"protocolNumber": "202311091631E1181322",
"message": "Beleza! Foi concluída a solicitação de cancelamento da apólice. Em alguns minutos o cliente receberá um email com a carta de cancelamento.",
"amountToRefund": "932.17",
"refundMethod": "PaymentMethod::DebitAccount",
"errors": null
}
}
}
}
Baseado em algumas condições, o cancelamento pode ou não ter devolução de valores. Por esse motivo, é necessário receber os dados bancários na chave bankAccount
, os quais serão usados para estorno. Os dados exigidos estão definidos no BankAccountInput
.
Obs: parceiros que utilizam checkout externo devem cadastrar previamente na Youse uma conta para devolução de valores no cancelamento. Por esse motivo, nesses casos não é necessário enviar dados bancários no payload de cancelamento, já que a conta estará cadastrada no sistema.
Exemplo de payload enviando dados bancários:
mutation {
cancelPolicy(
input: {
attributes: {
policyNumber: "987654321"
product: AUTO
reason: "cancellation"
integrationId: CANCELAMENTO_SEGURADO_GCS
bankAccount: {
bank: { code: "104", digit: "0", name: "Caixa" }
agency: { number: "5820", digit: "1" }
account: { number: "74346", digit: "5", operation: "001" }
}
}
}
) {
success
policyCancellation {
amountToRefund
errors {
attribute
messages {
code
description
}
}
message
protocolNumber
refundMethod
scheduledTo
status
}
}
}
Exemplo de payload para checkout externo, sem os dados bancários (omitindo bankAccount
):
mutation {
cancelPolicy(
input: {
attributes: {
policyNumber: "987654321"
product: AUTO
reason: "cancellation"
integrationId: CANCELAMENTO_SEGURADO_GCS
}
}
) {
success
policyCancellation {
amountToRefund
errors {
attribute
messages {
code
description
}
}
message
protocolNumber
refundMethod
scheduledTo
status
}
}
}
A API permite receber os motivos de cancelamento listados no Enum CancellationReasonEnum
.
Obs: o motivo de cancelamento por inadimplência (nonpayment
) só será aceito para parceiros que usam checkout externo.
Vigência Apólice | Parcelamento | Tipo de Chekout | Agendável? | Data de cancel. | Gera estorno? | Exige dados bancários |
---|---|---|---|---|---|---|
Anual | 1x | externo | sim | usa data recebida | sim | não |
Anual | 1x | interno | não | imediato | sim | sim |
Anual | 4x | interno/externo | não | imediato | sim | sim |
Anual | 10x | interno/externo | não | imediato | sim | sim |
Bianual | 12x | interno/externo | sim | 1 dia antes da próx. parcela | não | sim |
Abaixo alguns exemplos de retorno da API nos casos em que o cancelamento pode ser recusado.
{
"data": {
"cancelPolicy": {
"success": false,
"policyCancellation": {
"status": null,
"scheduledTo": null,
"protocolNumber": null,
"message": null,
"amountToRefund": null,
"refundMethod": null,
"errors": [
{
"attribute": "base",
"messages": [
{
"code": "bank_account",
"description": "{:account_number=>[\"não é válido\"], :account_digit=>[\"não é válido\", \"é muito longo (máximo: 1 caracter)\"], :agency_number=>[\"não é válido\", \"é muito longo (máximo: 5 caracteres)\"], :agency_digit=>[\"não é válido\", \"é muito longo (máximo: 1 caracter)\"]}"
}
]
}
]
}
}
}
}
active
ou pending
){
"data": {
"cancelPolicy": {
"success": false,
"policyCancellation": {
"status": null,
"scheduledTo": null,
"protocolNumber": null,
"message": null,
"amountToRefund": null,
"refundMethod": null,
"errors": [
{
"attribute": "base",
"messages": [
{
"code": "Cancellation Request",
"description": "Invalid policy status"
}
]
}
]
}
}
}
}
{
"data": {
"cancelPolicy": {
"success": false,
"policyCancellation": {
"status": null,
"scheduledTo": null,
"protocolNumber": null,
"message": null,
"amountToRefund": null,
"refundMethod": null,
"errors": [
{
"attribute": "base",
"messages": [
{
"code": "Cancellation Request",
"description": "Claim in progress"
}
]
}
]
}
}
}
}
scheduled
ou pending
){
"data": {
"cancelPolicy": {
"success": false,
"policyCancellation": {
"status": null,
"scheduledTo": null,
"protocolNumber": null,
"message": null,
"amountToRefund": null,
"refundMethod": null,
"errors": [
{
"attribute": "base",
"messages": [
{
"code": "Cancellation Request",
"description": "Ongoing cancellation with status: scheduled"
}
]
}
]
}
}
}
}
{
"data": {
"cancelPolicy": {
"success": false,
"policyCancellation": {
"status": null,
"scheduledTo": null,
"protocolNumber": null,
"message": null,
"amountToRefund": null,
"refundMethod": null,
"errors": [
{
"attribute": "base",
"messages": [
{
"code": "Cancellation Request",
"description": "Cancellation already approved"
}
]
}
]
}
}
}
}