Pagamentos
Cartão de débito no checkout hospedado
O checkout hospedado passa a aceitar cartão de débito, além de cartão de crédito à vista. A criação do pagamento não muda:mode: "hosted" com CARD
em methods.As leituras de pagamento com cartão (GET /v1/payments,
GET /v1/payments/{paymentId}, GET /v1/payments/txid/{txId} e
POST /v1/payments/{paymentId}/simulate) e a repetição de uma criação com o
mesmo externalId que devolve um pagamento com cartão existente trazem o
novo campo somente leitura methodData.cardFundingType:"credit": cartão de crédito, cobrado à vista."debit": cartão de débito.null: tipo não conhecido, inclusive em pagamentos mais antigos.
Breaking changeSandboxChargeback
Mudança incompatível: cartão só pelo checkout hospedado
A partir de 4 de outubro de 2026,POST /v1/payments não aceita mais
pagamentos com cartão. O motivo é segurança: o lojista nunca manuseia nem
armazena dados de cartão, que são digitados apenas no checkout hospedado da
YuvexPay.O que foi removido
- O objeto
cardda requisição, com todos os campos:number,expiryMonth,expiryYear,ccv,installments,remoteIp,holderInfo,deviceInfoereturnUrl. - O campo
methodData.challengeUrldas respostas deGET /v1/payments,GET /v1/payments/{paymentId},GET /v1/payments/txid/{txId},POST /v1/payments/{paymentId}/simulatee da repetição idempotente de uma criação. - Os códigos
CARD_HOLDER_INFO_REQUIRED,CARD_REMOTE_IP_REQUIREDeINSTALLMENTS_NOT_SUPPORTED, que não são mais retornados.
Novo erro
Uma requisição com o objetocard, com CARD em methods no modo headless
(mode omitido ou "headless") ou com qualquer um destes campos na raiz do
corpo: deviceInfo, remoteIp, holderInfo, authorizeOnly, creditCard,
creditCardHolderInfo, creditCardToken, installmentCount,
installmentValue ou totalValue, recebe 400:400 chega mesmo
sem uma chave de API válida, e os dados de cartão não são armazenados nem
registrados em log.Como migrar
Crie o pagamento commode: "hosted" e CARD em methods (["CARD"], ou
["PIX", "CARD"] para o pagador escolher), com amount de pelo menos
R$ 5,00, e redirecione o pagador para o checkoutUrl da resposta:completionUrl e returnUrl funcionam como em qualquer pagamento
hospedado. O resultado chega pelos webhooks PAYMENT_CONFIRMED,
PAYMENT_PAID e PAYMENT_CANCELLED, ou por GET /v1/payments/{paymentId}.
Os links de pagamento criados no painel usam o mesmo checkout, e não existe
outra forma de integrar cartão. Detalhes no
guia de pagamentos.O que continua funcionando
Os pagamentos com cartão já criados pela API continuam valendo:GET devolve
o methodData com o cartão mascarado, sem challengeUrl, e webhooks,
reembolsos e chargebacks seguem iguais.Repetir uma criação antiga com cartão usando a mesma X-Idempotency-Key
agora também recebe o 400, e não mais a resposta armazenada (201 ou
502). Recupere esse pagamento com GET /v1/payments/txid/{txId} ou pelo
externalId: uma criação com o mesmo externalId, mode: "hosted" e
methods: ["CARD"], sem campos de cartão e com uma chave nova, devolve o
pagamento existente. A repetição do 502 armazenado continua valendo para
boleto.Sandbox
- Cartão e boleto agora seguem a mesma tabela de centavos do PIX:
,01pago,,02continuaNEW,,03cancelado,,04expirado,,05e qualquer outro centavo pago. O resultado é gravado cerca de 5 segundos depois da criação, ou 5 segundos depois de o pagador escolher o método no checkout hospedado. Nada é cobrado e nenhum boleto real é registrado. - Os centavos vêm do
amountenviado, antes de qualquer taxa repassada ao pagador. Para PIX compassFeeToPayer, isso muda o resultado: antes valiam os centavos do total cobrado. - Os reembolsos no sandbox agora funcionam para PIX, cartão e boleto, inclusive
pelo
POST /v1/payments/{paymentId}/simulatecomREFUNDED. Antes eram recusados comREFUND_NOT_SUPPORTED. O resultado segue os centavos do valor do pagamento, não do valor do reembolso:,02falha comPSP_REFUND_FAILED. - Cartão de teste: qualquer número que passe na verificação de Luhn, como
4111 1111 1111 1111, sem desafio de 3D Secure. Boleto de teste: linha digitável e código de barras em formato válido, eGET /v1/payments/{paymentId}/boletodevolve um PDF de teste que avisa que não deve ser pago.
Chargeback com disputa vencida
Quando a disputa de um chargeback de cartão é vencida, o valor debitado pelo chargeback volta automaticamente para o seu saldo e a taxa de processamento continua retida. O pagamento sai deCHARGEBACK e volta ao status que tinha
antes (PAID, CONFIRMED, REFUNDED ou PARTIAL_REFUND), e o webhook
PAYMENT_PAID ou PAYMENT_CONFIRMED é enviado de novo para esse status. Um
pagamento que volta para REFUNDED ou PARTIAL_REFUND não envia webhook.
Você também recebe um aviso no painel. Detalhes no
guia de reembolsos.
