马来西亚MyInvois电子发票验证器 API

API ID 13423

无钥匙马来西亚MyInvois(LHDN)电子发票验证器:官方UBL 2.1 XSD 代码列表 总额计算 XAdES签名检查 POST XML或JSON 获取规则编码的JSON报告 无需LHDN账户

410 ms 平均响应

API 文档

端点

请求
简单的存活探针用于监控和正常运行检查。当验证服务正常且准备接受文档时,返回{"status":"ok"}和HTTP 200。无参数,无需请求体
Endpoint ID: 29078
GET https://zylalabs.com/api/13423/malaysia+myinvois+e-invoice+validator+api/29078/health+check
输入参数

剩余免费测试请求:3 / 3。

此端点不需要任何输入参数。

API 示例响应
JSON
{
    "status": "ok"
}
健康检查 — 代码片段

curl --location --request GET 'https://zylalabs.com/api/13423/malaysia+myinvois+e-invoice+validator+api/29078/health+check' --header 'Authorization: Bearer YOUR_API_KEY' 


    
请求
POST 原始 MyInvois 电子发票作为请求主体 (UBL 2.1 XML,内容类型:application/xml,或 MyInvois JSON,内容类型:application/json - 格式自动检测) 返回一个 JSON 验证报告:有效,格式良好,文档类型,错误计数,警告计数和详细的规则编码结果 (MY-STRUCT-*,MY-CORE-*,MY-CODE-*,MY-MATH-*,MY-SIG-*) 涵盖官方 UBL 2.1 XSD 结构,必填字段,LHDN 代码列表,总计数学和封装的 XAdES 签名 一个不合规的发票仍然是 HTTP 200 - 裁定为 "有效":false 在 JSON 内部
Endpoint ID: 29079
POST https://zylalabs.com/api/13423/malaysia+myinvois+e-invoice+validator+api/29079/validate+e-invoice
输入参数

验证电子发票 — 端点功能

对象 描述
请求体 必需 Json

剩余免费测试请求:3 / 3。


输入参数

API 示例响应
JSON
{
    "valid": true,
    "wellFormed": true,
    "inputFormat": "xml",
    "documentType": "01",
    "version": "1.1",
    "errorCount": 0,
    "warningCount": 4,
    "findings": [
        {
            "level": "info",
            "ruleId": "MY-STRUCT-XSD",
            "text": "Document is valid against the official UBL 2.1 Invoice XSD.",
            "location": null,
            "occurrences": 1
        },
        {
            "level": "warning",
            "ruleId": "MY-MATH-TAX-INCLUSIVE",
            "text": "TaxInclusiveAmount (1436.50) != TaxExclusiveAmount + total TaxAmount (1524.13).",
            "location": "cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount",
            "occurrences": 1
        },
        {
            "level": "info",
            "ruleId": "MY-SIG-CERT",
            "text": "Embedded signing certificate: subject '1.2.840.113549.1.9.1=#1616616e61732e6140666776686f6c64696e67732e636f6d,2.5.4.5=#1309443132333435363738,CN=Dummy,OU=Test Unit eInvoice,2.5.4.97=#130c433239373032363335303630,O=Dummy,C=MY', issuer 'CN=Trial LHDNM Sub CA V1,OU=Terms of use at http://www.posdigicert.com.my,O=LHDNM,C=MY'.",
            "location": "ds:X509Certificate",
            "occurrences": 1
        },
        {
            "level": "info",
            "ruleId": "MY-SIG-EKU",
            "text": "Certificate carries the Document Signing EKU (1.3.6.1.4.1.311.10.3.12).",
            "location": "ds:X509Certificate",
            "occurrences": 1
        },
        {
            "level": "warning",
            "ruleId": "MY-SIG-CERT-VALIDITY",
            "text": "Signing certificate is outside its validity window (Thu Jun 06 02:52:36 UTC 2024 .. Fri Sep 06 02:52:36 UTC 2024): CertificateExpiredException.",
            "location": "ds:X509Certificate",
            "occurrences": 1
        },
        {
            "level": "info",
            "ruleId": "MY-SIG-CERTDIGEST",
            "text": "XAdES SigningCertificate/CertDigest matches SHA-256 of the embedded certificate.",
            "location": "xades:SigningCertificate",
            "occurrences": 1
        },
        {
            "level": "info",
            "ruleId": "MY-SIG-ISSUERSERIAL",
            "text": "XAdES IssuerSerial serial number matches the embedded certificate.",
            "location": "xades:IssuerSerial",
            "occurrences": 1
        },
        {
            "level": "info",
            "ruleId": "MY-SIG-DOC-DIGEST",
            "text": "Document digest VERIFIES: recomputed SHA-256 over the minified document (UBLExtensions and cac:Signature removed, inclusive Canonical XML) matches the signed DigestValue.",
            "location": "ds:Reference[@URI='']",
            "occurrences": 1
        },
        {
            "level": "warning",
            "ruleId": "MY-SIG-PROPS-DIGEST",
            "text": "SignedProperties digest MISMATCH: signed DigestValue Tc9oNX8EuNQohWVDZeaPOHmeBU5tuwVdwIRyfltnTPw= does not match the recomputed SHA-256 (exclusive b0VXjdpRrf5OQt96gzaFM1e8I9/+1qC5uFfI8eK8zjY= / inclusive vjjXqMNokPtL5qvfFj4irmcxCjxyVuirMVVe3KCKXBw=).",
            "location": "ds:Reference[@URI='#id-xades-signed-props']",
            "occurrences": 1
        },
        {
            "level": "warning",
            "ruleId": "MY-SIG-VALUE",
            "text": "SignatureValue does NOT verify: RSA-SHA256 over the canonicalized SignedInfo does not match the embedded certificate's public key.",
            "location": "ds:SignatureValue",
            "occurrences": 1
        },
        {
            "level": "info",
            "ruleId": "MY-SIG-TRUST",
            "text": "Trust chain to a Malaysian (LHDN/Pos Digicert) CA is NOT verified here; this requires the LHDNM CA/root list and, for full assurance, an online LHDN check. Structure and the embedded-certificate crypto are checked offline.",
            "location": null,
            "occurrences": 1
        }
    ]
}
验证电子发票 — 代码片段

curl --location --request POST 'https://zylalabs.com/api/13423/malaysia+myinvois+e-invoice+validator+api/29079/validate+e-invoice' --header 'Authorization: Bearer YOUR_API_KEY' 

--data-raw '
  
    
      urn:oasis:names:specification:ubl:dsig:enveloped:xades
      
        
          
            urn:oasis:names:specification:ubl:signature:1
            urn:oasis:names:specification:ubl:signature:Invoice
            
              
                
                
                
                  
                    
                      not(//ancestor-or-self::ext:UBLExtensions)
                    
                    
                      not(//ancestor-or-self::cac:Signature)
                    
                    
                  
                  
                  fRaWJINS9sB9aSl/MhCjMsdVMFpLwnxstpPhJkJwkU4=
                
                
                  
                  Tc9oNX8EuNQohWVDZeaPOHmeBU5tuwVdwIRyfltnTPw=
                
              
              kZhLB843E/sJEd66jI1lcfRheCZXaaHs9EjYOktMy9f/QmK7f4rFKcK24lqdcr+upqNbgRBJy3ahPnEv/AMb+ncklAkkxj2bOeVtUhi3wgh7pF0UUFoGFGb49sHRf9wEJ/IMMhiCs+weOSzVUCPiUGszFxwfyDps+ft5ZEKU3m1pIGcbu7V3qv7iNBkYtdfkFXbDxLBcOwGrJpXJ9/QYPmQrsEG0ROJV4Jhjb8R+X7T6K9UZlV/ciUXURO6AKzU4uHThPmcveHZWAxZqpmQEk2zelqsVGRAMformANhoXnWO4JxzSriQMnk5Mglu6hiapwEQMHySz7L0ib/Yp23RTw==
              
                
                  MIIFlDCCA3ygAwIBAgIQeomZorO+0AwmW2BRdWJMxTANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJNWTEOMAwGA1UEChMFTEhETk0xNjA0BgNVBAsTLVRlcm1zIG9mIHVzZSBhdCBodHRwOi8vd3d3LnBvc2RpZ2ljZXJ0LmNvbS5teTEeMBwGA1UEAxMVVHJpYWwgTEhETk0gU3ViIENBIFYxMB4XDTI0MDYwNjAyNTIzNloXDTI0MDkwNjAyNTIzNlowgZwxCzAJBgNVBAYTAk1ZMQ4wDAYDVQQKEwVEdW1teTEVMBMGA1UEYRMMQzI5NzAyNjM1MDYwMRswGQYDVQQLExJUZXN0IFVuaXQgZUludm9pY2UxDjAMBgNVBAMTBUR1bW15MRIwEAYDVQQFEwlEMTIzNDU2NzgxJTAjBgkqhkiG9w0BCQEWFmFuYXMuYUBmZ3Zob2xkaW5ncy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQChvfOzAofnU60xFO7NcmF2WRi+dgor1D7ccISgRVfZC30Fdxnt1S6ZNf78Lbrz8TbWMicS8plh/pHy96OJvEBplsAgcZTd6WvaMUB2oInC86D3YShlthR6EzhwXgBmg/g9xprwlRqXMT2p4+K8zmyJZ9pIb8Y+tQNjm/uYNudtwGVm8A4hEhlRHbgfUXRzT19QZml6V2Ea0wQI8VyWWa8phCIkBD2w4F8jG4eP5/0XSQkTfBHHf+GV/YDJx5KiiYfmB1nGfwoPHix6Gey+wRjIq87on8Dm5+8ei8/bOhcuuSlpxgwphAP3rZrNbRN9LNVLSQ5md41asoBHfaDIVPVpAgMBAAGjgfcwgfQwHwYDVR0lBBgwFgYIKwYBBQUHAwQGCisGAQQBgjcKAwwwEQYDVR0OBAoECEDwms66hrpiMFMGA1UdIARMMEowSAYJKwYBBAGDikUBMDswOQYIKwYBBQUHAgEWLWh0dHBzOi8vd3d3LnBvc2RpZ2ljZXJ0LmNvbS5teS9yZXBvc2l0b3J5L2NwczATBgNVHSMEDDAKgAhNf9lrtsUI0DAOBgNVHQ8BAf8EBAMCBkAwRAYDVR0fBD0wOzA5oDegNYYzaHR0cDovL3RyaWFsY3JsLnBvc2RpZ2ljZXJ0LmNvbS5teS9UcmlhbExIRE5NVjEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQBwptnIb1OA8NNVotgVIjOnpQtowew87Y0EBWAnVhOsMDlWXD/s+BL7vIEbX/BYa0TjakQ7qo4riSHyUkQ+X+pNsPEqolC4uFOp0pDsIdjsNB+WG15itnghkI99c6YZmbXcSFw9E160c7vG25gIL6zBPculHx5+laE59YkmDLdxx27e0TltUbFmuq3diYBOOf7NswFcDXCo+kXOwFfgmpbzYS0qfSoh3eZZtVHg0r6uga1UsMGb90+IRsk4st99EOVENvo0290lWhPBVK2G34+2TzbbYnVkoxnq6uDMw3cRpXX/oSfya+tyF51kT3iXvpmQ9OMF3wMlfKwCS7BZB2+iRja/1WHkAP7QW7/+0zRBcGQzY7AYsdZUllwYapsLEtbZBrTiH12X4XnZjny9rLfQLzJsFGT7Q+e02GiCsBrK7ZHNTindLRnJYAo4U2at5+SjqBiXSmz0DG+juOyFkwiWyD0xeheg4tMMO2pZ7clQzKflYnvFTEFnt+d+tvVwNjTboxfVxEv2qWF6qcMJeMvXwKTXuwVI2iUqmJSzJbUY+w3OeG7fvrhUfMJPM9XZBOp7CEI1QHfHrtyjlKNhYzG3IgHcfAZUURO16gFmWgzAZLkJSmCIxaIty/EmvG5N3ZePolBOa7lNEH/eSBMGAQteH+Twtiu0Y2xSwmmsxnfJyw==
                
              
              
                
                  
                    
                      2024-07-23T16:31:06Z
                      
                        
                          
                            
                            KKBSTyiPKGkGl1AFqcPziKCEIDYGtnYUTQN4ukO7G40=
                          
                          
                            CN=Trial LHDNM Sub CA V1, OU=Terms of use at http://www.posdigicert.com.my, O=LHDNM, C=MY
                            162880276254639189035871514749820882117
                          
                        
                      
                    
                  
                
              
            
          
        
      
    
  
  XML-INV12345
  2024-07-23
  00:40:00Z
  01
  MYR
  MYR
  
    2024-07-01
    2024-07-31
    Monthly
  
  
    
      151891-1981
    
  
  
    L1
    CustomsImportForm
  
  
    FTA
    FreeTradeAgreement
    Sample Description
  
  
    L1
    K2
  
  
    L1
  
  
    urn:oasis:names:specification:ubl:signature:Invoice
    urn:oasis:names:specification:ubl:dsig:enveloped:xades
  
  
    CPT-CCN-W-211111-KL-000002
    
      46510
      
        Supplier's TIN
      
      
        Supplier's BRN
      
      
        NA
      
      
        NA
      
      
        Kuala Lumpur
        50480
        14
        
          Lot 66
        
        
          Bangunan Merdeka
        
        
          Persiaran Jaya
        
        
          MYS
        
      
      
        Supplier's Name
      
      
        +60123456789
        [email protected]
      
    
  
  
    
      
        Buyer's TIN
      
      
        Buyer's BRN
      
      
        NA
      
      
        NA
      
      
        Kuala Lumpur
        50480
        14
        
          Lot 66
        
        
          Bangunan Merdeka
        
        
          Persiaran Jaya
        
        
          MYS
        
      
      
        Buyer's Name
      
      
        +60123456780
        [email protected]
      
    
  
  
    
    
      Recipient's TIN
    
    
      Recipient's BRN
    
    
      Kuala Lumpur
      50480
      14
      
        Lot 66
      
      
        Bangunan Merdeka
      
      
        Persiaran Jaya
      
      
        MYS
      
    
    
      Recipient's Name
    
    
    
      1234
      
        true
        Service charge
        100
      
    
  
  
    01
    
      1234567890
    
  
  
    Payment method is cash
  
  
    E12345678912
    1.00
    2024-07-23
    00:30:00Z
  
  
    false
    Sample Description
    100
  
  
    true
    Service charge
    100
  
  
    87.63
    
      87.63
      87.63
      
        01
        
          OTH
        
      
    
  
  
    1436.50
    1436.50
    1436.50
    1436.50
    1436.50
    0.30
    1436.50
  
  
    1234
    1
    1436.50
    
      false
      Sample Description
      0.15
      100
    
    
      true
      Sample Description
      0.10
      100
    
    
      0
      
        1460.50
        0
        6.00
        
          E
          Exempt New Means of Transport
          
            OTH
          
        
      
    
    
      Laptop Peripherals
      
        MYS
      
      
        9800.00.0010
      
      
        003
      
    
    
      17
    
    
      100
    
  
'

    

API 访问密钥和身份验证

注册后,每个开发者都会被分配一个个人 API 访问密钥,这是一个唯一的字母和数字组合,用于访问我们的 API 端点。要使用 马来西亚MyInvois电子发票验证器 API 进行身份验证,只需在 Authorization 标头中包含您的 bearer token。

标头
标头 描述
授权 必需 应为 Bearer access_key. 订阅后,请查看上方的"您的 API 访问密钥"。

无长期承诺。随时升级、降级或取消。 免费试用包括最多 50 个请求。

(年度计费可节省 2 个月 🎉)

🚀 企业版套餐

起价
$ 10,000/年


  • 自定义数量
  • 自定义速率限制
  • 专业客户支持
  • 实时 API 监控

概览

无钥匙马来西亚MyInvois(LHDN)电子发票验证器:官方UBL 2.1 XSD,代码列表,合计数学,XAdES签名检查。POST XML或JSON,获取规则编码的JSON报告。无需LHDN账户

马来西亚MyInvois电子发票验证器 API FAQs

GET 健康检查端点返回一个简单的 JSON 对象,指示服务状态,而 POST 验证电子发票端点返回一个详细的 JSON 验证报告,其中包含“valid”“wellFormed”“documentType”“errorCount”和“findings”等字段,并附有特定规则编码的消息

POST验证电子发票响应中的关键字段包括“valid”(布尔), “wellFormed”(布尔), “documentType”(字符串), “errorCount”(整数), “warningCount”(整数)和“findings”(详细验证结果的数组)

返回的数据是JSON格式的 结构包括一个具有验证状态字段 错误和警告计数的顶级对象 还有一个发现数组 每个发现包含“级别”“规则ID”“文本”和“位置”等详细信息

GET健康检查提供服务状态,而POST验证电子发票则提供全面的验证结果,包括与UBL 2.1 XSD的合规性、必填字段、LHDN代码列表以及XAdES签名检查

API支持POST验证电子发票端点的XML(application/xml)和JSON(application/json)格式。格式是根据请求体自动检测的

响应数据被组织成一个包含键值对的JSON对象 "findings" 字段包含一个对象数组 每个对象详细说明了特定的验证问题 按严重性(信息 警告 错误)和相关规则ID分类

典型用例包括验证电子发票是否符合马来西亚法规,确保格式和结构正确,以及检查总额和税务计算的数学准确性

用户可以分析“有效”和“格式正确”字段来确定发票合规性。“发现”数组提供了可操作的见解以纠正问题,而“错误计数”和“警告计数”有助于优先处理必要的调整

不 验证器是无钥匙的 无LHDN账户 无数字证书 无令牌 你发布发票 你得到一个JSON报告 没有任何内容提交给LHDN

UBL 2.1 XML(内容类型:application/xml)和MyInvois JSON(application/json)格式会被自动检测并且相同的LHDN规则适用于两者

一般常见问题

Zyla API Hub 就像一个大型 API 商店,您可以在一个地方找到数千个 API。我们还为所有 API 提供专门支持和实时监控。注册后,您可以选择要使用的 API。请记住,每个 API 都需要自己的订阅。但如果您订阅多个 API,您将为所有这些 API 使用相同的密钥,使事情变得更简单。
价格以 USD(美元)、EUR(欧元)、CAD(加元)、AUD(澳元)和 GBP(英镑)列出。我们接受所有主要的借记卡和信用卡。我们的支付系统使用最新的安全技术,由 Stripe 提供支持,Stripe 是世界上最可靠的支付公司之一。如果您在使用卡片付款时遇到任何问题,请通过 [email protected]

此外,如果您已经以这些货币中的任何一种(USD、EUR、CAD、AUD、GBP)拥有有效订阅,该货币将保留用于后续订阅。只要您没有任何有效订阅,您可以随时更改货币。
定价页面上显示的本地货币基于您 IP 地址的国家/地区,仅供参考。实际价格以 USD(美元)为单位。当您付款时,即使您在我们的网站上看到以本地货币显示的等值金额,您的卡片对账单上也会以美元显示费用。这意味着您不能直接使用本地货币付款。
有时,银行可能会因其欺诈保护设置而拒绝收费。我们建议您首先联系您的银行,检查他们是否阻止了我们的收费。此外,您可以访问账单门户并更改关联的卡片以进行付款。如果这些方法不起作用并且您需要进一步帮助,请通过 [email protected]
价格由月度或年度订阅决定,具体取决于所选计划。
API 调用根据成功请求从您的计划中扣除。每个计划都包含您每月可以进行的特定数量的调用。只有成功的调用(由状态 200 响应指示)才会计入您的总数。这确保失败或不完整的请求不会影响您的月度配额。
Zyla API Hub 采用月度订阅系统。您的计费周期将从您购买付费计划的那一天开始,并在下个月的同一日期续订。因此,如果您想避免未来的费用,请提前取消订阅。
要升级您当前的订阅计划,只需转到 API 的定价页面并选择您要升级到的计划。升级将立即生效,让您立即享受新计划的功能。请注意,您之前计划中的任何剩余调用都不会转移到新计划,因此在升级时请注意这一点。您将被收取新计划的全部金额。
要检查您本月剩余多少 API 调用,请参考响应标头中的 "X-Zyla-API-Calls-Monthly-Remaining" 字段。例如,如果您的计划允许每月 1,000 个请求,而您已使用 100 个,则响应标头中的此字段将显示 900 个剩余调用。
要查看您的计划允许的最大 API 请求数,请检查 "X-Zyla-RateLimit-Limit" 响应标头。例如,如果您的计划包括每月 1,000 个请求,此标头将显示 1,000。
"X-Zyla-RateLimit-Reset" 标头显示您的速率限制重置之前的秒数。这告诉您何时您的请求计数将重新开始。例如,如果它显示 3,600,则意味着还有 3,600 秒直到限制重置。
是的,您可以随时通过访问您的账户并在账单页面上选择取消选项来取消您的计划。请注意,升级、降级和取消会立即生效。此外,取消后,您将不再有权访问该服务,即使您的配额中还有剩余调用。
为了让您有机会在没有任何承诺的情况下体验我们的 API,我们提供 7 天免费试用,允许您免费进行最多 50 次 API 调用。此试用只能使用一次,因此我们建议将其应用于您最感兴趣的 API。虽然我们的大多数 API 都提供免费试用,但有些可能不提供。试用在 7 天后或您进行了 50 次请求后结束,以先发生者为准。如果您在试用期间达到 50 次请求限制,您需要"开始您的付费计划"以继续发出请求。您可以在个人资料中的订阅 -> 选择您订阅的 API -> 定价标签下找到"开始您的付费计划"按钮。或者,如果您在第 7 天之前不取消订阅,您的免费试用将结束,您的计划将自动计费,授予您访问计划中指定的所有 API 调用的权限。请记住这一点以避免不必要的费用。
7 天后,您将被收取试用期间订阅的计划的全额费用。因此,在试用期结束前取消很重要。因忘记及时取消而提出的退款请求不被接受。
当您订阅 API 免费试用时,您可以进行最多 50 次 API 调用。如果您希望超出此限制进行额外的 API 调用,API 将提示您执行"开始您的付费计划"。您可以在个人资料中的订阅 -> 选择您订阅的 API -> 定价标签下找到"开始您的付费计划"按钮。
付款订单在每月 20 日至 30 日之间处理。如果您在 20 日之前提交请求,您的付款将在此时间范围内处理。
您可以通过我们的聊天渠道联系我们以获得即时帮助。我们始终在线,时间为上午 8 点至下午 5 点(EST)。如果您在该时间之后联系我们,我们将尽快回复您。此外,您可以通过 [email protected]

相关 API