关于Xero API银行交易端点无法返回全部交易的技术咨询
解决Xero API银行交易端点无法返回关联付款/转账记录的问题
我之前对接Xero API时也遇到过一模一样的问题,折腾了好一阵子才找到根源,下面是几个最常见的排查和解决方向:
1. 检查请求参数是否遗漏关键配置
(1)确保包含所有交易状态
默认情况下,Xero API的BankTransactions端点只会返回AUTHORISED状态的交易。如果你的付款/转账交易是VOIDED或DELETED状态,就会被过滤掉。你需要在请求中显式指定:
GET /api.xro/2.0/BankTransactions?Status=ALL
(2)不要限制交易类型
银行交易的Type字段包含SPEND、RECEIVE、TRANSFER等类型。如果你的请求里加了Where子句过滤了类型(比如Where=Type=="SPEND"),会直接漏掉转账类交易。如果需要获取所有类型,要么去掉类型过滤,要么明确包含所有需要的类型:
GET /api.xro/2.0/BankTransactions?Where=Type=="SPEND" OR Type=="RECEIVE" OR Type=="TRANSFER"
(3)添加关联实体的包含参数
如果你需要在银行交易结果中同时返回关联的付款/转账详细信息(而不仅仅是交易本身),需要加上include参数:
GET /api.xro/2.0/BankTransactions?include=Payments,Transfers
2. 处理API分页机制
Xero API默认每页返回最多100条记录,超出的部分会被分页。如果你的缺失交易在后续页面,就需要通过page参数遍历所有页面,或者使用If-Modified-Since头进行增量获取,避免遗漏:
# 获取第2页数据 GET /api.xro/2.0/BankTransactions?page=2 # 增量获取指定时间后的交易 GET /api.xro/2.0/BankTransactions If-Modified-Since: 2024-01-01T00:00:00Z
3. 验证API权限与账户访问范围
- 确保你的Xero应用已经申请了
banktransactions的读写权限(只读权限可能会限制部分交易的返回)。 - 检查授权的组织是否包含你要查询的银行账户,有些时候跨账户的转账可能需要确保两个账户都在授权范围内。
4. 检查交易是否真的属于银行交易范畴
有些付款记录可能直接关联到发票,而没有生成对应的银行交易(比如纯内部的发票付款)。这种情况下,你需要单独调用Payments端点来获取这类记录:
GET /api.xro/2.0/Payments
如果以上方法都试过还是有问题,建议用Xero的开发者控制台直接测试请求,对比返回结果和Xero后台的交易记录,更容易定位具体哪些交易缺失,进而排查参数或权限问题。
内容的提问来源于stack exchange,提问作者wizzardmr42
相关产品推荐
相关产品推荐

