docs
集成指南

查询交易

概述

交易查询端点允许您使用多种筛选条件并分页查询账户中的 PIX 交易历史。数据以友好的格式返回,状态和类型会翻译为葡萄牙语,金额以雷亚尔表示。

认证

此端点需要在 Authorization 请求头中提供有效的 Bearer token:

Authorization: Bearer <your_token>

令牌必须通过生成令牌端点获取。

请求频率限制

GET /api/transactions 每个账户每分钟最多接受 30 次请求。超过后,API 返回 429 Too Many Requests;请等待 1 分钟窗口结束后再重试。若要遍历较长的时间段,请优先使用更大的分页(size 最大 100),而不是大量的小调用。

查询参数

参数类型描述
pageinteger页码(默认:1)
sizeinteger每页记录数(默认:20,最大:100)
statusstring按状态筛选:PENDING、CONFIRMED、ERROR
typestring按类型筛选:PAYMENT、WITHDRAW、REFUND_IN、REFUND_OUT
startDatedate开始日期(ISO 8601,例如 2025-01-01)。默认:最近 31 天
endDatedate结束日期(ISO 8601)。默认:今天
externalIdstring按您的外部标识符筛选
endToEndIdstring按 PIX 的 End-to-End ID 筛选

startDate 与 endDate 之间的间隔不能超过 31 天。

字段映射

状态

内部状态会被转换为公开格式:

内部值返回值
PENDINGPendente
CONFIRMEDConfirmado
ERRORError

操作类型

交易类型会被翻译为葡萄牙语:

内部值返回值描述
PAYMENTPix in通过 PIX 收款
WITHDRAWPix out通过 PIX 付款
REFUND_INRefund in发起的退款(借记)
REFUND_OUTRefund out收到的退回(贷记)

变动类型

表示交易是账户的入账还是出账:

操作类型变动
Pix inCREDIT
Pix outDEBIT
Refund inDEBIT
Refund outCREDIT

金额

所有货币金额均以雷亚尔返回,保留 2 位小数:

  • originalAmount:实际支付的金额;确认之前显示应收金额
  • feeAmount:收取的手续费
  • finalAmount:最终金额(原始金额 ± 手续费)
  • amountPaid:实际支付的金额;付款确认之前为 null
  • mismatchAmount:应收金额与实付金额之间的差额;无差异时为 null。正数:少付。负数:多付

证件号脱敏

出于安全考虑,交易对手的证件号会被脱敏:

  • CPF:123.456.789-00 → ***.456.789-**
  • CNPJ:12.345.678/0001-90 → **.345.678/****-**

使用示例

查询所有已确认的交易

curl -X GET "https://api.fypay.me/api/transactions?status=CONFIRMED&page=1&size=10" \
  -H "Authorization: Bearer your_token_here"
const response = await fetch(
  'https://api.fypay.me/api/transactions?status=CONFIRMED&page=1&size=10',
  {
    headers: {
      'Authorization': 'Bearer your_token_here'
    }
  }
);

const data = await response.json();
console.log(data);
import requests

response = requests.get(
    'https://api.fypay.me/api/transactions',
    params={
        'status': 'CONFIRMED',
        'page': 1,
        'size': 10
    },
    headers={
        'Authorization': 'Bearer your_token_here'
    }
)

data = response.json()
print(data)

按时间段查询交易

curl -X GET "https://api.fypay.me/api/transactions?startDate=2025-01-01&endDate=2025-01-15&type=PAYMENT" \
  -H "Authorization: Bearer your_token_here"
const params = new URLSearchParams({
  startDate: '2025-01-01',
  endDate: '2025-01-15',
  type: 'PAYMENT'
});

const response = await fetch(
  `https://api.fypay.me/api/transactions?${params}`,
  {
    headers: {
      'Authorization': 'Bearer your_token_here'
    }
  }
);

按特定标识符查询

# 按 externalId(您的标识符)
curl -X GET "https://api.fypay.me/api/transactions?externalId=order-12345" \
  -H "Authorization: Bearer your_token_here"

# 按 endToEndId(PIX 的 ID)
curl -X GET "https://api.fypay.me/api/transactions?endToEndId=E12345678901234567890123456789012" \
  -H "Authorization: Bearer your_token_here"

响应示例

{
  "data": [
    {
      "transactionId": "12345",
      "externalId": "order-abc123",
      "status": "Confirmado",
      "operationType": "Pix in",
      "movementType": "CREDIT",
      "originalAmount": 100.00,
      "feeAmount": 1.00,
      "finalAmount": 99.00,
      "amountPaid": 100.00,
      "mismatchAmount": null,
      "endToEndId": "E12345678901234567890123456789012",
      "createdAt": "2025-01-15T10:30:00.000Z",
      "processedAt": "2025-01-15T10:30:05.000Z",
      "counterpart": {
        "name": "João Silva",
        "document": "***.456.789-**",
        "bank": {
          "bankISPB": "00000000",
          "bankName": "Banco do Brasil",
          "bankCode": "001",
          "accountBranch": "0001",
          "accountNumber": "123456-7"
        }
      }
    }
  ],
  "metadata": {
    "page": 1,
    "size": 20,
    "total": 150,
    "totalPages": 8,
    "hasNext": true,
    "hasPrevious": false
  }
}

分页

响应包含分页元数据,便于导航:

字段描述
page当前页
size每页记录数
total找到的记录总数
totalPages可用的总页数
hasNext是否存在下一页
hasPrevious是否存在上一页

页面间导航

// 第一页
const page1 = await fetchTransactions({ page: 1, size: 20 });

if (page1.metadata.hasNext) {
  // 下一页
  const page2 = await fetchTransactions({ page: 2, size: 20 });
}

常见使用场景

错误码

状态码描述
400参数无效、开始日期晚于结束日期(PIX_INVALID_DATE_RANGE)或日期间隔超过 31 天(PIX_DATE_RANGE_EXCEEDED)
401未提供令牌或令牌无效
429该账户每分钟请求超过 30 次

后续步骤

本页目录