Voltar ao Blog

API de taxas de câmbio da Wise: como obter as taxas da Wise e quando precisar de uma alternativa

V
Vlado Grigirov
September 04, 2026
Currency API Exchange Rates Wise API Comparison Fintech Developer Guide

Se você já tentou exibir a taxa de câmbio da Wise dentro do seu próprio produto, provavelmente descobriu que a API de taxas de câmbio da Wise não é bem o que você esperava. A Wise publica dados de taxa média de mercado realmente excelentes e os expõe por um endpoint REST — mas eles ficam atrás de um processo de aprovação de parceiros, vivem dentro de uma API de pagamentos em vez de uma API de dados de mercado, e a taxa retornada deliberadamente não é o preço que seu usuário vai pagar.

Este guia mostra exatamente o que a Wise expõe, como autenticar, o que cada endpoint realmente retorna e os cinco limites estruturais que decidem se a Wise é a fonte certa para o seu projeto. Também responde com honestidade à pergunta que a maioria está de fato fazendo: se você só precisa de taxas médias de mercado confiáveis em um aplicativo, a Wise é a ferramenta para isso?

O que a API de taxas de câmbio da Wise realmente é

A Wise é uma empresa de transferência de dinheiro. Sua API — com a marca Wise Platform — foi construída para movimentar dinheiro: criar cotações, registrar destinatários, financiar transferências, conciliar saldos, emitir cartões. As taxas de câmbio aparecem nessa API porque não se precifica uma transferência sem elas, não porque a Wise venda dados de mercado.

Esse enquadramento explica quase todas as surpresas que os desenvolvedores encontram. As taxas são um módulo pequeno dentro de uma plataforma de pagamentos e estão limitadas às rotas de moeda que a Wise de fato atende.

Três superfícies separadas, três caminhos de acesso diferentes

A maior fonte de confusão é que "a API de taxas da Wise" se refere a pelo menos três coisas distintas:

  1. GET /rates — o endpoint de taxas de câmbio. Retorna a taxa média de mercado da Wise para um par de moedas, atual ou histórica. É o que a maioria quer dizer.
  2. POST /quotes — o endpoint de cotações. Retorna uma transferência precificada: taxa, tarifa, prazo estimado de entrega e um carimbo de expiração da taxa.
  3. GET /comparisons — o endpoint de comparação. Retorna estimativas de preço e velocidade da Wise e de provedores e bancos concorrentes em uma rota.

Estão documentados na mesma referência, usam esquemas de autenticação diferentes e respondem a perguntas muito distintas. Escolher o endpoint errado é a causa habitual do "por que esta taxa é diferente da que vejo em wise.com?".

Como obter acesso aos dados de taxas da Wise

Não existe chave de API self-service. O acesso se divide em duas trilhas:

Parceiros de plataforma. Você faz o onboarding como parceiro Wise Platform e se autentica com OAuth 2.0 (client ID e client secret) para obter um token. A referência de /rates observa que o endpoint "só suporta autenticação Bearer para parceiros não afiliados", via User Token ou Personal Token.

Parceiros afiliados. Você entra no programa de afiliados da Wise e depois escreve para partnerwise@wise.com solicitando credenciais. A Wise analisa o pedido e, se aprovado, emite credenciais Basic auth que liberam exatamente dois endpoints: Exchange Rates List e Get Temporary Quote. Nada mais.

Aqui está a bifurcação. Se você está construindo um comparador, um widget para blog de viagens ou uma página de marketing fintech, a trilha de afiliados foi feita para você. Se está construindo uma funcionalidade de produto — preços multimoeda, faturamento, uma tela de conversão, um relatório interno — você está pedindo a um time de parcerias de pagamentos que o aprove para dados de mercado, algo que nenhum dos dois lados quer dessa relação.

Note também que a Wise fixa a versão da API no caminho da URL: produção é https://api.wise.com/2026Q3/rates, com sandbox em https://api.wise-sandbox.com/2026Q3/rates. A documentação legada de afiliados ainda referencia /v1/rates em api.transferwise.com. Versões embutidas em caminhos significam que sua integração envelhece silenciosamente a menos que alguém assuma a atualização.

Chamando o endpoint de taxas da Wise

Com o token em mãos, o endpoint é limpo e bem projetado. Quatro formatos de chamada são documentados:

# Latest rates for every supported currency
curl -X GET 'https://api.wise.com/2026Q3/rates' \
  -H 'Authorization: Bearer <YOUR_TOKEN>'

# Latest rate for a single pair
curl -X GET 'https://api.wise.com/2026Q3/rates?source=EUR&target=USD' \
  -H 'Authorization: Bearer <YOUR_TOKEN>'

# Rate at a specific historical moment
curl -X GET 'https://api.wise.com/2026Q3/rates?source=EUR&target=USD&time=2019-02-13T14:53:01' \
  -H 'Authorization: Bearer <YOUR_TOKEN>'

# A time series, grouped by day, hour or minute
curl -X GET 'https://api.wise.com/2026Q3/rates?source=EUR&target=USD&from=2019-02-13&to=2019-03-13&group=day' \
  -H 'Authorization: Bearer <YOUR_TOKEN>'

A resposta é um array, um objeto por intervalo:

[
  {
    "rate": 1.166,
    "source": "EUR",
    "target": "USD",
    "time": "2018-08-31T10:43:31+0000"
  }
]

Dois detalhes merecem destaque. Primeiro, group aceita day, hour ou minute — histórico em nível de minuto é incomumente generoso e realmente útil para backtesting. Segundo, a resposta é sempre um array, mesmo para um único par, então faça o parse adequadamente:

import requests

TOKEN = "<YOUR_TOKEN>"
BASE = "https://api.wise.com/2026Q3"

def wise_rate(source: str, target: str) -> float:
    r = requests.get(
        f"{BASE}/rates",
        params={"source": source, "target": target},
        headers={"Authorization": f"Bearer {TOKEN}"},
        timeout=10,
    )
    r.raise_for_status()
    payload = r.json()
    if not payload:
        raise LookupError(f"No rate returned for {source}/{target}")
    return payload[0]["rate"]  # array, even for one pair

print(wise_rate("EUR", "USD"))

Mais uma armadilha, bem documentada na prática: se você enviar time e from/to na mesma requisição, os parâmetros de intervalo prevalecem e time é ignorado. Isso causou um bug duradouro no node Wise do n8n que exigiu um patch upstream. Envie um ou outro, nunca ambos.

A taxa média de mercado não é o preço que seu usuário paga

O endpoint /rates da Wise retorna a taxa média de mercado (mid-market) — o ponto médio entre os preços de compra e venda no mercado interbancário. É a taxa "real" e é sobre ela que a Wise constrói seu marketing. Também é, por definição, uma taxa pela qual ninguém transaciona.

Se você precisa saber quanto uma transferência custará de fato, precisa de /quotes:

curl -X POST 'https://api.wise.com/2026Q3/quotes' \
  -H 'Authorization: Bearer <YOUR_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
    "sourceCurrency": "GBP",
    "targetCurrency": "USD",
    "sourceAmount": 100
  }'

A resposta da cotação traz os campos de que a lógica de precificação realmente precisa: rate, rateType (por exemplo FIXED), rateExpirationTime, um detalhamento de fee, feePercentage e um array paymentOptions com estimatedDelivery por método de entrada. Também retorna notices — o próprio exemplo documentado da Wise alerta que um cliente pode manter no máximo três transferências abertas com taxa garantida antes que as seguintes passem à taxa ao vivo.

A consequência prática: uma cotação é um objeto efêmero e com estado, vinculado a uma transferência, não uma consulta de taxa que você possa fazer em intervalos regulares. Se seu caso de uso é "mostrar o preço em USD de hoje numa página de preços", cotações são a primitiva errada e taxas a certa. Se é "dizer ao usuário exatamente quanto ele receberá", só as taxas vão superestimar. Confundir essa distinção é fonte comum dos descasamentos de arredondamento e conciliação descritos em nosso guia sobre arredondamento de moedas e casas decimais.

O que a API de comparação realmente retorna

O endpoint de comparação é a parte mais interessante e mais mal compreendida da plataforma. Ele retorna estimativas de preço e velocidade, provedor a provedor, para bancos e serviços de transferência em uma rota:

curl -X GET 'https://api.wise.com/2026Q3/comparisons?sourceCurrency=GBP&targetCurrency=EUR&sendAmount=10000&filter=POPULAR'

Antes de construir qualquer coisa em cima disso, leia com atenção a nota metodológica da própria Wise. A Wise afirma que coleta taxas e tarifas anunciadas em sites de terceiros, calcula a margem de cada provedor sobre a taxa média de mercado no momento da coleta e depois reaplica essa margem armazenada à taxa média atual para produzir o número que você recebe. A coleta roda aproximadamente uma vez por hora.

Em outras palavras, os preços de concorrentes desse endpoint são estimativas modeladas derivadas de coletas horárias, não cotações ao vivo. A Wise diz isso abertamente, o que é mérito dela — mas significa que o dado é inadequado para qualquer coisa em que você precisasse responder pelo número do concorrente. A Wise ainda restringe as estimativas a entrada e saída apenas por transferência bancária, e observa que muitos provedores precificam cartão e dinheiro de forma bem diferente.

Estruturalmente, a resposta é desnormalizada: um mesmo provedor pode retornar várias cotações para o mesmo par porque preço e velocidade variam por país de destino. Você recebe um array providers, cada um com seu array quotes, e reduzir isso a um número por provedor é tarefa sua, não da API.

Cinco limites a conhecer antes de construir sobre as taxas da Wise

  1. O acesso é uma relação comercial, não um cadastro. Aprovação como afiliado ou onboarding de plataforma antecede cada chamada. Não há painel onde você gere uma chave em trinta segundos.
  2. A cobertura segue as rotas de transferência. A Wise suporta as moedas com as quais consegue movimentar dinheiro. Um provedor de dados dedicado cobre as moedas que consegue precificar, um conjunto mais amplo — a Finexly cobre mais de 170 moedas, incluindo algumas sem corredor de transferência.
  3. Taxas são um módulo dentro de uma API de pagamentos. Ao redor há cotações, destinatários, KYC, cartões e webhooks. É uma integração grande e sensível em segurança para manter quando tudo o que você queria era um número.
  4. Sem cota publicada. A referência de /rates documenta uma resposta 429, mas não publica um limite de requisições, então você dimensiona capacidade contra um teto não declarado. Compare com um modelo explícito, com cabeçalhos em toda resposta.
  5. Duas moedas por chamada. /rates aceita um único source e target. Precificar uma página em oito moedas significa oito chamadas ou baixar a tabela inteira e filtrar no cliente.

Nenhum desses pontos é um defeito. É a cara de uma API de pagamentos quando usada como API de dados.

Quando a Wise é a escolha certa — e quando não é

Seu caso de usoMelhor opçãoPor quê
Comparador ou conteúdo de afiliado "bancos vs Wise"API Comparison da WiseÉ a única fonte desse dado, e a trilha de afiliados existe exatamente para isso
Enviar dinheiro de fato pela WiseQuotes + Transfers da WiseVocê precisa do objeto de cotação precificado e com expiração
Mostrar a taxa da marca Wise porque seus usuários pedem/rates da WiseA atribuição de marca é o objetivo inteiro
Preços multimoeda, checkout ou tela de conversãoAPI de moedas dedicadaVocê precisa de amplitude, chave imediata e contrato simples
Faturamento, cobrança e relatórios de receitaAPI de moedas dedicadaVocê precisa de série histórica estável e trilha de auditoria
Backtesting ou analyticsQualquer umaO histórico por minuto da Wise é forte; uma API de dados é mais fácil de obter
Se você se encaixa nas três primeiras linhas, use a Wise. É a ferramenta correta e este artigo não vai fingir o contrário. Se você se encaixa nas últimas, está pagando o custo de onboarding de parceiros por uma consulta, e uma API de taxas de câmbio feita para isso é o caminho mais curto. O mesmo raciocínio vale para usar os endpoints de FX de um processador de pagamentos como fonte de dados, algo que analisamos em API Stripe FX Quotes vs API de moedas dedicada.

Usando uma API de taxas de câmbio dedicada

Uma API de dados inverte o trade-off: sem reunião de onboarding, cobertura mais ampla, cota explícita e uma resposta que não contém nada além da taxa.

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.finexly.com/v1/rate?from=EUR&to=USD"
{ "pair": "EUR_USD", "rate": 1.0852 }

Precificar uma página em várias moedas é uma ida e volta em vez de uma chamada por par:

const apiKey = process.env.FINEXLY_API_KEY;

async function priceTable(base, quotes) {
  const q = quotes.map((c) => `${base}_${c}`).join(',');
  const res = await fetch(`https://api.finexly.com/v1/convert?q=${q}`, {
    headers: { Authorization: `Bearer ${apiKey}` },
  });
  if (!res.ok) throw new Error(`Finexly ${res.status}`);
  return res.json();
}

const rates = await priceTable('USD', ['EUR', 'GBP', 'JPY', 'CAD', 'AUD']);
// { "USD_EUR": { "rate": 0.9215 }, "USD_GBP": { "rate": 0.7892 }, ... }

E quando você quiser o valor convertido em vez do multiplicador, deixe a API fazer a aritmética para que o arredondamento aconteça em um só lugar:

import requests

def convert(amount, src, dst, api_key):
    r = requests.get(
        "https://api.finexly.com/v1/convert-amount",
        params={"from": src, "to": dst, "amount": amount},
        headers={"Authorization": f"Bearer {api_key}"},
        timeout=10,
    )
    r.raise_for_status()
    return r.json()["result"]

print(convert(100, "USD", "EUR", "YOUR_API_KEY"))

Toda resposta carrega X-RateLimit-Limit, X-RateLimit-Used e X-RateLimit-Units, então a cota é observável em vez de inferida. As taxas são atualizadas a cada minuto durante o horário de mercado. O plano gratuito oferece 1.000 requisições por mês a 10 requisições por minuto, com planos pagos a partir de US$ 6,99/mês por 3.500 requisições até 100.000 no plano Professional — o detalhamento completo está na página de preços.

Uma nota rápida sobre volume: 1.000 requisições por mês parece pouco até você usar cache. Um único job agendado que atualiza a tabela completa de taxas a cada quinze minutos consome cerca de 2.900 chamadas por mês; a cada sessenta minutos, cerca de 730. O cache transforma seu volume de chamadas em função do tempo e não do tráfego, e é isso que torna um plano pequeno viável em qualquer escala. Os padrões estão em cache e tratamento de erros para APIs de moedas.

Migrando do /rates da Wise

Se você está movendo uma integração existente, o mapeamento é quase um para um:

WiseEquivalenteObservação
GET /ratesGET /v1/currencies e depois /v1/rateO /rates sem parâmetros da Wise retorna tudo; busque a lista de moedas uma vez
GET /rates?source=X&target=YGET /v1/rate?from=X&to=YRetorna um objeto, não um array de um elemento
Vários pares, várias chamadasGET /v1/convert?q=X_Y,X_ZUma única requisição
amount * rate manualGET /v1/convert-amountArredondamento resolvido no servidor
Ponto histórico ?time=Endpoint históricoRequer plano pago; veja o guia de taxas históricas
Token Basic ou OAuthAuthorization: BearerChave pelo painel, sem etapa de aprovação
A única coisa que não migra é a marca Wise. Se sua proposta de valor é "mostramos a taxa da Wise", só a Wise pode fornecê-la. Se é "nossos preços estão corretos na sua moeda", qualquer fonte precisa de taxa média serve — e a questão da procedência vale a pena entender de qualquer forma, algo que destrinchamos em de onde as APIs de taxas de câmbio tiram seus dados.

Por fim: por favor, não faça scraping do wise.com. Vários anúncios de marketplace oferecem exatamente isso, e são frágeis, juridicamente nebulosos e quebram na primeira mudança de marcação da página. Se você precisa especificamente do número da Wise, siga a trilha de afiliados e obtenha-o da API do jeito certo. Se precisa de um número, use uma API construída para servi-lo. Nossa comparação de APIs de moedas gratuitas e o guia de alternativas ao Frankfurter cobrem as opções sem chave com mais profundidade.

Perguntas frequentes

A API de taxas de câmbio da Wise é gratuita? Não há um custo por requisição publicado para o endpoint de taxas, mas o acesso não é aberto. Você precisa ser parceiro Wise Platform aprovado ou parceiro afiliado aprovado, o que significa uma candidatura e uma análise em vez de um formulário de cadastro. Para a maioria dos projetos, o custo é tempo, não dinheiro.

Posso usar a API da Wise sem conta? Não. As duas trilhas documentadas exigem credenciais — tokens Bearer para parceiros de plataforma, client ID e secret em Basic auth para afiliados. O único endpoint cujo exemplo documentado omite o cabeçalho de autorização é /comparisons, e construir tráfego de produção sobre essa premissa seria imprudente.

A API da Wise retorna a mesma taxa mostrada em wise.com? /rates retorna a taxa média de mercado, que é o número de destaque anunciado pela Wise. O valor que o cliente de fato recebe vem de /quotes e inclui a tarifa da Wise. Se seus números não batem com o site, você quase certamente está comparando uma taxa média com uma cotação precificada.

Até onde vai o histórico de taxas da Wise? O endpoint aceita carimbos from/to arbitrários com agrupamento por day, hour ou minute; a Wise não publica uma data inicial fixa na referência, então teste o intervalo específico de que você precisa em vez de presumir cobertura.

Qual é a melhor alternativa à API de taxas de câmbio da Wise? Depende do que você está substituindo. Para comparação de preços de concorrentes não há alternativa — a API Comparison da Wise é única. Para taxas médias dentro de um produto, uma API dedicada de dados de moedas oferece cobertura mais ampla, chaves instantâneas e cota explícita. Compare as opções na nossa página de comparação de APIs.

Posso exibir legalmente a taxa da Wise aos meus usuários? Se você é afiliado ou parceiro de plataforma aprovado, sim, dentro dos termos desse acordo. Fazer scraping do site público para obter os mesmos números é outra história e não é algo sobre o qual recomendaríamos construir um negócio.


Pronto para pular o onboarding de parceiros e simplesmente obter taxas? Pegue sua chave gratuita da API Finexly — sem cartão de crédito. Comece com 1.000 requisições gratuitas por mês em mais de 170 moedas e faça upgrade só quando seu tráfego crescer. Você também pode testar as taxas no navegador com nosso conversor de moedas.

Vlado Grigirov

Senior Currency Markets Analyst & Financial Strategist

Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...

View full profile →

Compartilhar este artigo