QBO API如何传递非税项目?.NET Core集成QBO计税功能咨询
QBO API传递非税项目操作指南(.NET Core场景)
你现有创建Invoice/Estimate的逻辑不需要大改,只需要补充以下字段配置即可实现非税项目传递:
1. 行项目参数配置(单条项目标记非税)
对需要设置为非税的行项目,修改两个核心参数:
- 将
SalesItemLineDetail下的Taxable字段赋值为false,同时显式设置TaxableSpecified = true(.NET SDK 特有要求,布尔字段必须指定该属性才会被API识别) - 将同节点下的
TaxCodeRef的value设置为你QBO账号对应的非税税码ID,美国地区默认预置非税税码ID为NON,其余地区可先调用税码查询接口拉取账号下激活的非税税码
注意:两个参数必须同时配置,若仅设置
Taxable=false未指定非税税码,QBO仍会自动匹配默认计税规则对项目计税
2. 整单全非税配置(可选)
如果当前单据所有行项目均为非税,可以直接在Invoice/Estimate根对象添加全局配置,避免逐行修改:
- 设置
GlobalTaxCalculation字段为TaxExcluded,同时显式设置GlobalTaxCalculationSpecified = true - 无需传递
TxnTaxDetail计税明细节点
3. 代码示例(基于官方Intuit.Ipp.Data NuGet包)
// 1. 构建非税行项目 var nonTaxLine = new Line { Description = "技术咨询服务(非税)", Amount = 299.00m, AmountSpecified = true, DetailType = LineDetailTypeEnum.SalesItemLineDetail, DetailTypeSpecified = true, AnyIntuitObject = new SalesItemLineDetail { ItemRef = new ReferenceType { value = "1" /* 替换为你的商品项ID */ }, Qty = 1, QtySpecified = true, UnitPrice = 299.00m, UnitPriceSpecified = true, // 核心非税配置 Taxable = false, TaxableSpecified = true, TaxCodeRef = new ReferenceType { value = "NON" /* 非美国区域替换为对应非税税码ID */ } } }; // 2. 构建Invoice对象 var invoice = new Invoice { CustomerRef = new ReferenceType { value = "5" /* 替换为你的客户ID */ }, Line = new[] { nonTaxLine }, // 整单全非税时可打开下方配置 // GlobalTaxCalculation = GlobalTaxCalculationEnum.TaxExcluded, // GlobalTaxCalculationSpecified = true }; // 3. 调用原有QBO服务方法提交即可 var createdInvoice = qboService.Add(invoice);
常见问题排查
- 参数不生效:检查所有布尔类型字段是否都设置了对应的
xxxSpecified = true,.NET SDK默认不会序列化未标记Specified的布尔字段 - 税码无效:非美国地区不要直接使用
NON作为税码ID,先调用TaxCode查询接口获取你账号下的非税税码 - 自动计税覆盖:如果QBO账号开启了强制自动计税,需要先在账号后台的税务设置中开启「允许手动指定非税项目」权限
内容的提问来源于stack exchange,提问作者Ashish Rathore
相关产品推荐
相关产品推荐

