@dojocoding/hacienda-sdk

中文文档
0.13.0发布于 2026/11/01MITTypeScriptES Module构建来源已验证近 30 天下载 6022

哥斯达黎加电子发票的核心SDK(Hacienda API v4.4)

中文使用文档
文档目录24 节
  1. 安装
  2. 快速启动
  3. 支持输入
  4. API 参考
  5. 客户端
  6. 认证
  7. 奴隶数量
  8. XML 数据
  9. 税务计算
  10. 签名
  11. API 客户端
  12. 配置
  13. 日志
  14. 错误
  15. 出错代码( API)
  16. 完整文档
  17. 迁移到0.4.0
  18. 精确的十进制普通 FE( 添加)
  19. 准确的普通 TE 源候选人
  20. 准确的普通 ND 源候选人
  21. 国内普通FEC来源
  22. 未发放准确的信贷延期
  23. 未释放的当前 FE 校正
  24. 未放行的明确外事服务IVA13采购来源

@dojocoding/hacienda-sdk (英语)

哥斯达黎加电子发票的核心SDK(Hacienda API v4.4).

为Ministerio de Hacienda API提供认证,XML生成,XAdES-ESPES数字签名,税收计算,以及一个被打入的HTTP客户端.

安装

npm install @dojocoding/hacienda-sdk

要求数 节点.js 22+ (使用当地语言) fetch 财务报告和审定财务报表 crypto.subtle) (中文(简体) ).

快速启动

import { HaciendaClient, Environment, IdType } from "@dojocoding/hacienda-sdk";

const client = new HaciendaClient({
  environment: Environment.Sandbox,
  credentials: {
    idType: IdType.PersonaJuridica,
    idNumber: "3101234567",
    username: process.env.HACIENDA_USERNAME!, // Full issued IDP username.
    password: process.env.HACIENDA_PASSWORD!,
  },
});

await client.authenticate();
const token = await client.getAccessToken();

设定 HACIENDA_USERNAME 到完整的用户名 从Tico Factura复制, 包括每个连字符和域名(例如, [email protected]) (中文(简体) ). credentials.username 发送时未改变,可使用 just password; 标识字段 在此模式中是可选的。 如果提供这些证件,则仍然是经验证的纳税人身份证. 无 usernameSDK保留了遗产 buildUsername(idType, idNumber) 倒计时。 无法推断纳税人身份证上的用户名.

关于可开具的发票 验证 签署 提交 情况工作流程, 跟着 沙盒走过 使用 examples/sandbox.mjs 财务报告和审定财务报表 examples/order.json。 。 。 . 关于应用程序架构,见 生产一体化指南。 。 。 . 评议 v4.4 移徙说明 在调整现有投入之前.

支持输入

法律实体 身份识别 在整个身份识别过程中接受十个字母数字字符 和相接相接相接相接相接相接 三位数的专用手机,例如: 911 为: 已支持。 仅提供税收支持的ISC和 datosImpuestoEspecifico,包括: 五进制酒精比例。 混合税计算包括适用的 iVA基数中的具体税和所有净税合计. 见 移徙说明 用于投入 示例和相容性细节.

API 参考

客户端

导出类型说明
HaciendaClient类主要切入点 -- -- 管弦乐团、圆盘生成
HaciendaClientOptionsSchemaZod 计划验证客户端构建器选项

认证

导出类型说明
TokenManager类OAuth2 ROPC 符号生命周期管理
loadCredentials()函数建立和验证认证证书
buildUsername()函数从 cedula 类型和编号中构建境内流离失所者用户名
getEnvironmentConfig()函数返回环境的 API/ IDP URL
Environment数字Sandbox, (中文(简体) ), Production
IdType数字PersonaFisica, (中文(简体) ), PersonaJuridica, (中文(简体) ), DIMEX, (中文(简体) ), NITE

奴隶数量

导出类型说明
buildClave()函数从组件中构建一个 50 个字符片格
parseClave()函数将一个 50 个字符拼接为组件
DocumentType数字文档类型代码( E)01- 说吧09(中文(简体) )
Situation数字情况代码( E)1- 说吧3(中文(简体) )

XML 数据

导出类型说明
buildXml()函数有命名空间支持的低级 XML 构建器
buildFacturaXml()函数构建 Factura 电子化a XML 文档
buildTiqueteXml()函数构建 Tiquete 电子 XML 文档
buildNotaCreditoXml()函数构建一个 Nota de Credito 电子化 XML 文档
buildNotaDebitoXml()函数构建一个 Nota de Debito 电子化的 XML 文档
buildFacturaCompraXml()函数构建 Factura 电子化 de Compra XML 文档
buildFacturaExportacionXml()函数构建 Factura 电子 XML 文档
buildReciboPagoXml()函数构建 Recibo 电子化 de Pago XML 文档
buildMensajeReceptorXml()函数构建 Mensaje 受体 XML 文档
validateFacturaInput()函数根据业务规则验证事实数据
validateDocumentXml()函数以捆绑的 v4. 4 XSD 验证; 可选需要签名结构

税务计算

导出类型说明
calculateLineItemTotals()函数计算单行项目的全部总数
calculateInvoiceSummary()函数将所有行项目合并成一个 ResumenFactura
round5()函数回合至小数点后5位(Hacienda要求)

签名

导出类型说明
loadP12()函数装入 .p12 证书并提取密钥
signXml()函数以 XAdES- ESPES 标记 XML( 已签名的 XML 字符串返回)
signAndEncode()函数为 API 提交签名 XML 和 Base64- encode

API 客户端

导出类型说明
HttpClient类用认证头注入的 HTTP 客户端
bootstrapClient()函数从保存的配置创建认证的 HTTP 客户端
RateLimiter类请求费率限制符
submitDocument()函数提交文件(POST/recepcion)
getStatus()函数获取文档状态 (GET /recepcion/{clave})
submitAndWait()函数提交和投票直至结束
withRetry()函数以重试逻辑环绕一个同步操作
listComprobantes()函数列出一个已观测到的元数据页, 并附有组合方过滤器
getComprobante()函数按 clave (不是 XML/ status) 获取观测到的元数据/ 引用
lookupTaxpayer()函数由 Cedula( 公共 API) 查找纳税人
isTerminalStatus()函数检查状态是否为最终
extractRejectionReason()函数从响应 XML 提取拒绝理由

配置

导出类型说明
loadConfig()函数装入配置文件 ~/.hacienda-cr/config.toml
saveConfig()函数保存配置文件到配置
listProfiles()函数列出所有配置配置
deleteProfile()函数删除配置文件
getNextSequence()函数获取并递增下一个文档序列
getCurrentSequence()函数获取当前序列而不增加
resetSequence()函数将文档序列重排为 0

顺序帮助者 (documentType, branch, pos, options)· ; resetSequence 带 (documentType, branch, pos, value, options)。本地计数键确实 不包括发行者、简介或环境。 使用 options.configDir 要隔离 本地计数器,或在应用程序的数据库中以交易方式分配 多个主机. 见 序列分配。 。 。 .

日志

导出类型说明
Logger类有层次和格式的结构记录器
LogLevel数字DEBUG, (中文(简体) ), INFO, (中文(简体) ), WARN, (中文(简体) ), ERROR, (中文(简体) ), SILENT
noopLogger实例压制所有输出的 Logger

错误

导出类型说明
HaciendaError类所有 SDK 错误的基准错误分类
ValidationError类输入验证失败
ApiError类HTTP/网络出错(包括 statusCode, (中文(简体) ), responseBody(中文(简体) )
AuthenticationError类认证/保存的生命周期失败
SigningError类XAdES- EPES 签名失败
HaciendaErrorCode数字错误类别代码

出错代码( API)

导出类型说明
HaciendaRejectionCode数字Hacienda 拒绝理由代码
REJECTION_CODE_DESCRIPTIONS对象人可读的拒绝说明
getRejectionDescription()函数地图拒绝代码到描述
getHttpStatusDescription()函数将 HTTP 状态映射到描述
isRetryableStatus()函数检查 HTTP 状态是否可以重试

完整文档

见 SDK 参考, (中文(简体) ), 沙盒走过,以及 生产一体化指南。 。 。 .

迁移到0.4.0

见 移徙指导 对于所需的提供者ID,严格的XSD验证,请求最后期限,取消,以及提交重试行为.

精确的十进制普通 FE( 添加)

calculateExactFe 财务报告和审定财务报表 buildExactFacturaXml 接受严格 ExactFeInput 明确命名的小数弦事实 FE-domestic-ordinary-iva13-v1 案例。 他们使用缩放的 BigInt 和精确的小数 XML 不进行数字转换. 遗产数字API保持不变. 这是普通的IVA13,完全 而不是每个财政制度。 见 合同、精确度、限度 独立核查。 。 。 .

历史的包装现在遵循了记录的元数据合同,并暴露了原始观测到的射程头. 见 明确移徙和限制 在更换回填消费者之前.

目前准确的FE信贷条件需要正数 1-5 位数 plazoCredito 关于02/10, 而不修改有效的正本词典。 历史的只读相容性使用 明确分开 calculateRetainedExactFe编号 :RetainedExactFeInputSchema 合同,从不保留XML/签名构建器。 见 信贷期中规则和 消费者移徙。 。 。 .

准确的普通 TE 源候选人

添加剂 calculateExactTe 编号 : buildExactTiqueteXml 共享 ExactTeInputSchema 保留十进制文本和实际可选的接收数据. 它们不制造FE接收器或允许现场发放TE。 见 合同、范围和核查限制。该来源 切片不是新公布的版本,也不是精确的CLI/MCP活化.

准确的普通 ND 源候选人

calculateExactNd 编号 : buildExactNotaDebitoXml 独立计算 带有明确正线和正线的正FE参考递增 装订。 它们保留了原始事实,并不确立原始接受, 法定年龄资格或账户效应。 见 范围和主要规则。 。 。 . 这种添加剂SDK/共享源片不是版本起伏或活活活活化.

国内普通FEC来源

添加 ExactFecInputSchema 编号 : calculateExactFec 编号 : buildExactFacturaCompraXml 保存实际供应商Emisor和买方的受体, 要求买方拥有的08个身份/活动和明确的证明证据 不进行数字转换,计算出普通的IVA13小数字符串。 这是第一个 案件为国内01-04,条件为01/02;外国05,废品06/条件为13 特别税案仍须另行处理。 现有家庭/遗产 不变。 见 准确的 FEC 边界 独立资格/年龄/反应-征兆和释放门.

未发放准确的信贷延期

calculateExactNcPartial 编号 : buildExactNotaCreditoPartialXml 计算清晰 与精确小数字符串相关的信用额度。 累计剩余贷项 是外部不可改变的并行分类账权限,而不是原封顶. calculateExactFeReplacement 编号 : buildExactFacturaReplacementXml 新建一个 FE * 保留机构拒绝的参考资料、新的身份和明确 第16条理由 现有API不变. 见 来源合同和独立合同 授权/释放限制。 。 。 .

未释放的当前 FE 校正

目前精确的FE使用本地的Unicode发行商/收发商/商业名称边界和 提供正向付款分配;新准确的TE分摊正向付款 合同。 历史 0.6-0.9 源/矿和计算产出代码仍然存在 单独可读,无保留建造者或签发权。 见 现行规则、真正的登记证据和按版本迁移。 。 。 .

未放行的明确外事服务IVA13采购来源

calculateExactFecForeignServiceIva13 编号 : buildExactFacturaCompraForeignServiceIva13Xml 保存实际供应商05, 外国地址/参考资料 16/理由 11和买方拥有的 08 个身份 选择了普通的IVA13服务箱。 供应商身份从未决定赔偿责任 或可信用性。 废品06/条件13和其他制度仍未完成. 见 来源、主要规则和独立大门。 。 。 .

准确接收方合同和剩余运输/结果门: 收件人确认。 。 。 .

  • 仅显示来源 非主题个人用货:实际供应商06/买方08,普通折扣,准确的非主体金额;资质,转售和验收保持独立.

版本与发布记录

@dojocoding/hacienda-sdk 共发布 14 个版本,首次发布于 2026/02/23;过去 12 个月发布了 14 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.13.0latest2026/11/0112 天前
0.12.12026/10/2222 天前
0.11.02026/10/2222 天前
0.10.02026/10/1826 天前
0.9.02026/10/1826 天前
0.8.02026/10/1826 天前

关于 @dojocoding/hacienda-sdk 的常见问题

@dojocoding/hacienda-sdk 是什么?

哥斯达黎加电子发票的核心SDK(Hacienda API v4.4)

如何安装 @dojocoding/hacienda-sdk?

在项目目录运行 npm install @dojocoding/hacienda-sdk,或使用 pnpm add / yarn add / bun add。

@dojocoding/hacienda-sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dojocoding/hacienda-sdk 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@dojocoding/hacienda-sdk 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@dojocoding/hacienda-sdk 可以商用吗?

@dojocoding/hacienda-sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@dojocoding/hacienda-sdk 的下载量有多少?

根据 npm 官方下载统计,@dojocoding/hacienda-sdk 在 2026/10/13 – 2026/11/11 这 30 天内被下载 6,022 次,日均约 201 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dojocoding/hacienda-sdk 还在维护吗?

最新版本 0.13.0 发布于 2026/11/01(12 天前);至今共发布 14 个版本,其中过去 12 个月发布了 14 个;首次发布于 2026/02/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。