curl --request POST \
--url https://api.example.com/spi/v1/transfers/cashout/process \
--header 'Authorization: Bearer demo-access-token' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: pix-demo-20260903-000001' \
--header 'X-Account-Id: 019606a1-3b4c-7d8e-9f01-234567890abc' \
--header 'X-End-To-End-Id: E12345678202605061030abcdef12345' \
--data '{
"amount": "100.00",
"initiationId": "019606a1-3b4c-7d8e-9f01-234567890abc"
}'import requests
url = "https://api.example.com/spi/v1/transfers/cashout/process"
payload = {
"amount": "100.00",
"initiationId": "019606a1-3b4c-7d8e-9f01-234567890abc"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"X-Account-Id": "<x-account-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-Account-Id': '<x-account-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({amount: '100.00', initiationId: '019606a1-3b4c-7d8e-9f01-234567890abc'})
};
fetch('https://api.example.com/spi/v1/transfers/cashout/process', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/spi/v1/transfers/cashout/process",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => '100.00',
'initiationId' => '019606a1-3b4c-7d8e-9f01-234567890abc'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"X-Account-Id: <x-account-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/spi/v1/transfers/cashout/process"
payload := strings.NewReader("{\n \"amount\": \"100.00\",\n \"initiationId\": \"019606a1-3b4c-7d8e-9f01-234567890abc\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("X-Account-Id", "<x-account-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/spi/v1/transfers/cashout/process")
.header("Idempotency-Key", "<idempotency-key>")
.header("X-Account-Id", "<x-account-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"100.00\",\n \"initiationId\": \"019606a1-3b4c-7d8e-9f01-234567890abc\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/spi/v1/transfers/cashout/process")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["X-Account-Id"] = '<x-account-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": \"100.00\",\n \"initiationId\": \"019606a1-3b4c-7d8e-9f01-234567890abc\"\n}"
response = http.request(request)
puts response.read_body{
"accountId": "019606a0-1a2b-7c3d-8e4f-567890123abc",
"aliasId": "019606a1-3b4c-7d8e-9f01-234567890abc",
"amount": "100.00",
"createdAt": "2026-05-06T10:30:00Z",
"currency": "BRL",
"description": "Pagamento de aluguel",
"destination": {
"account": {
"branch": "0001",
"number": "0007654321",
"participant": "87654321",
"type": "CACC"
},
"key": "+5511999998888",
"owner": {
"document": "12345678901",
"name": "João da Silva",
"tradeName": "Empresa Exemplo LTDA",
"type": "NATURAL_PERSON"
}
},
"endToEndId": "E12345678202605061030abcdef12345",
"feeCharge": {
"applied": true,
"calculationType": "FIXED",
"fees": [
{
"amount": "1.50",
"calculationType": "FIXED",
"calculationValue": "1.50",
"creditAccount": "019606a3-5d6e-7f80-1a2b-345678901bcd",
"feeLabel": "PIX_TRANSFER_FEE"
}
],
"netAmount": "98.50",
"totalAmount": "1.50"
},
"id": "019606a2-4c5d-7e8f-90a1-345678901bcd",
"initiatedAt": "2026-05-06T10:30:00Z",
"initiationType": "DICT",
"ledger": {
"destinationOperationId": "019606a5-7f80-7182-3c4d-56789012cdf1",
"revert": {
"destinationOperationId": "019606a5-7f80-7182-3c4d-56789012cdf1",
"sourceOperationId": "019606a5-7f80-7182-3c4d-56789012cdf0",
"transactionId": "019606a5-7f80-7182-3c4d-56789012cdef"
},
"sourceOperationId": "019606a5-7f80-7182-3c4d-56789012cdf0",
"transactionId": "019606a5-7f80-7182-3c4d-56789012cdef"
},
"metadata": {
"field": "field-example"
},
"paymentType": "PIX",
"purpose": "IACT",
"source": {
"account": {
"branch": "0001",
"number": "0007654321",
"participant": "87654321",
"type": "CACC"
},
"key": "+5511999998888",
"owner": {
"document": "12345678901",
"name": "João da Silva",
"tradeName": "Empresa Exemplo LTDA",
"type": "NATURAL_PERSON"
}
},
"status": "COMPLETED",
"type": "OUTBOUND",
"updatedAt": "2026-05-06T10:30:05Z",
"urgency": "HIGH"
}{
"code": "PIX-0030",
"title": "Idempotency Key Required",
"message": "O cabeçalho Idempotency-Key é obrigatório nesta operação e deve respeitar o tamanho aceito."
}{
"code": "PIX-0031",
"title": "Idempotency Key Conflict",
"message": "A Idempotency-Key já foi usada com uma requisição diferente."
}{
"code": "ERR-0001",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}Processar e confirmar uma transferência Pix iniciada (etapa 2)
Confirma uma transferência iniciada anteriormente, debita a conta de origem e envia o pagamento Pix para processamento.
curl --request POST \
--url https://api.example.com/spi/v1/transfers/cashout/process \
--header 'Authorization: Bearer demo-access-token' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: pix-demo-20260903-000001' \
--header 'X-Account-Id: 019606a1-3b4c-7d8e-9f01-234567890abc' \
--header 'X-End-To-End-Id: E12345678202605061030abcdef12345' \
--data '{
"amount": "100.00",
"initiationId": "019606a1-3b4c-7d8e-9f01-234567890abc"
}'import requests
url = "https://api.example.com/spi/v1/transfers/cashout/process"
payload = {
"amount": "100.00",
"initiationId": "019606a1-3b4c-7d8e-9f01-234567890abc"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"X-Account-Id": "<x-account-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-Account-Id': '<x-account-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({amount: '100.00', initiationId: '019606a1-3b4c-7d8e-9f01-234567890abc'})
};
fetch('https://api.example.com/spi/v1/transfers/cashout/process', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/spi/v1/transfers/cashout/process",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => '100.00',
'initiationId' => '019606a1-3b4c-7d8e-9f01-234567890abc'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"X-Account-Id: <x-account-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/spi/v1/transfers/cashout/process"
payload := strings.NewReader("{\n \"amount\": \"100.00\",\n \"initiationId\": \"019606a1-3b4c-7d8e-9f01-234567890abc\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("X-Account-Id", "<x-account-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/spi/v1/transfers/cashout/process")
.header("Idempotency-Key", "<idempotency-key>")
.header("X-Account-Id", "<x-account-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"100.00\",\n \"initiationId\": \"019606a1-3b4c-7d8e-9f01-234567890abc\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/spi/v1/transfers/cashout/process")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["X-Account-Id"] = '<x-account-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": \"100.00\",\n \"initiationId\": \"019606a1-3b4c-7d8e-9f01-234567890abc\"\n}"
response = http.request(request)
puts response.read_body{
"accountId": "019606a0-1a2b-7c3d-8e4f-567890123abc",
"aliasId": "019606a1-3b4c-7d8e-9f01-234567890abc",
"amount": "100.00",
"createdAt": "2026-05-06T10:30:00Z",
"currency": "BRL",
"description": "Pagamento de aluguel",
"destination": {
"account": {
"branch": "0001",
"number": "0007654321",
"participant": "87654321",
"type": "CACC"
},
"key": "+5511999998888",
"owner": {
"document": "12345678901",
"name": "João da Silva",
"tradeName": "Empresa Exemplo LTDA",
"type": "NATURAL_PERSON"
}
},
"endToEndId": "E12345678202605061030abcdef12345",
"feeCharge": {
"applied": true,
"calculationType": "FIXED",
"fees": [
{
"amount": "1.50",
"calculationType": "FIXED",
"calculationValue": "1.50",
"creditAccount": "019606a3-5d6e-7f80-1a2b-345678901bcd",
"feeLabel": "PIX_TRANSFER_FEE"
}
],
"netAmount": "98.50",
"totalAmount": "1.50"
},
"id": "019606a2-4c5d-7e8f-90a1-345678901bcd",
"initiatedAt": "2026-05-06T10:30:00Z",
"initiationType": "DICT",
"ledger": {
"destinationOperationId": "019606a5-7f80-7182-3c4d-56789012cdf1",
"revert": {
"destinationOperationId": "019606a5-7f80-7182-3c4d-56789012cdf1",
"sourceOperationId": "019606a5-7f80-7182-3c4d-56789012cdf0",
"transactionId": "019606a5-7f80-7182-3c4d-56789012cdef"
},
"sourceOperationId": "019606a5-7f80-7182-3c4d-56789012cdf0",
"transactionId": "019606a5-7f80-7182-3c4d-56789012cdef"
},
"metadata": {
"field": "field-example"
},
"paymentType": "PIX",
"purpose": "IACT",
"source": {
"account": {
"branch": "0001",
"number": "0007654321",
"participant": "87654321",
"type": "CACC"
},
"key": "+5511999998888",
"owner": {
"document": "12345678901",
"name": "João da Silva",
"tradeName": "Empresa Exemplo LTDA",
"type": "NATURAL_PERSON"
}
},
"status": "COMPLETED",
"type": "OUTBOUND",
"updatedAt": "2026-05-06T10:30:05Z",
"urgency": "HIGH"
}{
"code": "PIX-0030",
"title": "Idempotency Key Required",
"message": "O cabeçalho Idempotency-Key é obrigatório nesta operação e deve respeitar o tamanho aceito."
}{
"code": "PIX-0031",
"title": "Idempotency Key Conflict",
"message": "A Idempotency-Key já foi usada com uma requisição diferente."
}{
"code": "ERR-0001",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}Autorizações
JWT bearer token issued by the identity provider.
Cabeçalhos
Chave criada pelo cliente para repetir com segurança exatamente a mesma requisição.
1 - 64UUID da conta associada à operação.
"019606a1-3b4c-7d8e-9f01-234567890abc"
Idempotency key — caller-supplied 32-char BCB endToEndId. Omit to let SPI generate one.
"E12345678202605061030abcdef12345"
Corpo
Resposta
Created
"100.00"
"2026-05-06T10:30:00Z"
"E12345678202605061030abcdef12345"
"019606a2-4c5d-7e8f-90a1-345678901bcd"
"COMPLETED"
"OUTBOUND"
"2026-05-06T10:30:05Z"
"019606a0-1a2b-7c3d-8e4f-567890123abc"
Cross-mechanism settled and reserved refund amount. Returned only for INBOUND transfers.
"60.00"
"BRL"
"Pagamento de aluguel"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
"2026-05-06T10:30:00Z"
"DICT"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
"PIX"
"IACT"
Amount minus alreadyRefundedAmount. Returned only for INBOUND transfers and can be negative.
"40.00"
Show child attributes
Show child attributes
"HIGH"
Esta página foi útil?

