BlendFi

Primeiros passos

Construa uma integração de PIX para USDT do sandbox até produção em cinco minutos.

Comece aqui

Construa uma integração PIX para USDT

Receba BRL via Pix dos seus usuários finais; liquide USDT em uma carteira que você controla. Este guia leva você de "acabei de receber uma chave de API" até "fiz uma chamada autenticada de verdade" em cerca de cinco minutos.

O que você vai fazer

Tutorial rápido

1. Configure o ambiente

Coloque sua chave de sandbox numa variável de shell para os exemplos a seguir ficarem prontos para copiar e colar.

export BLENDFI_KEY=sk_test_substitua_pela_sua_chave_real
export BLENDFI_BASE=https://api.sandbox.blendfi.com.br

Você sabe em qual ambiente está pelo prefixo da chave:

PrefixoAmbienteO que ela faz
sk_test_…SandboxQualquer coisa. Sem dinheiro real.
sk_live_…ProduçãoDinheiro real. Liberada só após revisão de compliance.

Uma chave de sandbox não consegue atingir produção por engano, e uma chave de produção não consegue atingir o sandbox — ambas são rejeitadas com 401 authentication_failed.

2. Autentique cada requisição

Toda chamada para /v1/* envia sua chave no cabeçalho Authorization como um Bearer token:

Authorization: Bearer sk_test_…

Três coisas para saber:

  1. A palavra Bearer é obrigatória.Authorization: sk_test_… retorna 401 authentication_required.
  2. A chave vai em toda requisição. Não tem login, não tem cookie de sessão, não tem refresh de token. A chave é a sessão.
  3. Capacidades são por chave. Cada chave tem uma lista de capacidades (por exemplo, users:create, transactions:create). Se a chave tentar um endpoint para o qual não tem permissão, vem 403 missing_capability. A maioria dos parceiros começa com uma chave de sandbox com permissão total; chaves de produção são mais restritas.

3. Faça sua primeira chamada

Crie um usuário de teste. Essa é a "primeira chamada" canônica porque a maioria dos outros endpoints precisa de um ID de usuário.

curl -X POST $BLENDFI_BASE/v1/users \
  -H "Authorization: Bearer $BLENDFI_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "content-type: application/json" \
  -d '{
    "external_id": "id-interno-do-seu-usuario-001",
    "name": "Ada Lovelace",
    "cpf": "52998224725"
  }'

Se tudo estiver ligado:

{
  "id": "01J…",
  "external_id": "id-interno-do-seu-usuario-001",
  "name": "Ada Lovelace",
  "kyc_status": "not_started",
  "created_at": "2026-04-29T13:00:00Z"
}

É isso. Você está autenticado.

Formato do CPF

Use 11 dígitos, sem pontos ou traços. O exemplo acima (52998224725) é um CPF de teste válido que você pode reusar no sandbox. CPFs reais no sandbox são criptografados igual em produção — nunca cole dados pessoais reais nos docs.

Para que serve Idempotency-Key

Versão curta: é uma string única (recomendamos um UUID) que torna a requisição segura para retentativas. Se sua conexão cair no meio da chamada e você tentar de novo com a mesma chave, você recebe a mesma resposta de volta em vez de criar um usuário duplicado. Todo POST e PATCH na BlendFi exige esse cabeçalho — veja o guia dedicado de Idempotência para o contrato completo.

Sandbox vs produção

Construa primeiro no sandbox

Sandbox é uma cópia funcional da BlendFi onde valem os mesmos endpoints, formatos de resposta e códigos de erro — só que os pagamentos Pix são simulados e as transferências de USDT ficam numa carteira de teste. Construa sua integração aqui primeiro; a gente revisa antes de emitir uma chave sk_live_….

Quando você estiver pronto, peça uma chave de produção. A gente revisa sua integração no sandbox de ponta a ponta (tratamento de idempotência, retentativas em erros, verificação de assinatura de webhooks) antes de emitir.

Quando algo dá errado

Toda resposta de erro tem o mesmo formato:

{
  "code": "authentication_required",
  "message": "Authorization header missing.",
  "request_id": "01KPR9F6MM8G147177J7ZQPJHG"
}
CampoO que fazer com ele
codeEstável, legível por máquina. Programe sua lógica em cima dele.
messageLegível por humanos. Não faça match em cima dele; a gente pode reescrever.
request_idCole esse ID quando pedir ajuda pra gente. Localiza sua requisição nos logs em segundos.

Os dois erros que você mais vai ver no começo:

CódigoPor quêComo resolver
401 authentication_requiredCabeçalho Authorization ausente ou sem Bearer Adicione o cabeçalho; preste atenção no espaço depois de Bearer
401 authentication_failedChave desconhecida, revogada ou colada com erro de digitaçãoCopie a chave de novo do e-mail de onboarding
403 missing_capabilityChave válida, mas sem permissão para esse endpointManda e-mail pra gente; ampliamos as capacidades da chave

O catálogo completo de erros está no guia de Erros.

O que ler em seguida

Você está autenticado. A partir daqui:

FAQ

Onde eu pego uma chave de sandbox? Manda e-mail pra gente. A gente envia em até um dia útil com um conjunto padrão de capacidades que você pode refinar depois.

Posso ter mais de uma chave? Pode. A gente pode emitir chaves com capacidades restritas (por exemplo, somente leitura, ou somente transações) para você compartimentar integrações. Pede no onboarding.

Como eu rotaciono uma chave? Manda e-mail pra gente; emitimos uma chave nova e revogamos a antiga depois que você migrar. Não tem self-service de rotação na v1.

Por que ainda não tenho uma chave sk_live_…? Chaves de produção são emitidas depois da gente revisar sua integração no sandbox e a documentação de compliance. Construa no sandbox primeiro; a gente avisa quando você estiver pronto.

Onde eu reporto um bug? Manda e-mail pra gente com o request_id da resposta. A gente acha sua requisição em segundos com isso.

Nesta página