curl --request POST \
--url https://api.brazilpix.com/v2/pix \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": 150.75,
"description": "Pagamento do pedido #12345",
"customer": {
"name": "João da Silva",
"document": "12345678909",
"email": "[email protected]",
"phone": "+5511999998888"
},
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pspCredentialId": "6e307aa4-4772-4230-a648-d88cee308f54",
"expiresIn": 3600,
"externalReference": "pedido-12345",
"metadata": {
"orderId": "12345",
"source": "website"
},
"split": [
{
"subAccount": "loja-centro",
"amount": 30
}
]
}
'import requests
url = "https://api.brazilpix.com/v2/pix"
payload = {
"amount": 150.75,
"description": "Pagamento do pedido #12345",
"customer": {
"name": "João da Silva",
"document": "12345678909",
"email": "[email protected]",
"phone": "+5511999998888"
},
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pspCredentialId": "6e307aa4-4772-4230-a648-d88cee308f54",
"expiresIn": 3600,
"externalReference": "pedido-12345",
"metadata": {
"orderId": "12345",
"source": "website"
},
"split": [
{
"subAccount": "loja-centro",
"amount": 30
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 150.75,
description: 'Pagamento do pedido #12345',
customer: {
name: 'João da Silva',
document: '12345678909',
email: '[email protected]',
phone: '+5511999998888'
},
projectId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
pspCredentialId: '6e307aa4-4772-4230-a648-d88cee308f54',
expiresIn: 3600,
externalReference: 'pedido-12345',
metadata: {orderId: '12345', source: 'website'},
split: [{subAccount: 'loja-centro', amount: 30}]
})
};
fetch('https://api.brazilpix.com/v2/pix', 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.brazilpix.com/v2/pix",
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' => 150.75,
'description' => 'Pagamento do pedido #12345',
'customer' => [
'name' => 'João da Silva',
'document' => '12345678909',
'email' => '[email protected]',
'phone' => '+5511999998888'
],
'projectId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'pspCredentialId' => '6e307aa4-4772-4230-a648-d88cee308f54',
'expiresIn' => 3600,
'externalReference' => 'pedido-12345',
'metadata' => [
'orderId' => '12345',
'source' => 'website'
],
'split' => [
[
'subAccount' => 'loja-centro',
'amount' => 30
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.brazilpix.com/v2/pix"
payload := strings.NewReader("{\n \"amount\": 150.75,\n \"description\": \"Pagamento do pedido #12345\",\n \"customer\": {\n \"name\": \"João da Silva\",\n \"document\": \"12345678909\",\n \"email\": \"[email protected]\",\n \"phone\": \"+5511999998888\"\n },\n \"projectId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"pspCredentialId\": \"6e307aa4-4772-4230-a648-d88cee308f54\",\n \"expiresIn\": 3600,\n \"externalReference\": \"pedido-12345\",\n \"metadata\": {\n \"orderId\": \"12345\",\n \"source\": \"website\"\n },\n \"split\": [\n {\n \"subAccount\": \"loja-centro\",\n \"amount\": 30\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.brazilpix.com/v2/pix")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 150.75,\n \"description\": \"Pagamento do pedido #12345\",\n \"customer\": {\n \"name\": \"João da Silva\",\n \"document\": \"12345678909\",\n \"email\": \"[email protected]\",\n \"phone\": \"+5511999998888\"\n },\n \"projectId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"pspCredentialId\": \"6e307aa4-4772-4230-a648-d88cee308f54\",\n \"expiresIn\": 3600,\n \"externalReference\": \"pedido-12345\",\n \"metadata\": {\n \"orderId\": \"12345\",\n \"source\": \"website\"\n },\n \"split\": [\n {\n \"subAccount\": \"loja-centro\",\n \"amount\": 30\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brazilpix.com/v2/pix")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 150.75,\n \"description\": \"Pagamento do pedido #12345\",\n \"customer\": {\n \"name\": \"João da Silva\",\n \"document\": \"12345678909\",\n \"email\": \"[email protected]\",\n \"phone\": \"+5511999998888\"\n },\n \"projectId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"pspCredentialId\": \"6e307aa4-4772-4230-a648-d88cee308f54\",\n \"expiresIn\": 3600,\n \"externalReference\": \"pedido-12345\",\n \"metadata\": {\n \"orderId\": \"12345\",\n \"source\": \"website\"\n },\n \"split\": [\n {\n \"subAccount\": \"loja-centro\",\n \"amount\": 30\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"amount": 150.75,
"currency": "BRL",
"pixCopyPaste": "00020126580014br.gov.bcb.pix0136a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"expiresAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"qrCodeBase64": "<string>",
"pspPaymentId": "de3516a2-c63a-4c02-b132-a239bf42e183",
"pspCredentialId": "6e307aa4-4772-4230-a648-d88cee308f54",
"externalReference": "pedido-12345",
"split": [
{
"subAccount": "loja-centro",
"amount": 30
}
]
}{
"statusCode": 400,
"error": "BadRequest",
"message": "name must be longer than or equal to 2 characters",
"timestamp": "2025-12-15T22:00:00.000Z",
"details": {},
"traceId": "<string>"
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Authentication token is required",
"timestamp": "2025-12-15T22:00:00.000Z",
"details": {},
"traceId": "<string>"
}{
"statusCode": 404,
"error": "NotFound",
"message": "Resource with id 550e8400-e29b-41d4-a716-446655440000 not found",
"timestamp": "2025-12-15T22:00:00.000Z",
"details": {
"resource": "Example",
"id": "550e8400-e29b-41d4-a716-446655440000"
},
"traceId": "<string>"
}{
"statusCode": 500,
"error": "InternalError",
"message": "An unexpected error occurred",
"timestamp": "2025-12-15T22:00:00.000Z",
"details": {},
"traceId": "2771463d58840c8e116dc6dda1e1e5d0"
}创建 PIX 收款
创建一笔即时 PIX 收款。
所需权限: PIX:WRITE 或 FULL_ACCESS
curl --request POST \
--url https://api.brazilpix.com/v2/pix \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": 150.75,
"description": "Pagamento do pedido #12345",
"customer": {
"name": "João da Silva",
"document": "12345678909",
"email": "[email protected]",
"phone": "+5511999998888"
},
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pspCredentialId": "6e307aa4-4772-4230-a648-d88cee308f54",
"expiresIn": 3600,
"externalReference": "pedido-12345",
"metadata": {
"orderId": "12345",
"source": "website"
},
"split": [
{
"subAccount": "loja-centro",
"amount": 30
}
]
}
'import requests
url = "https://api.brazilpix.com/v2/pix"
payload = {
"amount": 150.75,
"description": "Pagamento do pedido #12345",
"customer": {
"name": "João da Silva",
"document": "12345678909",
"email": "[email protected]",
"phone": "+5511999998888"
},
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pspCredentialId": "6e307aa4-4772-4230-a648-d88cee308f54",
"expiresIn": 3600,
"externalReference": "pedido-12345",
"metadata": {
"orderId": "12345",
"source": "website"
},
"split": [
{
"subAccount": "loja-centro",
"amount": 30
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 150.75,
description: 'Pagamento do pedido #12345',
customer: {
name: 'João da Silva',
document: '12345678909',
email: '[email protected]',
phone: '+5511999998888'
},
projectId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
pspCredentialId: '6e307aa4-4772-4230-a648-d88cee308f54',
expiresIn: 3600,
externalReference: 'pedido-12345',
metadata: {orderId: '12345', source: 'website'},
split: [{subAccount: 'loja-centro', amount: 30}]
})
};
fetch('https://api.brazilpix.com/v2/pix', 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.brazilpix.com/v2/pix",
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' => 150.75,
'description' => 'Pagamento do pedido #12345',
'customer' => [
'name' => 'João da Silva',
'document' => '12345678909',
'email' => '[email protected]',
'phone' => '+5511999998888'
],
'projectId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'pspCredentialId' => '6e307aa4-4772-4230-a648-d88cee308f54',
'expiresIn' => 3600,
'externalReference' => 'pedido-12345',
'metadata' => [
'orderId' => '12345',
'source' => 'website'
],
'split' => [
[
'subAccount' => 'loja-centro',
'amount' => 30
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.brazilpix.com/v2/pix"
payload := strings.NewReader("{\n \"amount\": 150.75,\n \"description\": \"Pagamento do pedido #12345\",\n \"customer\": {\n \"name\": \"João da Silva\",\n \"document\": \"12345678909\",\n \"email\": \"[email protected]\",\n \"phone\": \"+5511999998888\"\n },\n \"projectId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"pspCredentialId\": \"6e307aa4-4772-4230-a648-d88cee308f54\",\n \"expiresIn\": 3600,\n \"externalReference\": \"pedido-12345\",\n \"metadata\": {\n \"orderId\": \"12345\",\n \"source\": \"website\"\n },\n \"split\": [\n {\n \"subAccount\": \"loja-centro\",\n \"amount\": 30\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.brazilpix.com/v2/pix")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 150.75,\n \"description\": \"Pagamento do pedido #12345\",\n \"customer\": {\n \"name\": \"João da Silva\",\n \"document\": \"12345678909\",\n \"email\": \"[email protected]\",\n \"phone\": \"+5511999998888\"\n },\n \"projectId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"pspCredentialId\": \"6e307aa4-4772-4230-a648-d88cee308f54\",\n \"expiresIn\": 3600,\n \"externalReference\": \"pedido-12345\",\n \"metadata\": {\n \"orderId\": \"12345\",\n \"source\": \"website\"\n },\n \"split\": [\n {\n \"subAccount\": \"loja-centro\",\n \"amount\": 30\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brazilpix.com/v2/pix")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 150.75,\n \"description\": \"Pagamento do pedido #12345\",\n \"customer\": {\n \"name\": \"João da Silva\",\n \"document\": \"12345678909\",\n \"email\": \"[email protected]\",\n \"phone\": \"+5511999998888\"\n },\n \"projectId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"pspCredentialId\": \"6e307aa4-4772-4230-a648-d88cee308f54\",\n \"expiresIn\": 3600,\n \"externalReference\": \"pedido-12345\",\n \"metadata\": {\n \"orderId\": \"12345\",\n \"source\": \"website\"\n },\n \"split\": [\n {\n \"subAccount\": \"loja-centro\",\n \"amount\": 30\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"amount": 150.75,
"currency": "BRL",
"pixCopyPaste": "00020126580014br.gov.bcb.pix0136a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"expiresAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"qrCodeBase64": "<string>",
"pspPaymentId": "de3516a2-c63a-4c02-b132-a239bf42e183",
"pspCredentialId": "6e307aa4-4772-4230-a648-d88cee308f54",
"externalReference": "pedido-12345",
"split": [
{
"subAccount": "loja-centro",
"amount": 30
}
]
}{
"statusCode": 400,
"error": "BadRequest",
"message": "name must be longer than or equal to 2 characters",
"timestamp": "2025-12-15T22:00:00.000Z",
"details": {},
"traceId": "<string>"
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Authentication token is required",
"timestamp": "2025-12-15T22:00:00.000Z",
"details": {},
"traceId": "<string>"
}{
"statusCode": 404,
"error": "NotFound",
"message": "Resource with id 550e8400-e29b-41d4-a716-446655440000 not found",
"timestamp": "2025-12-15T22:00:00.000Z",
"details": {
"resource": "Example",
"id": "550e8400-e29b-41d4-a716-446655440000"
},
"traceId": "<string>"
}{
"statusCode": 500,
"error": "InternalError",
"message": "An unexpected error occurred",
"timestamp": "2025-12-15T22:00:00.000Z",
"details": {},
"traceId": "2771463d58840c8e116dc6dda1e1e5d0"
}split 将部分金额分给您的其他钱包——子账户,或通过保留字 principal 指定的主账户。最多 10 项,金额为固定值,以雷亚尔计。创建收款的一方是发起方:收取总额、支付全部手续费,然后才进行分账,因此分账上限是净额(收款金额减去手续费),而非总额。分账在结算时执行,而不是在创建时。退款和 MED 只从发起方扣款——收到分账的一方永远不会被扣款。完整规则、示例和错误表参见支付分账。pspCredentialId 可指定签发本笔收款的机构,忽略已配置的路由。请在控制台的 设置 → 路由 中复制该 ID。指定不等于优先:如果该机构不可用或容量不足,收款将失败,而不会改由其他机构签发。响应会回显 pspCredentialId 作为回执。完整规则和错误表参见机构选择。授权
通过 POST /auth(client_id + client_secret)获取的访问令牌。有效期 300 秒。
请求头
由客户端生成的唯一键(8-255 个字符),使请求具备幂等性。使用相同键重试时返回缓存的响应(TTL 24 小时)。相同键但请求体不同时返回 422。
8 - 255执行操作的子账户的 reference。省略时,操作在主账户上执行;保留值 principal 同样解析为主账户,等同于省略该请求头。除 POST /auth 和 /sub-accounts 自身的端点(始终在主账户上操作)外,所有端点均接受该请求头。
可能的错误:404 SUB_ACCOUNT_NOT_FOUND、403 SUB_ACCOUNT_FORBIDDEN、403 SUB_ACCOUNT_SUSPENDED。
要求凭证已启用子账户访问(设置 → 集成 → API 凭证)。该项默认关闭,任何权限都无法替代,FULL_ACCESS 也不例外:未启用时响应为 403 SUB_ACCOUNT_FORBIDDEN。
^[a-z0-9][a-z0-9_-]{1,31}$"loja-centro"
请求体
金额(BRL)(例如:100.50 表示 R$ 100,50)
x >= 1150.75
收款描述
255"Pagamento do pedido #12345"
付款人信息(均为可选)。
Show child attributes
Show child attributes
交易关联的项目 ID。如未提供且账户只有一个项目,收款将继承该项目;如有多个项目,收款将不关联任何项目。
指定签发本笔收款的机构,忽略已配置的路由。请使用控制台中 设置 → 路由 显示的 ID。该机构必须是您账户中已启用且处于活动状态的机构。如果该机构不可用或容量不足,收款将失败——不会回退到其他机构:您指定的就是这一家。仅适用于已启用机构选择的账户。
"6e307aa4-4772-4230-a648-d88cee308f54"
距离过期的秒数(默认:86400 = 24 小时)
300 <= x <= 6048003600
您的外部参考 ID
255"pedido-12345"
自定义元数据(键值对)
{ "orderId": "12345", "source": "website" }
在结算时将部分金额分给同一账户下的其他子账户。创建收款的一方为发起方:收取总额、承担全部手续费,然后才进行分账——手续费不在各接收方之间分摊。分账总和不得超过净额(收款金额减去手续费)。退款和 MED 仅从发起方扣款;已收到分账的一方不会被扣款。
10Show child attributes
Show child attributes
响应
PIX 收款创建成功
收款 ID(交易 ID)
收款状态
pending, completed, failed, cancelled 金额(BRL)
150.75
货币代码
"BRL"
PIX 复制粘贴码
"00020126580014br.gov.bcb.pix0136a1b2c3d4-e5f6-7890-abcd-ef1234567890"
过期时间
创建时间
PIX 二维码,data URI 格式(data:image/png;base64,...)
支付服务提供商(PSP)侧的交易 ID。用于对账;如果 PSP 在创建时未返回该 ID,则不存在。
"de3516a2-c63a-4c02-b132-a239bf42e183"
签发本笔收款的机构。仅当您在请求中指定了机构(pspCredentialId)时返回,作为该指定已被遵循的回执。
"6e307aa4-4772-4230-a648-d88cee308f54"
您的外部参考 ID
"pedido-12345"
已接受的分账,单位为雷亚尔。仅当收款创建时带有 split 才存在——如果出现在响应中,说明子账户存在且总和未超过净额。实际分配的金额通过 webhook payment_completed 送达。
Show child attributes
Show child attributes