Programador 6 min de leitura

Códigos de resposta e erro da API Verification of Payee, explicados

As equipas de integração raramente têm dificuldade em chamar um endpoint Verification of Payee — têm dificuldade em interpretar o que volta. Eis como ler cada código do esquema e, sobretudo, como distinguir um resultado de um erro.

Por Verification of Payee EU · com tecnologia RoxPay

Códigos de resposta e erro da API Verification of Payee, explicados

Em resumo

  • Os quatro códigos do esquema são MTCH (correspondência), CMTC (correspondência parcial), NMTC (sem correspondência) e NOAP (não aplicável).
  • NO_MATCH é um resultado válido, não um erro de transporte — ramifique sobre ele, não lance uma exceção.
  • Os erros reais (IBAN inválido, auth, limite de taxa) usam HTTP 4xx/5xx com um código legível por máquina.

O bug de integração mais comum com a Verification of Payee é tratar um NO_MATCH como um pedido falhado. Não é. Uma verificação bem-sucedida que diz «este nome não pertence a este IBAN» continua a ser uma resposta 200 com dados úteis. Confunda os dois e ou engole sinais de fraude ou mostra aos utilizadores erros alarmantes.

Os quatro códigos do esquema

Cada resposta Verification of Payee corresponde a um de quatro códigos padronizados do esquema SEPA. Ramifique sobre o código, não sobre texto livre:

  • MTCH — MATCH: o nome corresponde ao titular da conta. Prossiga.
  • CMTC — CLOSE_MATCH: quase certo (falta um nome do meio, nome comercial vs. denominação social). Mostre o nome verificado sugerido e peça ao pagador para confirmar.
  • NMTC — NO_MATCH: o nome não pertence ao IBAN. Avise claramente e bloqueie a aprovação automática.
  • NOAP — NOT_APPLICABLE: a verificação não pôde ser concluída (ex. banco respondente inacessível). Deixe o utilizador decidir com cautela extra.

Resultado vs erro

Se o estado HTTP for 200, tem um resultado de verificação — leia scheme_code. Se for 4xx/5xx, tem um erro — leia o código de erro. Nunca mapeie NO_MATCH no seu caminho de erro.

Tratar bem o CLOSE_MATCH

O CLOSE_MATCH é onde a boa UX se ganha ou se perde. A resposta pode transportar o nome verificado do titular; apresente-o como sugestão («Queria dizer…?») para que o pagador confirme ou corrija em vez de abandonar o pagamento. Tratar CMTC como uma falha total frustra os utilizadores legítimos.

Códigos de erro genuínos

Distintos dos resultados do esquema, os problemas ao nível do transporte devolvem erros HTTP padrão — por exemplo invalid_iban (400), unauthorized (401), rate_limited (429) e scheme_unavailable (503). Cada um transporta um request id para o suporte o poder rastrear. Passe um external id estável em cada chamada para que as repetições permaneçam idempotentes e os logs se reconciliem.

FAQ

Perguntas frequentes

Significa que o nome está quase certo — falta um nome do meio, ou há um nome comercial vs. um nome registado. A resposta pode incluir o nome verificado em suggested_name, para que peça ao pagador para confirmar em vez de recusar o pagamento.

NO_MATCH (NMTC) não é um erro — é um resultado 200 válido. Trate-o como uma paragem total na sua UI ou ciclo de pagamentos: avise o utilizador, bloqueie a aprovação automática e exija uma nova verificação antes do envio.

Os erros reais usam códigos de estado HTTP 4xx/5xx com um código de erro legível por máquina (ex. invalid_iban, unauthorized, rate_limited). Uma sem correspondência é uma resposta 200 cujo scheme_code é NMTC.

Integre a VoP no seu produto

Obtenha as suas credenciais e a referência API completa, com acesso sandbox para testar cada caminho de código.