Skip to content

syukranDev/e-invoice-sdk-nodejs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Pioneered the first Node.js SDK for Malaysia LHDN e-Invoicing (early adoption)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published