Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

einvoice-sdk-nodejs

syukranDev29ISC1.1.4

A Node.js SDK for e-invoicing.

e-invoice, sdk, nodejs, open-source, lhdn, irb, malaysia, invois, e-invois

readme

einvoice-sdk-nodejs

A Node.js SDK for interacting with e-invoice LHDN @ IRB MALAYSIA APIs using JSON format data, including obtaining tokens, submitting documents, and managing e-invoice data.

Features

Provides a set of functions to cater to the following needs. You may still need to plan the flow based on your business requirements:

  • Obtain tokens as a taxpayer or intermediary
  • Validate TIN using different ID type
  • Submit documents
  • Get document details
  • Cancel valid documents by supplier
  • Utility functions for JSON to Base64 conversion, SHA256 hash calculation, and generating certificate hashed parameters and hashed documents
  • Automatic API recall in case of hitting the API rate limit

Usage

Create a .env file in the root directory and add your configuration variables:

CLIENT_ID_VALUE=your-client-id
CLIENT_SECRET_1_VALUE=your-client-secret
PREPROD_BASE_URL=your-preprod-base-url
X509Certificate_VALUE=your-x509-certificate
X509SubjectName_VALUE=your-x509-subject-name
X509IssuerName_VALUE=your-x509-issuer-name
X509SerialNumber_VALUE=your-x509-serial-number
PRIVATE_KEY_FILE_PATH=example.key
PRIVATE_CERT_FILE_PATH=exampleCert.crt
const einvois = require('./einvoice-sdk.js');

# Note: You may refer getCertificatesHashedParams() on how to generate hashed signed documents.
# let hashed_payload = {
#     "documents": [
#          {
#             "format": "JSON",
#             "documentHash": <sha256_encoded_signed_documents>,
#             "codeNumber": <assign accordingly>,
#             "document": <base64_encoded_signed_documents>
#         } 

#     ]
# }

try {
  const token = await einvois.getTokenAsTaxPayer();
  const documentSubmissionResponse = await einvois.submitDocument(hashed_payload.documents, token.access_token);
  console.log(documentSubmissionResponse);
} catch (error) {
  console.error(error);
}

Contributing / License

Author: Syukran Soleh
This project is open-source and licensed under the ISC License. Contributions are welcome—please follow the guidelines for contributions and feel free to submit issues or pull requests.