Pular para o conteúdo principal

Criar pagamento PayOUT

O PayOUT permite que um merchant envie pagamentos a beneficiários por meio da Orkestral. A plataforma valida a solicitação, encaminha o pagamento ao Provedor de Serviços de Pagamento (PSP) informado e acompanha a transação até seu estado final.

Antes de começar

Você precisa:

  • ter um cadastro ativo na plataforma Orkestral;
  • cadastrar e configurar um PSP compatível com PayOUT;
  • obter um token OAuth/JWT;
  • conhecer o UUID do merchant (merchantId);
  • cadastrar uma URL HTTPS pública para receber notificações;
  • validar os dados bancários e a identificação do beneficiário.

Ambientes

AmbienteURL base
Homologação (QAS)https://api-qas.orkestralpay.com.br

Solicite ao time Orkestral a URL de produção e as credenciais correspondentes. Não reutilize tokens, credenciais de PSP ou dados de beneficiários entre ambientes.

Autenticação

Envie o token e o endereço IP de origem nos headers:

Authorization: Bearer <access_token>
Content-Type: application/json
IP: <endereço_ip_de_origem>

Tokens e credenciais são dados sensíveis. Mantenha-os apenas em serviços de backend e nunca os exponha no frontend, em repositórios ou em logs.

Endpoint

POST /transaction/payout/{merchantId}

O campo psp seleciona o provedor. Diferentemente do PayIN, a seleção não é feita por um fluxo de pagamento.

Campos da requisição

CampoTipoObrigatórioDescrição
transaction_idUUIDSimIdentificador único definido pelo merchant.
amountinteiroSimValor positivo na menor unidade da moeda. Ex.: 100 = 1,00.
currencystringSimCódigo da moeda em letras maiúsculas.
namestringSimNome do beneficiário.
last_namestringSimSobrenome do beneficiário.
emailstringCondicionalE-mail do beneficiário, exigido por alguns PSPs.
birth_datestringCondicionalData de nascimento no formato AAAA-MM-DD.
documentstringSimNúmero do documento do beneficiário.
document_typestringSimTipo de documento aceito pelo país e pelo PSP.
bank_namestringCondicionalNome do banco.
bank_codestringCondicionalCódigo do banco.
agency_codeinteiroCondicionalCódigo da agência.
agency_digitinteiroCondicionalDígito da agência.
account_codestringCondicionalNúmero da conta.
account_digitstringCondicionalDígito da conta.
account_typestringCondicionalTipo de conta aceito pelo PSP.
pspstringSimKushki, Payvalida, WePayments ou PayU.
pix_keystringCondicionalChave PIX. Quando informada, o pagamento é processado como PIX.

Os campos condicionais variam conforme o PSP, o país e o método. Confirme o catálogo de bancos habilitado para seu contrato antes de enviar o pagamento.

Transferência bancária

Para criar uma transferência, omita pix_key e envie os dados bancários exigidos pelo PSP:

curl --request POST \
--url "https://api-qas.orkestralpay.com.br/transaction/payout/<merchantId>" \
--header "Authorization: Bearer <access_token>" \
--header "Content-Type: application/json" \
--header "IP: 192.0.2.10" \
--data '{
"transaction_id": "123e4567-e89b-12d3-a456-426614174000",
"amount": 10000,
"currency": "COP",
"name": "María",
"last_name": "García",
"email": "maria.garcia@example.com",
"birth_date": "1990-01-01",
"document": "123456789",
"document_type": "CC",
"bank_name": "BANCOLOMBIA",
"bank_code": "000007",
"agency_code": 1234,
"agency_digit": 5,
"account_code": "987654321",
"account_digit": "0",
"account_type": "CA",
"psp": "Kushki"
}'

Substitua identificadores, dados do beneficiário, banco, IP e credenciais pelos valores do seu ambiente.

PIX

O PIX está disponível para PayOUT com WePayments. Informe uma chave válida em pix_key; os campos bancários podem ser omitidos:

{
"transaction_id": "123e4567-e89b-12d3-a456-426614174001",
"amount": 10000,
"currency": "BRL",
"name": "João",
"last_name": "Silva",
"email": "joao.silva@example.com",
"document": "52998224725",
"document_type": "CPF",
"psp": "WePayments",
"pix_key": "joao.silva@example.com"
}
cuidado

Não envie uma chave PIX de produção durante testes. Use somente beneficiários e chaves disponibilizados para o ambiente de homologação.

Regras por PSP

PSPPaíses e moedas da referênciaDocumentos principaisMétodo e regras principais
KushkiCO/COP, CL/CLP ou UF, EC/USD, PE/PEN ou USD, MX/MXNCC, NIT, CE, TI, PP, RUC, CURP, RFC, RUT, DNI, PAS, CITransferência; exige banco, conta e tipo de conta compatíveis com o país.
PayvalidaCO/COP, GT/GTQ, PE/PENCO: CC, CE, PS, TI; GT: DPI; PE: DNI, CETransferência; email, banco, número e tipo de conta são necessários.
WePaymentsBR/BRLCPF, CNPJPIX ou transferência; o documento deve ser válido. Transferências exigem os dados bancários completos.
PayUCO/COPTipos aceitos pelo contrato PayUTransferência; exige birth_date, bank_code, account_code e account_type.

Tipos de conta

PSPValores utilizados
KushkiCC, CA, CB, TD, NC, CV, DE, CM, conforme o país
PayvalidaColômbia e Peru: Ahorro, Corriente; Guatemala: Ahorro, Monetaria
WePaymentsUse o valor habilitado no contrato, como CHECKING ou SAVINGS; confirme o catálogo com o time Orkestral
PayUUse o tipo de conta aceito pela configuração PayU do merchant

Para Kushki no Peru, contas do banco 002 usam 13 dígitos para CC e 14 para CA; contas de outros bancos usam 20 dígitos. Para PayU, bank_code deve ser um código colombiano habilitado. Solicite ao time Orkestral o catálogo vigente quando um banco não estiver disponível no ambiente.

Como preencher e testar os dados bancários

O valor de bank_code não segue o mesmo formato em todos os PSPs. Envie-o como string para preservar zeros à esquerda.

Kushki

A Orkestral encaminha bank_code à Kushki como BankId. O identificador varia por país; portanto, não reutilize um código de outro país apenas porque os dígitos são semelhantes.

Na Colômbia, a referência do PSP utiliza seis dígitos. Alguns códigos úteis para homologação são:

bank_codeInstituição
000001Banco de Bogotá
000002Banco Popular
000007Bancolombia
000013BBVA Colombia
000051Davivienda
000052Banco AV Villas
000507Nequi

No Peru, o BankId também determina o tamanho de account_code:

BankIdaccount_typeTamanho de account_code
002CC13 dígitos
002CA14 dígitos
diferente de 002Qualquer tipo aceito20 dígitos
aviso

O BankId peruano 002 não é o código colombiano 000002 (Banco Popular). País, moeda, documento, banco, tipo e tamanho da conta precisam pertencer ao mesmo cenário de teste.

Payvalida

Para Payvalida, bank_code recebe o nome da instituição conforme o catálogo do país, e não um código numérico da Kushki. Use a grafia exata retornada para o merchant. A referência lista:

  • Peru: BBVA CONTINENTAL, INTERBANK, BCP e SCOTIABANK PERU;
  • Guatemala: BAM, BANCO AZTECA, BANCO DE AMERICA CENTRAL, BANCO DE ANTIGUA, BANCO DE CREDITO, BANCO DE DESARROLLO RURAL, BANCO DE GUATEMALA, BANCO DE LOS TRABAJADORES, BANCO FICOHSA, BANCO GYT CONTINENTAL, BANCO INDUSTRIAL, BANCO INMOBILIARIO, BANCO INTERNACIONAL, BANCO INV, BANCO PROMERICA DE GUATEMALA, BANCO PROMERICA, CITIBANK SUCURSAL GUATEMALA, CREDITO HIPOTECARIO NACIONAL e VIVIBANCO;
  • Colômbia: use o nome exato habilitado no catálogo do merchant, por exemplo BANCOLOMBIA, BANCO DE BOGOTA, DAVIVIENDA, NEQUI ou BBVA.

Combine o banco com o tipo de conta do país: Ahorro ou Corriente para Colômbia e Peru; Ahorro ou Monetaria para Guatemala.

:::tip Roteiro mínimo de homologação

  1. Confirme o país, a moeda e o PSP configurados para o merchant.
  2. Obtenha o bank_code no catálogo desse mesmo ambiente e mantenha o valor como string.
  3. Selecione um document_type e um account_type aceitos no país.
  4. Para Kushki no Peru, ajuste account_code de acordo com o BankId antes de enviar a requisição.
  5. Use um novo transaction_id em cada cenário e acompanhe o resultado até o status final.

:::

Glossário

O significado de uma sigla depende do campo em que ela é enviada. Por exemplo, CC significa documento de identidade em document_type, mas conta corrente em account_type.

Tipos de documento

SiglaSignificado
CCDocumento de identidade
NITNúmero de identificação tributária da Colômbia
CECédula de estrangeiro da Colômbia ou do Peru
TICartão de identidade da Colômbia
PPPassaporte
RUCRegistro tributário do Equador ou do Peru
CURPCódigo de Registro Único da População do México
RFCRegistro Federal de Contribuintes do México
RUTRegistro Único Tributário do Chile
DNIDocumento Nacional de Identidade do Peru
PASPassaporte do Peru ou do Equador
CICédula de identidade do Equador
PSPassaporte, conforme a nomenclatura da Payvalida na Colômbia
DPIDocumento Pessoal de Identificação da Guatemala
CPFCadastro de Pessoa Física do Brasil
CNPJCadastro Nacional da Pessoa Jurídica do Brasil

Tipos de conta Kushki

SiglaSignificado
CCConta corrente na Colômbia, no Chile e Peru
CAConta poupança na Colômbia, no Chile e Peru
CBConta CLABE, somente no México
TDCartão de débito, somente no México
NCNúmero de celular, somente no México
CVConta vista no Chile
DEDepósito eletrônico na Colômbia
CMConta mestra no Peru
informação

As combinações disponíveis dependem do contrato e das credenciais cadastradas para o merchant. Uma moeda listada não garante que ela esteja habilitada para todas as contas.

Resposta de sucesso

Uma solicitação aceita retorna 200 OK. Os campos opcionais variam conforme o PSP:

{
"id": "123e4567-e89b-12d3-a456-426614174000",
"merchant_id": "11111111-1111-1111-1111-111111111111",
"amount": 10000,
"currency": "COP",
"payment_method": "TRANSFER",
"status": "WAITING_PSP_PAYMENT",
"custom_code": "123e4567-e89b-12d3-a456-426614174000",
"created_date": "2026-07-31T15:00:00",
"country": "CO",
"psp_information": {
"psp_id": "<psp_uuid>",
"psp_name": "Kushki"
},
"psp_transaction_identification": "<psp_transaction_id>"
}

Guarde id e psp_transaction_identification para conciliação. O status WAITING_PSP_PAYMENT indica que o PSP recebeu a solicitação; ele não confirma que o beneficiário já recebeu o valor.

Status do PayOUT

StatusSignificado
WAITING_PSP_PAYMENTO pagamento foi enviado e aguarda a confirmação do PSP.
SETTLEDO PSP confirmou a liquidação.
DENIEDO PSP negou o pagamento.
ERROROcorreu uma falha de validação, configuração ou processamento.

Webhooks

Cadastre a URL de Notificação do merchant para receber mudanças de status. A Orkestral envia uma requisição PATCH para a URL cadastrada:

PATCH <url_de_notificação>
Content-Type: application/json
IP: <endereço_do_serviço_notificador>
{
"status": {
"paymentStatusId": 6,
"name": "SETTLED"
},
"message": "Pagamento liquidado"
}

Retorne um HTTP 2xx rapidamente e processe notificações de forma idempotente. O header IP não é uma assinatura criptográfica e não deve ser o único meio de autenticar a origem.

Consulte Chave Secreta e URL de Notificação para configurar e proteger o endpoint.

Tratamento de erros

HTTPSituação comumAção recomendada
400Campo inválido ou combinação não aceita pelo PSPCorrija o payload antes de repetir.
401Token ausente, inválido ou expiradoObtenha um token válido.
403Credencial sem acesso ao recursoConfira o merchant e as permissões.
404Merchant, PSP ou configuração inexistenteVerifique o ambiente e os cadastros.
409transaction_id já utilizadoConcilie a solicitação original.
422Regra de negócio ou credencial do PSP inválidaRevise moeda, beneficiário, banco e configuração.
5xxFalha temporáriaConsulte a transação antes de repetir e aplique backoff.

Não repita um PayOUT com outro transaction_id após timeout ou erro 5xx sem confirmar se a primeira solicitação foi processada. Uma repetição indevida pode gerar um pagamento duplicado.

Segurança e boas práticas

  • Valide beneficiário, documento, banco, conta, moeda e valor antes do envio;
  • Use um transaction_id único e mantenha-o na conciliação;
  • Restrinja tokens e credenciais aos serviços de backend;
  • Não registre tokens, documentos completos, contas ou chaves PIX em logs;
  • Use TLS e certificados HTTPS válidos;
  • Trate a resposta inicial como assíncrona e aguarde o estado final;
  • Valide e processe webhooks de forma idempotente;
  • Separe dados e credenciais de homologação e produção.