Para conhecer os corredores de pagamento compatíveis, consulte Payout network.
Este tutorial mostra como usar os endpoints de instrumento financeiro do Identity Management v3 para:
- Criar um instrumento financeiro para uma identidade
- Listar os instrumentos financeiros de uma identidade
- Recuperar um instrumento financeiro por ID
- Atualizar os dados de um instrumento financeiro
- Desativar um instrumento financeiro
Ele pressupõe que você já leu Instrumentos financeiros para pagamentos e Identidades do pagamento.
No Identity Management v3, uma identidade tem um instrumento financeiro ativo. Adicionar um segundo instrumento à mesma identidade falha com 422 Unprocessable Entity (USR_120). Para trocar a conta de uma parte, desative o instrumento existente e depois adicione o substituto.
O suporte a vários instrumentos por identidade está previsto para uma versão futura. Para mais detalhes, consulte Um instrumento financeiro por identidade.
Para seguir estes exemplos, você precisa de:
- URL base da API do Payments Direct (por exemplo,
https://{base-url}) - Um token de acesso OAuth2 válido com os escopos:
participants:create– criar instrumentos financeirosparticipants:read– listar e obter instrumentos financeirosparticipants:update– atualizar e desativar instrumentos financeiros
- Um
identityIdexistente (criado pelos endpoints de identidades)
Em todos os exemplos, substitua:
{base-url}pela sua URL base de PII<access_token>por um token de acesso válido{identity-id}e{financial-instrument-id}por IDs reais do seu ambiente
Use POST /v3/identities/{identity-id}/financial-instruments para criar um instrumento financeiro para uma identidade existente.
Você precisa informar:
financialInstrumentType– o rail, comoUS_ACH,MX_SPEI,BR_PIXcurrency– código de moeda ISO 4217 (por exemplo,USD,MXN,BRL)- Exatamente um objeto específico do rail (por exemplo,
usAch,mxSpei,brPix) com os dados obrigatórios da conta - Metadados opcionais, como
label
curl -X POST "https://{base-url}/v3/identities/{identity-id}/financial-instruments" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"financialInstrumentType": "US_ACH",
"currency": "USD",
"label": "US bank account",
"usAch": {
"bankName": "Bank of Example",
"bankRoutingNumber": "266231608",
"accountNumber": "60480",
"accountType": "CHECKING"
}
}'{
"financialInstrumentId": "2f4ac57f-c5ba-4051-b51f-b3565778717b"
}Você usará este financialInstrumentId ao:
- Obter o instrumento por ID
- Atualizar ou desativar o instrumento
- Referenciá-lo nos fluxos de criação de pagamento
curl -X POST "https://{base-url}/v3/identities/{identity-id}/financial-instruments" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"financialInstrumentType": "MX_SPEI",
"currency": "MXN",
"label": "MXN SPEI account",
"mxSpei": {
"bankName": "Banco Ejemplo",
"clabe": "032180000118359719"
}
}'Agora a mesma identidade tem dois instrumentos financeiros (um US ACH e um MX SPEI).
curl -X POST "https://{base-url}/v3/identities/{identity-id}/financial-instruments" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"financialInstrumentType": "NG_BANK_PAYOUT",
"currency": "NGN",
"label": "NGN bank account",
"ngBankPayout": {
"bankName": "Guaranty Trust Bank PLC",
"bankCode": "RPL:NG:GTBINGLA:BNK",
"accountNumber": "0123456789",
"country": "NG"
}
}'O campo bankCode exige um Ripple Bank Code (RBC), não o código interno do próprio banco. Use a consulta de códigos bancários para localizar o RBC correto do banco de destino antes de criar o instrumento.
Se campos obrigatórios estiverem ausentes ou inválidos (por exemplo, o comprimento da CLABE ou o formato do código de roteamento), a API retorna 400 Bad Request com detalhes sobre os campos que falharam.
Se o identity-id não existir, a API retorna 404 Not Found.
Ao criar um instrumento financeiro, a identidade associada precisa ter todos os dados de PII exigidos para o financialInstrumentType especificado.
Se a identidade foi criada com validatePayoutRails:
- Os dados de PII da identidade já foram validados contra os payment rails especificados no momento da criação da identidade.
- Criar um instrumento financeiro para um rail listado em
validatePayoutRailsé bem-sucedido imediatamente (desde que a identidade tenha os dados de PII exigidos). - Criar um instrumento financeiro para um rail não listado em
validatePayoutRailsdispara a validação no momento da criação do instrumento. Se faltarem dados de PII obrigatórios, a requisição falha com 400 Bad Request.
Se a identidade foi criada sem validatePayoutRails:
- Os dados de PII da identidade são validados quando você cria o instrumento financeiro.
- Se faltarem campos obrigatórios para o
financialInstrumentTypeespecificado, a requisição falha com 400 Bad Request e detalhes sobre quais campos estão ausentes.
Exemplo: falha de validação por PII ausente
Se você tentar criar um instrumento financeiro US_ACH para uma identidade sem campos obrigatórios como identityDocuments, receberá:
{
"code": "VALIDATION_ERROR",
"title": "Identity validation failed",
"description": "The identity is missing required fields for the specified financial instrument type.",
"details": [
{
"field": "individual.identityDocuments",
"message": "At least one identity document (SSN or Tax ID) is required for US_ACH beneficiary identities"
}
]
}Para corrigir isso, atualize a identidade com os campos de PII ausentes usando PUT /v3/identities/{identity-id} e tente criar o instrumento financeiro novamente.
A criação de um instrumento financeiro também valida os tipos de documento da identidade contra o corredor do instrumento. Alguns corredores aceitam apenas um subconjunto do enum idType (pessoa física) ou registration.type (empresa), portanto uma requisição de instrumento pode falhar com 400 Bad Request mesmo quando todos os campos obrigatórios estão presentes. Para ver os valores aceitos por corredor e papel, consulte Tipos de documento aceitos por corredor.
Usar validatePayoutRails ao criar identidades ajuda a detectar problemas de PII com antecedência, antes de você tentar criar instrumentos financeiros. Para mais detalhes, consulte Validando identidades para payment rails específicos.
Use GET /v3/identities/{identity-id}/financial-instruments para listar os instrumentos financeiros de uma identidade.
Parâmetros de consulta:
version– versão opcional da identidade. Se omitido, a versão mais recente da identidade é usada.limit– número máximo de instrumentos a retornar (de 1 a 100, padrão 10).next-token– token de paginação de uma resposta anterior.
curl -X GET "https://{base-url}/v3/identities/{identity-id}/financial-instruments?limit=10" \
-H "Authorization: Bearer <access_token>"{
"data": [
{
"financialInstrumentId": "2f4ac57f-c5ba-4051-b51f-b3565778717b",
"financialInstrumentType": "US_ACH",
"currency": "USD",
"label": "US bank account",
"country": "US",
"createdAt": "2025-10-01T18:46:47.430Z",
"updatedAt": "2025-10-01T18:46:47.430Z"
}
]
}- Como uma identidade tem um instrumento financeiro ativo, o array
datacontém no máximo uma entrada. Ele fica vazio se o instrumento da identidade foi desativado e não substituído. - Apenas os metadados são retornados; os objetos específicos do rail (como
usAchoumxSpei) não são incluídos. - Os parâmetros
limitenext-tokensão aceitos por consistência com as demais operações de listagem, mas uma resposta de instrumento único não é paginada e não retornanextToken.
Se a identidade ou os instrumentos não forem encontrados, a API retorna 404 Not Found.
Use GET /v3/identities/{identity-id}/financial-instruments/{financial-instrument-id} para recuperar os dados completos de um instrumento financeiro específico, incluindo o objeto específico do rail.
curl -X GET "https://{base-url}/v3/identities/{identity-id}/financial-instruments/{financial-instrument-id}" \
-H "Authorization: Bearer <access_token>"{
"financialInstrument": {
"country": "US",
"financialInstrumentId": "7f2bac05-42a3-4b26-89fd-333396fdba70",
"createdAt": "2025-10-01T18:46:47.430Z",
"updatedAt": "2025-10-01T18:46:47.430Z",
"usAch": {
"bankName": "Bank of Example",
"bankRoutingNumber": "266231608",
"accountNumber": "60480",
"accountType": "CHECKING"
},
"currency": "USD",
"label": "US bank account",
"financialInstrumentType": "US_ACH"
}
}Se o identity-id ou o financial-instrument-id for inválido ou não existir, a API retorna 400 ou 404, respectivamente.
Use PUT /v3/identities/{identity-id}/financial-instruments/{financial-instrument-id} para atualizar os campos editáveis de um instrumento financeiro existente.
Você pode:
- Atualizar metadados, como o label.
- Atualizar dados específicos do rail, como o número da conta ou a chave Pix.
Você não pode alterar:
financialInstrumentTypecurrency
A requisição aceita atualizações parciais:
- Os campos que você inclui são sobrescritos.
- Os campos que você omite permanecem inalterados.
curl -X PUT "https://{base-url}/v3/identities/{identity-id}/financial-instruments/{financial-instrument-id}" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"label": "US bank account (primary)"
}'{
"financialInstrumentId": "7f2bac05-42a3-4b26-89fd-333396fdba70",
"financialInstrumentType": "US_ACH",
"currency": "USD",
"label": "US bank account (primary)",
"country": "US",
"createdAt": "2025-10-01T18:46:47.430Z",
"updatedAt": "2025-10-02T09:15:10.000Z"
}A resposta da atualização retorna a entrada do instrumento (metadados + timestamps), mas não inclui o objeto específico do rail (como usAch).
curl -X PUT "https://{base-url}/v3/identities/{identity-id}/financial-instruments/{financial-instrument-id}" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"usAch": {
"bankName": "Bank of Example",
"bankRoutingNumber": "266231608",
"accountNumber": "987654321",
"accountType": "CHECKING"
}
}'Se o payload da atualização for inválido (por exemplo, tipo de conta não compatível ou formato de roteamento inválido), a API retorna 400 Bad Request com os detalhes do erro.
Se a identidade ou o instrumento não for encontrado, a API retorna 404 Not Found.
Se houver um estado de recurso conflitante (por exemplo, atualização concorrente ou outra restrição interna), a API pode retornar 409 Conflict.
Use DELETE /v3/identities/{identity-id}/financial-instruments/{financial-instrument-id} para desativar um instrumento financeiro.
A desativação:
- É permanente para aquele instrumento.
- Impede que o instrumento seja usado em novos pagamentos.
- Mantém o histórico de uso e os dados para auditoria e conciliação.
Desativar uma identidade (pelos endpoints de identidades) também desativa o instrumento financeiro dela.
curl -X DELETE "https://{base-url}/v3/identities/{identity-id}/financial-instruments/{financial-instrument-id}" \
-H "Authorization: Bearer <access_token>"Os seguintes erros podem ocorrer:
- 400 Bad Request – ID de identidade ou de instrumento malformado.
- 404 Not Found – a identidade ou o instrumento não existe.
- 409 Conflict – o instrumento já está desativado ou não pode ser desativado por causa do estado atual.
- 500 Internal Server Error – erro inesperado no servidor.
Todos os endpoints de instrumento financeiro usam o schema padrão de resposta de erro:
- code – código de erro legível por máquina
- title – descrição curta
- description – explicação detalhada e sugestões de correção
Cenários comuns:
- 400 – erros de validação estrutural (campos obrigatórios ausentes, violações de padrão, valores de enum inválidos).
- 404 – identidade ou instrumento financeiro não encontrado.
- 409 – estado conflitante (por exemplo, atualização ou desativação não permitida).
- 500 – erro interno de processamento; se persistir, entre em contato com o suporte da Ripple.
Consulte a referência de tratamento de erros na documentação da API para ver a lista completa de códigos de erro.
- Para entender como os instrumentos se encaixam na configuração geral de payout, consulte Instrumentos financeiros para pagamentos.
- Para revisar o modelo de KYC / PII ao qual os instrumentos se vinculam, consulte Identidades do pagamento.
- Para ver como identidades e instrumentos financeiros são usados em conjunto no envio de dinheiro, continue com o tutorial Criar um pagamento.