Create payout
Sends a Pix from your balance to the Pix key of the payee. The idEnvio is yours, and repeating the same idEnvio with the same body returns the same payout.
PUT /v2/ex/pix/{idEnvio}
Scope: ex.pix.send.
PUT /v2/ex/pix/SAQ01J1ZK7M9QW3ERT5TY6UI8O
{
"tipo": "SAQUE",
"valor": "300.00",
"solicitadoEm": "2026-09-18T12:00:00Z",
"favorecido": { "chave": "12345678909", "cpf": "12345678909" },
"referenciaExterna": "saque-778812",
"infoPagador": "Saque pedido 778812"
}
→ 201
{
"idEnvio": "SAQ01J1ZK7M9QW3ERT5TY6UI8O",
"endToEndId": "E12345678202609181200000000000003",
"status": "EM_PROCESSAMENTO",
"tipo": "SAQUE",
"valor": "300.00",
"solicitadoEm": "2026-09-18T12:00:00Z",
"prazoRegulatorio": "2026-09-18T14:00:00Z",
"favorecido": { "chave": "12345678909", "cpf": "12345678909" },
"referenciaExterna": "saque-778812",
"infoPagador": "Saque pedido 778812",
"sla": { "estouradoNaEntrada": false, "restanteSegundos": 7199 }
}
Request fields #
| Field | Type | Required | Description |
|---|---|---|---|
tipo |
string | yes | SAQUE or PREMIO. |
valor |
string | yes | Amount with two decimal places. |
solicitadoEm |
string | yes | Instant at which your customer made the request, RFC 3339. |
favorecido.chave |
string | yes | Pix key of the payee. When capacidades.saqueQualquerChave is false, the document of the payee: the favorecido.cpf or the favorecido.cnpj. |
favorecido.cpf |
string | one of the two | CPF of a payee who is an individual, 11 digits. |
favorecido.cnpj |
string | one of the two | CNPJ of a payee that is a legal entity, 14 positions. Only when capacidades.favorecidoPJ is true. |
referenciaExterna |
string | no | Your identifier, returned in lookups. |
infoPagador |
string | no | Text that goes on the receipt of the payee. |
idEnvioOriginal |
string | no | To repeat a NAO_REALIZADO payout that failed for a correctable reason. |
subconta |
string | no | Id of the sub-account that pays. If omitted, the main account pays. |
exigirAprovacao |
boolean | no | true: the payout waits for a manager of your company to approve it in the dashboard, even below the rules or with them turned off. |
validadeSegundos |
integer | no | Deadline for the payout to go out, from 60 to 10800 seconds, counted from when we receive the request. If omitted, no deadline. |
Response fields #
| Field | Type | Description |
|---|---|---|
status |
string | EM_PROCESSAMENTO, then REALIZADO or NAO_REALIZADO. It may start as AGUARDANDO_APROVACAO, see below. |
endToEndId |
string | Identifier of the Pix. It may change once when the account is a nominal account (custodia.tipo PARCEIRA); key your records by the idEnvio. It is not present while the payout waits for approval, nor when it is not approved (desfecho RECUSADO, EXPIRADO or CANCELADO). |
exigirAprovacao |
boolean | true when you asked for approval; absent means false. |
aprovacao |
object | Only on a payout that stopped: regras and expiraEm; after the decision, desfecho, decididaEm, decididaPor and motivo. |
prazoRegulatorio |
string | solicitadoEm plus 120 minutes. On a payout that waited for approval, the instant of approval plus 120 minutes. |
enviarAte |
string | Until when the payout can go out. Only when you sent validadeSegundos. |
sla.restanteSegundos |
integer | Time left until the deadline. After the outcome, how much of it was left. |
sla.estouradoNaEntrada |
boolean | true when the deadline had already passed at the moment we received the request. It does not change afterwards. |
valorRealizado |
string | Only on a payout the institution split into several Pix: what actually went out. Equal to valor when all the Pix went out, lower when one of them did not go out. See Get payout. |
pix |
list | Only on that payout: its Pix, in order, each with parte, valor, status, endToEndId, liquidadoEm and, on a NAO_REALIZADO Pix, motivo. Absent on an ordinary payout. |
Send a single document: favorecido.cpf or favorecido.cnpj. Both together respond 400 requisicao_invalida, and neither, or one with invalid check digits, 400 documento_invalido. The payee may be a legal entity when capacidades.favorecidoPJ is true in GET /v2/ex/config; when it is false, favorecido.cnpj responds 400 favorecido_pj_nao_permitido, and so does a CNPJ key with favorecido.cpf. When it is true, a CNPJ key with favorecido.cpf responds 400 chave_nao_pertence_ao_documento: declare the favorecido.cnpj of the owner of the key. In the response and in lookups, a payee that is a legal entity carries cnpj instead of cpf.
The document may be optional on your account: see documentoFavorecido.modo in GET /v2/ex/config. With OPCIONAL, the payout may come without favorecido.cpf and without favorecido.cnpj. With a CPF or CNPJ key, the document is the key itself. With an email, phone or random key, the payout goes out without a document, and the favorecido in the response has only the chave. A favorecido.cpf or favorecido.cnpj that is not a valid document is discarded, and the payout proceeds as if the field had not been sent; a document with punctuation that is valid without it is used, without the punctuation. When the account the payout goes out through requires the document, the response is 422 documento_exigido_pela_nominal: send the document and retry.
The key rule is the same for all your accounts. Read capacidades.saqueQualquerChave in GET /v2/ex/config. When it is true, the key may be a CPF, a CNPJ, an email, a phone number with +55 or a random key; a CPF key must be the favorecido.cpf and a CNPJ key must be the favorecido.cnpj. An email, phone or random key is not checked against the informed document: check it before sending. A CNPJ key with lowercase letters is read in uppercase. When it is false, the key must be the document of the payee, valid and without punctuation, as in the example: the favorecido.cpf, with all 11 digits, or the favorecido.cnpj, where capacidades.favorecidoPJ is true. A CPF or CNPJ key of another document responds 400 chave_nao_pertence_ao_documento, a CNPJ key where capacidades.favorecidoPJ is false responds 400 favorecido_pj_nao_permitido, and an email, phone, random key or document with invalid check digits 422 chave_exige_documento. In both cases, the rejection does not create the payout.
A payout above the agreed amount, or from the third one of the day to the same payee onward (the number can also be agreed), or that exceeds the daily total to the same payee, is created with status equal to AGUARDANDO_APROVACAO and the aprovacao object (the regras and the expiraEm). The amount stays reserved and the payout only goes out when a manager of your company approves it in the dashboard; with no decision by aprovacao.expiraEm (24 hours, or the enviarAte when that comes first) it ends NAO_REALIZADO and the amount returns. The event is payout.aguardando_aprovacao, without endToEndId: the identifier is generated again on approval, so always use the idEnvio. The same happens to a payout you send with exigirAprovacao equal to true, even below those rules: aprovacao.regras carries PEDIDA first, along with any others the payout triggers. A similar but wrong name, such as exigeAprovacao, responds 400 campo_desconhecido; check the status and the echoed exigirAprovacao in the response, and test the first one with R$ 1.00.
The manager approves or rejects. aprovacao.desfecho is APROVADO, RECUSADO, EXPIRADO or CANCELADO, and aprovacao.regras carries PEDIDA, VALOR, QUANTIDADE_DESTINO or SOMA_DESTINO. Unless approved, the payout ends NAO_REALIZADO with motivo.codigo MS02 (your company rejected it) or MS03 (deadline expired or cancelled by us), class TERMINAL.
With validadeSegundos, sending does not start after enviarAte, and a payout that did not go out ends NAO_REALIZADO with the reason MS03 and the amount returns. A sending that started earlier may reach the institution afterwards, and a payout the institution accepted proceeds to its outcome there. If the sending got no response, we check with the institution before closing it, a few minutes after enviarAte. Wait for the event, not for the clock. Repeating the same idEnvio returns the enviarAte of the first call, but the same idEnvio with and without validadeSegundos responds 409 id_envio_duplicado. A similar but wrong name, such as expiration, responds 400 campo_desconhecido.
Some accounts do not send Pix. Read capacidades.saque in GET /v2/ex/config (with ?subconta= when the payout comes from a sub-account): when it is false, the payout responds 503 capacidade_indisponivel and is not created.
The payout reserves the amount plus the fee, which you can see in the dashboard. That is why a payout equal to the whole disponivel responds 422 saldo_insuficiente. To withdraw everything, send the saqueMaximo from Balance: it is the largest amount that fits with the fee, down to the cent.
Some accounts have a maximum amount per payout Pix. Above it the payout responds 422 valor_acima_do_maximo, with the maximum in detail, and is not created. In those accounts the saqueMaximo does not go above that maximum, and the rest goes out in another payout.
The outcome arrives through the webhook payout.realizado or payout.nao_realizado. After a timeout or a 5xx, look up GET /v2/ex/pix/{idEnvio} before repeating; if it responds 404, repeat the PUT with the same idEnvio.
Errors #
| Status | title |
When |
|---|---|---|
| 400 | id_envio_invalido |
idEnvio outside 26 to 35 alphanumeric characters. |
| 400 | tipo_invalido |
tipo other than SAQUE or PREMIO. |
| 400 | valor_invalido |
Amount outside the format "0.00" or not positive. |
| 400 | requisicao_invalida |
favorecido.cpf and favorecido.cnpj together. |
| 400 | documento_invalido |
Neither favorecido.cpf nor favorecido.cnpj, or the document is not a valid CPF or CNPJ, with matching check digits. With documentoFavorecido.modo OPCIONAL this error does not happen: the payout proceeds without the document that is missing or not valid. |
| 400 | chave_nao_pertence_ao_documento |
The CPF or CNPJ key is not the informed document. |
| 400 | favorecido_pj_nao_permitido |
favorecido.cnpj, or a CNPJ key with favorecido.cpf, when capacidades.favorecidoPJ is false. |
| 400 | chave_pix_invalida |
The key does not have the shape of any key type, or it is a CPF or CNPJ with invalid check digits. |
| 400 | solicitado_em_invalido |
solicitadoEm outside the format or more than 5 minutes in the future. |
| 400 | validade_invalida |
validadeSegundos outside 60 to 10800, or 0. |
| 400 | campo_desconhecido |
A field whose name is similar to exigirAprovacao or validadeSegundos but wrong, or enviarAte in the request. |
| 403 | subconta_indisponivel |
subconta exists and is not ATIVA. |
| 409 | id_envio_duplicado |
The same idEnvio already exists with a different valor, tipo, payee document, subconta or exigirAprovacao, or with and without validadeSegundos. With a different key, a different solicitadoEm or a different referenciaExterna, the response is 200 with the payout already stored; for another key, use another idEnvio. |
| 422 | subconta_nao_encontrada |
subconta does not exist. |
| 422 | saldo_insuficiente |
The available balance does not cover the amount plus the payout fee. |
| 422 | saldo_bloqueado_med |
The available balance does not cover the payout and this account has balance on hold (dispute, court order or risk analysis). GET /v2/ex/bloqueios lists each hold. |
| 422 | limite_excedido |
Above the per-transaction limit or the daily or monthly limit of the payee. The numbers come in violacoes. |
| 422 | chave_sob_reivindicacao |
The key is under portability or a claim. Ask for another one. |
| 422 | chave_exige_documento |
capacidades.saqueQualquerChave is false and the key is an email, phone, random key or a document with invalid check digits. |
| 422 | documento_exigido_pela_nominal |
Payout without a document, with documentoFavorecido.modo OPCIONAL, through an account that requires the document on payouts. Send favorecido.cpf or favorecido.cnpj. |
| 422 | valor_abaixo_do_minimo |
The amount is below the minimum payout of the account. The minimum comes in detail, and the payout is not created. |
| 422 | valor_acima_do_maximo |
The amount is above the maximum per payout Pix of the account. The maximum comes in detail, and the payout is not created. |
| 422 | favorecido_restrito |
The CPF of the payee is restricted. |
| 422 | pagamento_negado_compliance |
Rejected by the risk analysis. Do not repeat. |
| 422 | cadeia_retry_invalida |
idEnvioOriginal does not point to a NAO_REALIZADO payout with the same tipo and solicitadoEm. |
| 503 | capacidade_indisponivel |
The account does not send Pix: capacidades.saque is false. |