Closed ramkumarcv closed 4 weeks ago
ensure raw JSON of documentHash is hashed with sha256 as per LHDN guides, normally documentHash
value is shorter than document
value.
Sample below:
{
"documents": [
{
"format": "JSON",
"documentHash": "299aded8a62ad565abdb695d0a8b9e526777c4bbffa498aa15327f52f64fa0a1",
"codeNumber": "I280014XV00124066",
"document": "eyJfRCI6InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkludm9pY2UtMiIsIl9BIjoidXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uQWdncmVnYXRlQ29tcG9uZW50cy0yIiwiX0IiOiJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpDb21tb25CYXNpY0NvbXBvbmVudHMtMiIsIl9FIjoidXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uRXh0ZW5zaW9uQ29tcG9uZW50cy0yIiwiSW52b2ljZSI6W3siSUQiOlt7Il8iOiJJMjgwMDE0WFYwMDEyNDA2In1dLCJJc3N1ZURhdGUiOlt7Il8iOiIyMDI0LTA3LTI3In1dLCJJc3N1ZVRpbWUiOlt7Il8iOiIxNjo0Njo1N1oifV0sIkludm9pY2VUeXBlQ29kZSI6W3siXyI6IjAxIiwibGlzdFZlcnNpb25JRCI6IjEuMCJ9XSwiRG9jdW1lbnRDdXJyZW5jeUNvZGUiOlt7Il8iOiJNWVIifV0sIkJpbGxpbmdSZWZlcmVuY2UiOlt7IkFkZGl0aW9uYWxEb2N1bWVudFJlZmVyZW5jZSI6W3siSUQiOlt7Il8iOiJJMjgwMDE0WFYwMDEyNDA2In1dfV19XSwiQWNjb3VudGluZ1N1cHBsaWVyUGFydHkiOlt7IkFkZGl0aW9uYWxBY2NvdW50SUQiOlt7Il8iOiI0WCIsInNjaGVtZUFnZW5jeU5hbWUiOiIgTklOSkEgTUFSVCBTRE4gQkhEIn1dLCJQYXJ0eSI6W3siSW5kdXN0cnlDbGFzc2lmaWNhdGlvbkNvZGUiOlt7Il8iOiI0NjMyOSIsIm5hbWUiOiJUaGlzIGNvZGUgY292ZXJzIHRoZSB3aG9sZXNhbGUgdHJhZGUgb2YgZm9vZCBwcm9kdWN0cywgYmV2ZXJhZ2VzLCBhbmQgdG9iYWNjby4gSXQgaW5jbHVkZXMgYWN0aXZpdGllcyBzdWNoIGFzIGRpc3RyaWJ1dGluZyBmb29kIGl0ZW1zLCBiZXZlcmFnZXMsIGFuZCByZWxhdGVkIHByb2R1Y3RzIHRvIHJldGFpbGVycywgcmVzdGF1cmFudHMsIGFuZCBvdGhlciBidXNpbmVzc2VzLiJ9XSwiUGFydHlJZGVudGlmaWNhdGlvbiI6W3siSUQiOlt7Il8iOiJDMjQzODEwOTEwMTAiLCJzY2hlbWVJRCI6IlRJTiJ9XX0seyJJRCI6W3siXyI6IjIwMTYwMTAwNjEwNCIsInNjaGVtZUlEIjoiQlJOIn1dfSx7IklEIjpbeyJfIjoiTkEiLCJzY2hlbWVJRCI6IlNTVCJ9XX0seyJJRCI6W3siXyI6Ik5BIiwic2NoZW1lSUQiOiJUVFgifV19XSwiUG9zdGFsQWRkcmVzcyI6W3siQ2l0eU5hbWUiOlt7Il8iOiJCYWhhdSJ9XSwiQ291bnRyeVN1YmVudGl0eUNvZGUiOlt7Il8iOiIwNSJ9XSwiQWRkcmVzc0xpbmUiOlt7IkxpbmUiOlt7Il8iOiJOby41MCJ9XX0seyJMaW5lIjpbeyJfIjoiIFB1c2F0IFBlcm5pYWdhYW4gQWxhbWFuZGEifV19LHsiTGluZSI6W3siXyI6IiwgSmFsYW4gQmFoYXUgLSBNYWhzYW4sIDcyMTAwIEJhaGF1LCBOZWdlcmkgU2VtYmlsYW4ifV19XSwiQ291bnRyeSI6W3siSWRlbnRpZmljYXRpb25Db2RlIjpbeyJfIjoiTVlTIiwibGlzdElEIjoiSVNPMzE2Ni0xIiwibGlzdEFnZW5jeUlEIjoiNiJ9XX1dfV0sIlBhcnR5TGVnYWxFbnRpdHkiOlt7IlJlZ2lzdHJhdGlvbk5hbWUiOlt7Il8iOiJOSU5KQSBMT0dJU1RJQ1MgU0ROIEJIRCAoQkFIQVUpIn1dfV0sIkNvbnRhY3QiOlt7IlRlbGVwaG9uZSI6W3siXyI6Iis2MC0xNDg5NjA1ODAifV19XX1dfV0sIkFjY291bnRpbmdDdXN0b21lclBhcnR5IjpbeyJQYXJ0eSI6W3siUG9zdGFsQWRkcmVzcyI6W3siQ2l0eU5hbWUiOlt7Il8iOiJLVUFMQSBQSUxBSCJ9XSwiUG9zdGFsWm9uZSI6W3siXyI6IjcyMDAwIn1dLCJDb3VudHJ5U3ViZW50aXR5Q29kZSI6W3siXyI6IjA1In1dLCJBZGRyZXNzTGluZSI6W3siTGluZSI6W3siXyI6IjM2OSBHRiBKQUxBTiBSQUpBIE1FTEVXQVIifV19LHsiTGluZSI6W3siXyI6IiJ9XX0seyJMaW5lIjpbeyJfIjoiIn1dfV0sIkNvdW50cnkiOlt7IklkZW50aWZpY2F0aW9uQ29kZSI6W3siXyI6Ik1ZUyIsImxpc3RJRCI6IklTTzMxNjYtMSIsImxpc3RBZ2VuY3lJRCI6IjYifV19XX1dLCJQYXJ0eUxlZ2FsRW50aXR5IjpbeyJSZWdpc3RyYXRpb25OYW1lIjpbeyJfIjoiTUlOSSBNQVJLRVQgU0lOIENIVUFOIEJFRSJ9XX1dLCJQYXJ0eUlkZW50aWZpY2F0aW9uIjpbeyJJRCI6W3siXyI6IklHMjY3NTIzNzYwOTAiLCJzY2hlbWVJRCI6IlRJTiJ9XX0seyJJRCI6W3siXyI6Ijk3MTIxMTM4NTE3NyIsInNjaGVtZUlEIjoiTlJJQyJ9XX0seyJJRCI6W3siXyI6Ik5BIiwic2NoZW1lSUQiOiJTU1QifV19XSwiQ29udGFjdCI6W3siVGVsZXBob25lIjpbeyJfIjoiKzYwMTIyNzM4OTczIn1dfV19XX1dLCJUYXhUb3RhbCI6W3siVGF4QW1vdW50IjpbeyJfIjowLCJjdXJyZW5jeUlEIjoiTVlSIn1dLCJUYXhTdWJ0b3RhbCI6W3siVGF4YWJsZUFtb3VudCI6W3siXyI6OTksImN1cnJlbmN5SUQiOiJNWVIifV0sIlRheEFtb3VudCI6W3siXyI6MCwiY3VycmVuY3lJRCI6Ik1ZUiJ9XSwiVGF4Q2F0ZWdvcnkiOlt7IklEIjpbeyJfIjoiRSJ9XSwiVGF4U2NoZW1lIjpbeyJJRCI6W3siXyI6Ik9USCIsInNjaGVtZUlEIjoiVU4vRUNFIDUxNTMiLCJzY2hlbWVBZ2VuY3lJRCI6IjYifV19XX1dfV19XSwiTGVnYWxNb25ldGFyeVRvdGFsIjpbeyJUYXhFeGNsdXNpdmVBbW91bnQiOlt7Il8iOjk5LCJjdXJyZW5jeUlEIjoiTVlSIn1dLCJUYXhJbmNsdXNpdmVBbW91bnQiOlt7Il8iOjk5LCJjdXJyZW5jeUlEIjoiTVlSIn1dLCJQYXlhYmxlQW1vdW50IjpbeyJfIjo5OSwiY3VycmVuY3lJRCI6Ik1ZUiJ9XSwiTGluZUV4dGVuc2lvbkFtb3VudCI6W3siXyI6OTksImN1cnJlbmN5SUQiOiJNWVIifV0sIkFsbG93YW5jZVRvdGFsQW1vdW50IjpbeyJfIjowLCJjdXJyZW5jeUlEIjoiTVlSIn1dLCJQYXlhYmxlUm91bmRpbmdBbW91bnQiOlt7Il8iOjAsImN1cnJlbmN5SUQiOiJNWVIifV19XSwiSW52b2ljZUxpbmUiOlt7IklEIjpbeyJfIjoiMSJ9XSwiSXRlbSI6W3siQ29tbW9kaXR5Q2xhc3NpZmljYXRpb24iOlt7Ikl0ZW1DbGFzc2lmaWNhdGlvbkNvZGUiOlt7Il8iOiIwMjIiLCJsaXN0SUQiOiJDTEFTUyJ9XX1dLCJEZXNjcmlwdGlvbiI6W3siXyI6IkZpa2EgQ2hvY29sYXRlIFBpZSAxMmcgeCAzMHBjcyB4IDEwYmFncyAoTkpNMTE4ODU3NCkifV19XSwiSW52b2ljZWRRdWFudGl0eSI6W3siXyI6NTB9XSwiUHJpY2UiOlt7IlByaWNlQW1vdW50IjpbeyJfIjoyLCJjdXJyZW5jeUlEIjoiTVlSIn1dfV0sIkl0ZW1QcmljZUV4dGVuc2lvbiI6W3siQW1vdW50IjpbeyJfIjoxMDAsImN1cnJlbmN5SUQiOiJNWVIifV19XSwiTGluZUV4dGVuc2lvbkFtb3VudCI6W3siXyI6MTAwLCJjdXJyZW5jeUlEIjoiTVlSIn1dLCJBbGxvd2FuY2VDaGFyZ2UiOlt7IkNoYXJnZUluZGljYXRvciI6W3siXyI6ZmFsc2V9XSwiTXVsdGlwbGllckZhY3Rvck51bWVyaWMiOlt7Il8iOjB9XSwiQW1vdW50IjpbeyJfIjowLCJjdXJyZW5jeUlEIjoiTVlSIn1dLCJBbGxvd2FuY2VDaGFyZ2VSZWFzb24iOlt7Il8iOiJOQSJ9XX1dLCJUYXhUb3RhbCI6W3siVGF4QW1vdW50IjpbeyJfIjowLCJjdXJyZW5jeUlEIjoiTVlSIn1dLCJUYXhTdWJ0b3RhbCI6W3siVGF4YWJsZUFtb3VudCI6W3siXyI6MTAwLCJjdXJyZW5jeUlEIjoiTVlSIn1dLCJUYXhBbW91bnQiOlt7Il8iOjAsImN1cnJlbmN5SUQiOiJNWVIifV0sIlRheENhdGVnb3J5IjpbeyJJRCI6W3siXyI6IkUifV0sIlBlcmNlbnQiOlt7Il8iOjZ9XSwiVGF4U2NoZW1lIjpbeyJJRCI6W3siXyI6Ik9USCIsInNjaGVtZUlEIjoiVU4vRUNFIDUxNTMiLCJzY2hlbWVBZ2VuY3lJRCI6IjYifV19XSwiVGF4RXhlbXB0aW9uUmVhc29uIjpbeyJfIjoiTm90IEFwcGxpY2FibGUifV19XX1dfV19XX1dfQ=="
}
]
}
The above sample is based on version 1.0 and without signature, Its working as expected, but when i tried with version 1.1 with signature hash, it was failed with "Document hash is not valid." response.
I just checked mine still working. Somewhere in your JSON structure is invalid, kindly check thoroughly. Closing this issue as it no longer relates to the original subject.
We tried getCertificatesHashedParams function to generate the invoice document hash and submitted to LHDN invoice submission API, Got below response Resoponse: { "status": "success", "data": { "submissionUid": null, "acceptedDocuments": [