Safira Paydocs
接口端点

PIX 转账

概述

POST /dict/pix 接口端点向指定密钥发起 PIX 转账。密钥可以是 CPF、CNPJ、邮箱、手机号或 EVP(随机密钥)。

此端点遵循中央银行关于通过 DICT(交易账户标识目录)进行 PIX 转账的规范。

接口端点

POST /dict/pix

身份认证

stringobrigatorio

通过 /oauth/token 获取的 Bearer 令牌。

stringobrigatorio

用于幂等性支持的唯一请求标识符。必须为 UUID v4。

示例:550e8400-e29b-41d4-a716-446655440000

请求体

stringobrigatorio

目标 PIX 密钥。可以是:

  • CPF:11 位数字
  • CNPJ:14 位数字
  • 邮箱:有效的邮箱地址
  • 手机号:+55区号号码(例如 +5511999999999)
  • EVP:随机密钥(UUID)
string

收款人证件号(CPF 或 CNPJ)。当 priority = HIGH 时必填,用于即时验证。

string

处理优先级:

  • HIGH:即时处理(需要 creditorDocument
  • NORM:标准队列处理
string

PIX 转账附带的消息。将显示给收款人。

string

付款流程(可选)。用于内部分类。

number

操作在队列中等待的最长时间(秒),超时将被取消。

  • 最小值:1 秒
  • 最大值:10800 秒(3 小时)
  • 默认值:600 秒(10 分钟)
objectobrigatorio

付款数据。

array

不允许付款的 ISPB 代码列表。用于阻止向特定机构的转账。

示例:["12345678", "87654321"]

请求

curl -X POST https://api.safirapay.com/dict/pix \
  -H "Authorization: Bearer <token>" \
  -H "x-idempotency-key: 550e8400-e29b-41d4-a716-446655440000" \
  -H "Content-Type: application/json" \
  -d '{
    "pixKey": "12345678909",
    "creditorDocument": "12345678909",
    "priority": "NORM",
    "description": "Pagamento referente a NF 12345",
    "expiration": 600,
    "payment": {
      "currency": "BRL",
      "amount": 100.50
    }
  }'
const response = await fetch('https://api.safirapay.com/dict/pix', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${token}`,
    'x-idempotency-key': crypto.randomUUID(),
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    pixKey: '12345678909',
    creditorDocument: '12345678909',
    priority: 'NORM',
    description: 'Pagamento referente a NF 12345',
    expiration: 600,
    payment: {
      currency: 'BRL',
      amount: 100.50,
    },
  }),
});

const transfer = await response.json();
import requests
import uuid

response = requests.post(
    'https://api.safirapay.com/dict/pix',
    headers={
        'Authorization': f'Bearer {token}',
        'x-idempotency-key': str(uuid.uuid4()),
        'Content-Type': 'application/json',
    },
    json={
        'pixKey': '12345678909',
        'creditorDocument': '12345678909',
        'priority': 'NORM',
        'description': 'Pagamento referente a NF 12345',
        'expiration': 600,
        'payment': {
            'currency': 'BRL',
            'amount': 100.50,
        },
    }
)

transfer = response.json()

响应

{
  "endToEndId": "550e8400-e29b-41d4-a716-446655440000",
  "eventDate": "2024-01-15T10:30:00.000Z",
  "id": 12345,
  "payment": {
    "amount": 100.50
  },
  "type": "PENDING"
}
{
  "statusCode": 400,
  "message": "Chave PIX inválida",
  "error": "Bad Request"
}
{
  "statusCode": 422,
  "message": "Chave PIX não encontrada no DICT",
  "error": "Unprocessable Entity"
}

响应字段

endToEndIdstring

PIX 交易的唯一标识符。交易结算时,实际的 E2E 值将在 Webhook 中发送。

eventDatestring

事件日期和时间(ISO 8601)。

idnumber

交易的唯一标识符。

paymentobject

typestring

交易类型/状态:

  • PENDING:转账正在处理中
  • COMPLETED:转账完成
  • ERROR:转账失败

幂等性

x-idempotency-key 请求头确保相同的请求不会被重复处理:

// 相同的幂等键 = 相同的响应
const key = '550e8400-e29b-41d4-a716-446655440000';

// 第一次调用 - 创建转账
const res1 = await createTransfer(key, { amount: 100 });
// { id: 123, type: 'PENDING' }

// 使用相同键的第二次调用 - 返回相同的转账
const res2 = await createTransfer(key, { amount: 100 });
// { id: 123, type: 'PENDING' }(不会创建新的)

x-idempotency-key必填的。不包含此请求头的请求将被拒绝。

转账 Webhook

当转账处理完成时,您将收到一个类型为 TRANSFER 的 V2 Webhook:

{
  "type": "TRANSFER",
  "data": {
    "id": 12345,
    "txId": null,
    "pixKey": "12345678909",
    "status": "LIQUIDATED",
    "payment": {
      "amount": "100.50",
      "currency": "BRL"
    },
    "endToEndId": "E12345678901234567890123456789012",
    "creditDebitType": "DEBIT",
    "idempotencyKey": "550e8400-e29b-41d4-a716-446655440000",
    "creditorAccount": {
      "name": "João Silva",
      "document": "123.xxx.xxx-xx",
      "ispb": "18236120"
    },
    "remittanceInformation": "Pagamento referente a NF 12345"
  }
}

TRANSFER Webhooks

查看完整的 TRANSFER Webhook 文档

PIX 密钥类型

类型格式示例
CPF11 位数字12345678909
CNPJ14 位数字12345678000195
邮箱有效邮箱joao@email.com
手机号+55区号号码+5511999999999
EVPUUID7d9f0335-8dcc-4054-9bf9-0dbd61d36906

处理优先级

ISPB 黑名单

使用 ispbDeny 阻止向特定机构的转账:

{
  "pixKey": "joao@email.com",
  "payment": { "amount": 100.00 },
  "ispbDeny": [
    "12345678",
    "87654321"
  ]
}

如果 PIX 密钥属于被屏蔽的机构,转账将被拒绝。

常见错误

状态码错误解决方案
400PIX 密钥无效检查密钥格式
400金额无效使用最多 2 位小数的数值
400缺少幂等键包含 x-idempotency-key 请求头
401令牌无效续期访问令牌
422未找到密钥该密钥在 DICT 中不存在
422余额不足检查可用余额
422ISPB 被屏蔽该机构在 ispbDeny 列表中

后续步骤

本页目录