E-Invoicing for Malaysia API References
Introduction
Welcome to the comprehensive API reference for our Malaysian E-Invoicing system. This documentation is designed to help you seamlessly integrate with our platform and streamline your invoicing processes, ensuring compliance with Malaysia's regulatory requirements.
Our E-Invoicing API provides a robust and secure solution for managing electronic invoices in Malaysia. It supports all aspects of the invoicing lifecycle, from creation and submission to validation and archiving. With a focus on sustainability and innovation, our API helps businesses optimize their financial operations while adhering to the latest e-invoicing standards set by Malaysian authorities.
To get started, you will have to obtain client_id and client_secret from LHDN and use our onbaording API to get yourself connected to MyInvois Portal. This client_credentials can be obtained by submitting a request via email to [sdkmyinvois@hasil.gov.my] together with all the information listed below:
- Tax Identification Number (TIN) - excluding Employer’s (E) No.
- New Business Registration Number
- Company Name
- Company Email Address
- Name of SP (Solution Provider) as Flick Solutions Sdn. Bhd
Onboard Flick as your SP
This endpoint allows you to onboard Flick as your Intermediary System / Service Provider. In this step, we will be generating a access_token from LHDN for further trusted communications on behalf of you.
Request Body
- Name
- registered_name
- Type
- string: mandatory (limit: 300 chars)
- Description
- Registred Name of Supplier’s business 
 
- Name
- tin_number
- Type
- string: mandatory (limit: 14 chars)
- Description
- Tax Identification Number (TIN) of the entity that is being onboarded. 
 
- Name
- other_ids
- Type
- struct{}: mandatory
- Description
- For all SST registrants, SST Number is Mandatory. For businesses, Business registration number is Mandatory. For Malaysian individuals, any of the NRIC Identification like MyKad/MyKAS/MyPR is necessary. If you are a non-Malaysian individual then Passport number is mandatory. If you have a MyTentera number, then it should also be shared. Tourism tax registration number for tourism tax registrant, which may consist of hotel operators and online travel operators. - Name
- sst
- Type
- string: mandatory if applicable (limit: 35 chars)
- Description
- Name
- brn
- Type
- string: mandatory if applicable (limit: 20 chars)
- Description
- Name
- nric
- Type
- string: mandatory if applicable (limit: 12 chars)
- Description
- Name
- passport
- Type
- string: mandatory if applicable (limit: 12 chars)
- Description
- Name
- army
- Type
- string: mandatory if applicable (limit: 12 chars)
- Description
- Name
- ttx
- Type
- string: mandatory if applicable (limit: 17 chars)
- Description
 
 
 
 
 
 - { "sst": "A01-2345-67891012", // SST Registeration Number "brn": "202001234567", // Business Registration Number "nric": "770305-02-1234", // MyKad/MyPR/MyKAS Number "passport": "A12345678", // Passport Number "army": "T123456789012", // MyTentera Number "ttx": "123-4567-89012345" // Tourism Tax Registration Number }
 
- Name
- msic_code
- Type
- string: mandatory (5 chars)
- Description
- 5-digit code that represent the Supplier’s business nature and activity. Please refer: (https://sdk.myinvois.hasil.gov.my/codes/msic-codes/) 
 
- Name
- industry
- Type
- string: mandatory (limit: 300 chars)
- Description
- Description of the Supplier’s business activity 
 
- Name
- city
- Type
- string: mandatory (limit: 50 chars)
- Description
- Registered City of the supplier. 
 
- Name
- street
- Type
- string: mandatory (limit: 150 chars)
- Description
- Street details of the supplier. If not available, provide 'NA'. 
 
- Name
- state
- Type
- string: mandatory (2 chars)
- Description
- SubEntity/State Code. Please refer: (https://sdk.myinvois.hasil.gov.my/codes/state-codes/) 
 
- Name
- country
- Type
- string: mandatory (3 chars)
- Description
- Country of the supplier. Please refer (https://sdk.myinvois.hasil.gov.my/codes/countries/) 
 
- Name
- contact_number
- Type
- string: mandatory (limit: 20 chars)
- Description
- The telephone number of the Supplier (e.g., office, mobile, fax). Following the E.164 standard (https://www.itu.int/rec/T-REC-E.164). 
 
- Name
- client_id
- Type
- string: mandatory
- Description
- Client ID for the Service Provider. 
 
- Name
- client_secret
- Type
- string: mandatory
- Description
- Client secret for the Serviec Provider. 
 
Sample Request
curl 
  --url https://sandbox-my.flick.network/api/einvoice/onboard \
  --header 'x-flick-auth-key: {token}' \
  --header 'Content-Type: application/json' \
  --data '
  {
    "registered_name": "ABC Demo Company Sdn. Bhd.",
    "tin_number": "C12345678910",
    "other_ids": {
      "brn": "202001234567",
      "sst": "A01-2345-67891012"
    },
    "msic_code": "20121",
    "industry": "Manufacture of fertilizers",
    "city": "Kuala Lumpur",
    "street": "Jalan Alor",
    "state": "14",
    "country": "MYS",
    "contact_number": "+60-123456789",
    "client_id": "dcf589e3-d1bb-4f2e-83d2-d5cb4ee1bfcf",
    "client_secret": "34bf56fc-bf02-41cb-af5e-4c0e22ee49f5"
  }'
Sample Response
{
  "status": "success",
  "message": "Successfully Onboarded & Access Token generated for ABC Demo Company Sdn. Bhd.",
  "data": {
    "supplier_uuid": "f4b173a9-9f0f-4850-b682-762290885fee"
  }
}
Validate Taxpayer's TIN
This endpoint allows you to validate specific Tax Identification Number (TIN) and related IDs before adding this number to an invoice and issuing the invoice.
Request Body
- Name
- tin_number
- Type
- string: mandatory
- Description
- The Tax Identification Number to get the validity of the tin. 
 
- Name
- id_type
- Type
- enum: mandatory [BRN, NRIC, PASSPORT, ARMY]
- Description
- It can be NRIC, Passport number, Business registration number, army number etc 
 
- Name
- id_value
- Type
- string: mandatory
- Description
- The actual value of the ID Type selected. 
 
Sample Request
curl 
  --url https://sandbox-my.flick.network/api/einvoice/validate-tin \
  --header 'x-flick-auth-key: {token}' \
   --header 'supplier_uuid: {supplier_uuid}' \
  --header 'Content-Type: application/json' \
  --data '
  {
    "tin_number": "C25845632020",
    "id_type": "NRIC",
    "id_value": "770625015324"
  }'
Sample Response
{
  "status": "success",
  "message": "TIN & NRIC ID validated successfully"
}
Submit an Invoice
To Generate a new E-Invoice Document, this endpoint can be used along with the Supplier UUID to which it belongs to. Specify transport_mode for proper delivery of the document.
Request Body
- Name
- ID
- Type
- string: mandatory (limit: 50 chars)
- Description
- Unique Invoice Reference Number. This should be made in sequence. 
 
- Name
- IssueDate
- Type
- date: mandatory, schema: YYYY-MM-DD
- Description
- Date on which the invoice was issued. 
 
- Name
- IssueTime
- Type
- time: mandatory, schema: HH-MM-ssZ
- Description
- Time at which the invoice was issued. Keep it in UTC format. 
 
- Name
- InvoiceTypeCode
- Type
- enum: mandatory
- Description
- Document Type to be specified. - enum - description - 01 - Invoice - 02 - Credit Note - 03 - Debit Note - 04 - Refund Note 
 
- Name
- InvoiceTotal
- Type
- number: optional
- Description
- If you want to make rounding to stay total aligned, please pass the total of Invoice including all taxes. 
 
- Name
- DocumentCurrencyCode
- Type
- string: mandatory (3 chars)
- Description
- Currency in which Invoice was issued. Default value: - MYR. Please see the list of currency code in LHDN Documentation
 
- Name
- TaxExchangeRate
- Type
- string: mandatory if applicable
- Description
- Rate at which non-Malaysian currency will be converted into Malaysian Ringgit. This is required when DocumentCurrencyCode is not - MYR
 
- Name
- InvoiceDocumentReference
- Type
- array: mandatory if applicable
- Description
- In case of Credit Note, Debit Note and Refund Note, it is mandatory to reference which that dodcument relates to. - UUID mandatory: IRBM Unique Identifier Number of the Invoice to which this credit note refers to.
- InternalID  mandatory: Internal ID / e-Invoice Code / Number to which this credit note belongs to.
 - "InvoiceDocumentReference": [{ "UUID": "71E88663PY17SQ9JZ48NYM0J10", "InternalID": "INV12345" }]
- UUID 
 
- Name
- Discounts
- Type
- array: optional
- Description
- Document level discounts need to be shown here. It is an optional tag and can be skipped if there is no discounts involved. 
 
- Name
- Charges
- Type
- array: optional
- Description
- Document level charges or fees need to be shown here. It is an optional tag and can be skipped if there is no charges involved. 
 
- Name
- Prepayments
- Type
- array: optional
- Description
- Prepayments related this specific invoice need to me mentioned here. It is an optional tag. - [{ "PaymentID": "REC1012", "Amount": 100, "Date": "2024-01-10", "Time": "12:00:00Z", }]
 
- Name
- CustomsImportForm
- Type
- string: mandatory if applicable
- Description
- Unique identifier assigned on the Declaration of Goods Imported.The input of special characters is not allowed. (limit: 19 chars) 
 
- Name
- Incoterms
- Type
- string: optional
- Description
- A set of international trade rules that define the responsibilities of buyers and suppliers.The input of special characters is not allowed. (limit: 3 chars) 
 
- Name
- CustomerParty
- Type
- strcut: mandatory
- Description
- Details of customers to which this Invoice is being issued to. - LegalName  string: mandatory (limit: 300 chars): Official name of Customer
- CustomerTIN string: mandatory (limit: 14 chars): TIN Number of Customer
 - EI00000000010- For General Public
- EI00000000020- For Foreign Buyer’s/Foreign Shipping Recipient’s TIN
 - Any one of the below is mandatory
 - tag - description - CustomerBRN - Valid BRN if Customer is a Business - CustomerNRIC - Valid NRIC (MyKad/MyKAS/MyPR) if its an Individual - CustomerPassport - Valid Passport ID if Customer is a Non-Malaysian - CustomerArmyID - Valid MyTentera ID if Customer is having one - CustomerSST string: optional (limit: 35 chars): If they are SST Registered
- CityName string: mandatory (limit: 300 chars): City of Customer
- AddressLines[] mandatory: min 1, max 3: Address Details of the Customer. One line is mandatory. Provide 'NA' if not recognizable.
- CountrySubentityCode string: mandatory (2 chars): Subentity Code from authority.17can be given if not applicable in case of foreign buyers. Please refer LHDN Documentation
- CountryCode string: mandatory (3 chars): Country of Customer. For codes, please refer LHDN Documentation
- Telephone string: mandatory (limit: 20 chars): Contact Number of Customer
- Email string: optional (limit: 300 chars): Email Address of Customer
 
- LegalName  
 
- Name
- DeliveryDetails
- Type
- strcut: optional
- Description
- Details of receipient to which this Invoice is being delivered to. - RecipientName  string: mandatory (limit: 300 chars): Official name of receipient
- RecipientTIN string: mandatory (limit: 14 chars): TIN Number of receipient
- Any one of the below is mandatory
 - tag - description - RecipientBRN - Valid BRN if Customer is a Business - RecipientNRIC - Valid NRIC (MyKad/MyKAS/MyPR) if its an Individual - RecipientPassport - Valid Passport ID if Customer is a Non-Malaysian - RecipientArmyID - Valid MyTentera ID if Customer is having one - RecipientSST string: optional (limit: 35 chars): If they are SST Registered
- CityName string: mandatory (limit: 300 chars): City of receipient
- AddressLines[] mandatory: min 1, max 3: Address Details of the receipient. One line is mandatory. Provide 'NA' if not recognizable.
- CountrySubentityCode string: mandatory (2 chars): Subentity Code from authority.17can be given if not applicable in case of foreign buyers. Please refer LHDN Documentation
- CountryCode string: mandatory (3 chars): Country of receipient. For codes, please refer LHDN Documentation
- ShipmentID string: optional (limit: 50 chars): Shipping ID if any.
- ShipmentCharges array: optional[if given, at least one]: Amount and Reason of such a charge need to be given.
 
- RecipientName  
 
- Name
- InvoiceLines
- Type
- array: mandatory
- Description
- Details of line items in the document as an array. At least one item is mandatory in an Invoice. Each elemnt in this array must have: - Description string: mandatory (limit: 300 chars): Item Name
- InvoicedQuantity number: mandatory: Quantity of Items
- UOM string: optional: Default: "C62". If you want to specify, then you can use any of the code given in: (https://sdk.myinvois.hasil.gov.my/codes/unit-types/)
- PriceAmount number: mandatory: Unit Price of Items
- LineTaxes array: mandatory: Taxes in each Line item
 - TaxType enum: mandatory: Fixed codes as per: (https://sdk.myinvois.hasil.gov.my/files/TaxTypes.json)
 - code - description - 01 - Sales Tax - 02 - Service Tax - 03 - Tourism Tax - 04 - High-Value Goods Tax - 05 - Sales Tax on Low Value Goods - 06 - Not Applicable - E - Tax exemption (where applicable) - TaxExemptionReason string: mandatory if applicable: If TaxType is 'E', then TaxExemptionReason is mandatory.
- TaxRate number: optional: 0.10 for 10% of Tax Rate [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
- TaxBaseUnit number: optional: Units that have Tax applied [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
- TaxPerUnit number: mandatory: Per unit tax to be considered [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
 - [ { "TaxType": "01", "TaxBaseUnit": 1, "TaxPerUnit": 10 }, { "TaxType": "E", "TaxRate": 0, "TaxExemptionReason": "Exempt New Means of Transport" } ]- ClassificationCode array: mandatory ([] each has limit of: 3 chars): The 3 digit number of classification. Please refer LHDN Documentation
- Discounts array: optional: Line item level discounts need to be passed here. It is an optional tag and can be skipped if there is no discounts involved.
- Charges array: optional: Line item level charges/fees need to be passed here. It is an optional tag and can be skipped if there is no charges/fees involved.
 - Both Discounts and Charges Should have the schema as specified below: - [{ "Amount": 100, // Amount to be adjusted from line total "Reason": "Discount / Item Service Fee", // Reason text }]
- Description 
 
Both Discounts and Charges Should have the schema as specified below:
 [{
   "Amount": 100, // Amount to be adjusted from total txable
   "Reason": "Flat Discount / Service Fee Charged", // Reason
 }]
Sample Request
curl --url https://sandbox-my.flick.network/api/einvoice/generate/invoice \
  --header 'x-flick-auth-key: {token}' \
  --header 'supplier_uuid: {supplier_uuid}' \
  --header 'transport_mode: peppol' \
  --header 'Content-Type: application/json' \
  --data '
    {
      "ID": "INV12345",
      "IssueDate": "2024-01-26",
      "IssueTime": "15:30:00Z",
      "InvoiceTypeCode": "01",
      "DocumentCurrencyCode": "MYR",
      "CustomerParty": {
        "LegalName": "Hebat Group",
        "CustomerTIN": "C25845632100",
        "CustomerBRN":"202121111111",
        "CityName": "Kuala Lumpur",
        "PostalZone": "50480",
        "CountrySubentityCode": "14",
        "AddressLines": [
          "Lot 66"
        ],
        "CountryCode": "MYS",
        "Telephone": "+60-123456789"
      },
      "DeliveryDetails": {
        "RecipientName": "Hebat Group",
        "RecipientTIN": "C25845632100",
        "RecipientBRN":"202121111111",
        "CityName": "Kuala Lumpur",
        "PostalZone": "50480",
        "CountrySubentityCode": "14",
        "AddressLines": [
          "Lot 66"
        ],
        "CountryCode": "MYS",
        "Telephone": "+60-123456789",
        "ShipmentID": "TRN-INQ-001",
        "ShipmentCharges": [{
          "Amount": 100,
          "Reason": "Shipment Charges from KL to MK"
        }]
      },          
      "InvoiceLines": [
        {
          "Description": "Laptop Peripherals",
          "InvoicedQuantity": 1,
          "PriceAmount": 17,
          "LineTaxes":  [
            {
              "TaxType": "01",
              "TaxBaseUnit": 1,
              "TaxPerUnit": 10
            },
            {
              "TaxType": "E",
              "TaxRate": 0,
              "TaxExemptionReason": "Exempt New Means of Transport"
            }
          ],
          "ClassificationCode": ["001", "002", "003"]
        }
      ]
    }'
Sample Response
{
  "status": "submitted",
  "data": {
    "submissionResponse": {
      "submissionUid": "GJ49979N7RCV2KAXDCH6ZK0J10",
      "acceptedDocuments": [
        {
          "uuid": "FRSS37P7NSM94970DCH6ZK0J10",
          "invoiceCodeNumber": "INV12345"
        }
      ],
      "rejectedDocuments": []
    }
  }
}
Submit Invoices in Bulk
To submit E-Invoices in bulk, this endpoint can be used along with the Supplier UUID to which it belongs to. Specify transport_mode for proper delivery of the document.
Request Body
The request body should be an array of Documents[]. Each document will have the below schema:
- Name
- ID
- Type
- string: mandatory (limit: 50 chars)
- Description
- Unique Invoice Reference Number. This should be made in sequence. 
 
- Name
- IssueDate
- Type
- date: mandatory, schema: YYYY-MM-DD
- Description
- Date on which the invoice was issued. 
 
- Name
- IssueTime
- Type
- time: mandatory, schema: HH-MM-ssZ
- Description
- Time at which the invoice was issued. Keep it in UTC format. 
 
- Name
- InvoiceTypeCode
- Type
- enum: mandatory
- Description
- Document Type to be specified. - enum - description - 01 - Invoice - 02 - Credit Note - 03 - Debit Note - 04 - Refund Note 
 
- Name
- InvoiceTotal
- Type
- number: optional
- Description
- If you want to make rounding to stay total aligned, please pass the total of Invoice including all taxes. 
 
- Name
- DocumentCurrencyCode
- Type
- string: mandatory (3 chars)
- Description
- Currency in which Invoice was issued. Default value: - MYR. Please see the list of currency code in LHDN Documentation
 
- Name
- TaxExchangeRate
- Type
- string: mandatory if applicable
- Description
- Rate at which non-Malaysian currency will be converted into Malaysian Ringgit. This is required when DocumentCurrencyCode is not - MYR
 
- Name
- InvoiceDocumentReference
- Type
- array: mandatory if applicable
- Description
- In case of Credit Note, Debit Note and Refund Note, it is mandatory to reference which that dodcument relates to. - UUID mandatory: IRBM Unique Identifier Number of the Invoice to which this credit note refers to.
- InternalID  mandatory: Internal ID / e-Invoice Code / Number to which this credit note belongs to.
 - "InvoiceDocumentReference": [{ "UUID": "71E88663PY17SQ9JZ48NYM0J10", "InternalID": "INV12345" }]
- UUID 
 
- Name
- Discounts
- Type
- array: optional
- Description
- Document level discounts need to be shown here. It is an optional tag and can be skipped if there is no discounts involved. 
 
- Name
- Charges
- Type
- array: optional
- Description
- Document level charges or fees need to be shown here. It is an optional tag and can be skipped if there is no charges involved. 
 
- Name
- Prepayments
- Type
- array: optional
- Description
- Prepayments related this specific invoice need to me mentioned here. It is an optional tag. - [{ "PaymentID": "REC1012", "Amount": 100, "Date": "2024-01-10", "Time": "12:00:00Z", }]
 
- Name
- CustomsImportForm
- Type
- string: mandatory if applicable
- Description
- Unique identifier assigned on the Declaration of Goods Imported.The input of special characters is not allowed. (limit: 19 chars) 
 
- Name
- Incoterms
- Type
- string: optional
- Description
- A set of international trade rules that define the responsibilities of buyers and suppliers.The input of special characters is not allowed. (limit: 3 chars) 
 
- Name
- CustomerParty
- Type
- strcut: mandatory
- Description
- Details of customers to which this Invoice is being issued to. - LegalName  string: mandatory (limit: 300 chars): Official name of Customer
- CustomerTIN string: mandatory (limit: 14 chars): TIN Number of Customer
 - EI00000000010- For General Public
- EI00000000020- For Foreign Buyer’s/Foreign Shipping Recipient’s TIN
 - Any one of the below is mandatory
 - tag - description - CustomerBRN - Valid BRN if Customer is a Business - CustomerNRIC - Valid NRIC (MyKad/MyKAS/MyPR) if its an Individual - CustomerPassport - Valid Passport ID if Customer is a Non-Malaysian - CustomerArmyID - Valid MyTentera ID if Customer is having one - CustomerSST string: optional (limit: 35 chars): If they are SST Registered
- CityName string: mandatory (limit: 300 chars): City of Customer
- AddressLines[] mandatory: min 1, max 3: Address Details of the Customer. One line is mandatory. Provide 'NA' if not recognizable.
- CountrySubentityCode string: mandatory (2 chars): Subentity Code from authority.17can be given if not applicable in case of foreign buyers. Please refer LHDN Documentation
- CountryCode string: mandatory (3 chars): Country of Customer. For codes, please refer LHDN Documentation
- Telephone string: mandatory (limit: 20 chars): Contact Number of Customer
- Email string: optional (limit: 300 chars): Email Address of Customer
 
- LegalName  
 
- Name
- DeliveryDetails
- Type
- strcut: optional
- Description
- Details of receipient to which this Invoice is being delivered to. - RecipientName  string: mandatory (limit: 300 chars): Official name of receipient
- RecipientTIN string: mandatory (limit: 14 chars): TIN Number of receipient
- Any one of the below is mandatory
 - tag - description - RecipientBRN - Valid BRN if Customer is a Business - RecipientNRIC - Valid NRIC (MyKad/MyKAS/MyPR) if its an Individual - RecipientPassport - Valid Passport ID if Customer is a Non-Malaysian - RecipientArmyID - Valid MyTentera ID if Customer is having one - RecipientSST string: optional (limit: 35 chars): If they are SST Registered
- CityName string: mandatory (limit: 300 chars): City of receipient
- AddressLines[] mandatory: min 1, max 3: Address Details of the receipient. One line is mandatory. Provide 'NA' if not recognizable.
- CountrySubentityCode string: mandatory (2 chars): Subentity Code from authority.17can be given if not applicable in case of foreign buyers. Please refer LHDN Documentation
- CountryCode string: mandatory (3 chars): Country of receipient. For codes, please refer LHDN Documentation
- ShipmentID string: optional (limit: 50 chars): Shipping ID if any.
- ShipmentCharges array: optional[if given, at least one]: Amount and Reason of such a charge need to be given.
 
- RecipientName  
 
- Name
- InvoiceLines
- Type
- array: mandatory
- Description
- Details of line items in the document as an array. At least one item is mandatory in an Invoice. Each elemnt in this array must have: - Description string: mandatory (limit: 300 chars): Item Name
- InvoicedQuantity number: mandatory: Quantity of Items
- UOM string: optional: Default: "C62". If you want to specify, then you can use any of the code given in: (https://sdk.myinvois.hasil.gov.my/codes/unit-types/)
- PriceAmount number: mandatory: Unit Price of Items
- LineTaxes array: mandatory: Taxes in each Line item
 - TaxType enum: mandatory: Fixed codes as per: (https://sdk.myinvois.hasil.gov.my/files/TaxTypes.json)
 - code - description - 01 - Sales Tax - 02 - Service Tax - 03 - Tourism Tax - 04 - High-Value Goods Tax - 05 - Sales Tax on Low Value Goods - 06 - Not Applicable - E - Tax exemption (where applicable) - TaxExemptionReason string: mandatory if applicable: If TaxType is 'E', then TaxExemptionReason is mandatory.
- TaxRate number: optional: 0.10 for 10% of Tax Rate [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
- TaxBaseUnit number: optional: Units that have Tax applied [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
- TaxPerUnit number: mandatory: Per unit tax to be considered [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
 - [ { "TaxType": "01", "TaxBaseUnit": 1, "TaxPerUnit": 10 }, { "TaxType": "E", "TaxRate": 0, "TaxExemptionReason": "Exempt New Means of Transport" } ]- ClassificationCode array: mandatory ([] each has limit of: 3 chars): The 3 digit number of classification. Please refer LHDN Documentation
- Discounts array: optional: Line item level discounts need to be passed here. It is an optional tag and can be skipped if there is no discounts involved.
- Charges array: optional: Line item level charges/fees need to be passed here. It is an optional tag and can be skipped if there is no charges/fees involved.
 - Both Discounts and Charges Should have the schema as specified below: - [{ "Amount": 100, // Amount to be adjusted from line total "Reason": "Discount / Item Service Fee", // Reason text }]
- Description 
 
Both Discounts and Charges Should have the schema as specified below:
 [{
   "Amount": 100, // Amount to be adjusted from total txable
   "Reason": "Flat Discount / Service Fee Charged", // Reason
 }]
Sample Request
curl --url https://sandbox-my.flick.network/api/einvoice/generate/invoice/bulk \
  --header 'x-flick-auth-key: {token}' \
  --header 'supplier_uuid: {supplier_uuid}' \
  --header 'transport_mode: peppol' \
  --header 'Content-Type: application/json' \
  --data '
   [{
      "ID": "INV12345",
      "IssueDate": "2024-01-26",
      "IssueTime": "15:30:00Z",
      "InvoiceTypeCode": "01",
      "DocumentCurrencyCode": "MYR",
      "CustomerParty": {
        "LegalName": "Hebat Group",
        "CustomerTIN": "C25845632100",
        "CustomerBRN":"202121111111",
        "CityName": "Kuala Lumpur",
        "PostalZone": "50480",
        "CountrySubentityCode": "14",
        "AddressLines": [
          "Lot 66"
        ],
        "CountryCode": "MYS",
        "Telephone": "+60-123456789"
      },
      "InvoiceLines": [
        {
          "Description": "Laptop Peripherals",
          "InvoicedQuantity": 1,
          "PriceAmount": 17,
          "LineTaxes":  [
            {
              "TaxType": "01",
              "TaxBaseUnit": 1,
              "TaxPerUnit": 10
            },
            {
              "TaxType": "E",
              "TaxRate": 0,
              "TaxExemptionReason": "Exempt New Means of Transport"
            }
          ],
          "ClassificationCode": ["001", "002", "003"]
        }
      ]
    }]'
Sample Response
{
  "status": "submitted",
  "data": {
    "submissionResponse": {
      "submissionUid": "GJ49979N7RCV2KAXDCH6ZK0J10",
      "acceptedDocuments": [
        {
          "uuid": "FRSS37P7NSM94970DCH6ZK0J10",
          "invoiceCodeNumber": "INV12345"
        }
      ],
      "rejectedDocuments": []
    }
  }
}
Report Consolidated Invoices
To Generate a new Credit Note, this endpoint can be used along with the Supplier UUID to which it belongs to. Specify transport_mode for proper delivery of the document.
Request Body
- Name
- ID
- Type
- string: mandatory (limit: 50 chars)
- Description
- Unique Invoice Reference Number. This should be made in sequence. 
 
- Name
- IssueDate
- Type
- date: mandatory, schema: YYYY-MM-DD
- Description
- Date on which the invoice was issued. 
 
- Name
- IssueTime
- Type
- time: mandatory, schema: HH-MM-ssZ
- Description
- Time at which the invoice was issued. Keep it in UTC format. 
 
- Name
- InvoiceTypeCode
- Type
- enum: mandatory
- Description
- Document Type to be specified. - enum - description - 01 - Invoice - 02 - Credit Note - 03 - Debit Note - 04 - Refund Note 
 
- Name
- InvoiceTotal
- Type
- number: optional
- Description
- If you want to make rounding to stay total aligned, please pass the total of Invoice including all taxes. 
 
- Name
- DocumentCurrencyCode
- Type
- string: mandatory (3 chars)
- Description
- Currency in which Invoice was issued. Default value: - MYR. Please see the list of currency code in LHDN Documentation
 
- Name
- TaxExchangeRate
- Type
- string: mandatory if applicable
- Description
- Rate at which non-Malaysian currency will be converted into Malaysian Ringgit. This is required when DocumentCurrencyCode is not - MYR
 
- Name
- InvoiceDocumentReference
- Type
- array: mandatory if applicable
- Description
- In case of Credit Note, Debit Note and Refund Note, it is mandatory to reference which that dodcument relates to. - UUID mandatory: IRBM Unique Identifier Number of the Invoice to which this credit note refers to.
- InternalID  mandatory: Internal ID / e-Invoice Code / Number to which this credit note belongs to.
 - "InvoiceDocumentReference": [{ "UUID": "71E88663PY17SQ9JZ48NYM0J10", "InternalID": "INV12345" }]
- UUID 
 
- Name
- Discounts
- Type
- array: optional
- Description
- Document level discounts need to be shown here. It is an optional tag and can be skipped if there is no discounts involved. 
 
- Name
- Charges
- Type
- array: optional
- Description
- Document level charges or fees need to be shown here. It is an optional tag and can be skipped if there is no charges involved. 
 
- Name
- Prepayments
- Type
- array: optional
- Description
- Prepayments related this specific invoice need to me mentioned here. It is an optional tag. - [{ "PaymentID": "REC1012", "Amount": 100, "Date": "2024-01-10", "Time": "12:00:00Z", }]
 
- Name
- CustomsImportForm
- Type
- string: mandatory if applicable
- Description
- Unique identifier assigned on the Declaration of Goods Imported.The input of special characters is not allowed. (limit: 19 chars) 
 
- Name
- Incoterms
- Type
- string: optional
- Description
- A set of international trade rules that define the responsibilities of buyers and suppliers.The input of special characters is not allowed. (limit: 3 chars) 
 
- Name
- CustomerParty
- Type
- strcut: mandatory
- Description
- Details of customers to which this Invoice is being issued to. - LegalName  string: mandatory (limit: 300 chars): Official name of Customer
- CustomerTIN string: mandatory (limit: 14 chars): TIN Number of Customer
 - EI00000000010- For General Public
 - 
CustomerTIN string: mandatory (limit: 14 chars): NA for General Public.
- 
CityName string: mandatory (limit: 300 chars): NA for General Public
- 
AddressLines[] mandatory: min 1, max 3: Provide 'NA' if not recognizable.
- 
CountrySubentityCode string: mandatory (2 chars): Subentity Code from authority.17can be given if not applicable in case of General Public. Please refer LHDN Documentation
- 
CountryCode string: mandatory (3 chars): Country of Customer. For codes, please refer LHDN Documentation
- 
Telephone string: mandatory (limit: 20 chars): Contact Number of Customer
 
- LegalName  
 
- Name
- InvoiceLines
- Type
- array: mandatory
- Description
- Details of line items in the document as an array. At least one item is mandatory in an Invoice. Each elemnt in this array must have: - Description string: mandatory (limit: 300 chars): Item Name
- InvoicedQuantity number: mandatory: Quantity of Items
- UOM string: optional: Default: "C62". If you want to specify, then you can use any of the code given in: (https://sdk.myinvois.hasil.gov.my/codes/unit-types/)
- PriceAmount number: mandatory: Unit Price of Items
- LineTaxes array: mandatory: Taxes in each Line item
 - TaxType enum: mandatory: Fixed codes as per: (https://sdk.myinvois.hasil.gov.my/files/TaxTypes.json)
 - code - description - 01 - Sales Tax - 02 - Service Tax - 03 - Tourism Tax - 04 - High-Value Goods Tax - 05 - Sales Tax on Low Value Goods - 06 - Not Applicable - E - Tax exemption (where applicable) - TaxExemptionReason string: mandatory if applicable: If TaxType is 'E', then TaxExemptionReason is mandatory.
- TaxRate number: optional: 0.10 for 10% of Tax Rate [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
- TaxBaseUnit number: optional: Units that have Tax applied [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
- TaxPerUnit number: mandatory: Per unit tax to be considered [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
 - [ { "TaxType": "01", "TaxBaseUnit": 1, "TaxPerUnit": 10 }, { "TaxType": "E", "TaxRate": 0, "TaxExemptionReason": "Exempt New Means of Transport" } ]- ClassificationCode array: mandatory ([] each has limit of: 3 chars): The 3 digit number of classification. Please refer LHDN Documentation
- Discounts array: optional: Line item level discounts need to be passed here. It is an optional tag and can be skipped if there is no discounts involved.
- Charges array: optional: Line item level charges/fees need to be passed here. It is an optional tag and can be skipped if there is no charges/fees involved.
 - Both Discounts and Charges Should have the schema as specified below: - [{ "Amount": 100, // Amount to be adjusted from line total "Reason": "Discount / Item Service Fee", // Reason text }]
- Description 
 
Both Discounts and Charges Should have the schema as specified below:
 [{
   "Amount": 100, // Amount to be adjusted from total txable
   "Reason": "Flat Discount / Service Fee Charged", // Reason
 }]
Sample Request
curl --url https://sandbox-my.flick.network/api/einvoice/generate/invoice/consolidated \
  --header 'x-flick-auth-key: {token}' \
  --header 'supplier_uuid: {supplier_uuid}' \
  --header 'transport_mode: peppol' \
  --header 'Content-Type: application/json' \
  --data '
    {
      "ID": "INV12345",
      "IssueDate": "2024-01-26",
      "IssueTime": "15:30:00Z",
      "InvoiceTypeCode": "01",
      "DocumentCurrencyCode": "MYR",
      "CustomerParty": {
        "LegalName": "General Public",
        "CustomerTIN": "EI00000000010",
        "CustomerBRN": "NA",
        "CityName": "NA",
        "CountrySubentityCode": "17",
        "AddressLines": [
          "NA"
        ],
        "CountryCode": "MYS",
        "Telephone": "NA"
      },
      "InvoiceLines": [
        {
          "Description": "INV1 - INV99",
          "InvoicedQuantity": 1,
          "PriceAmount": 17,
          "LineTaxes":  [
            {
              "TaxType": "01",
              "TaxBaseUnit": 1,
              "TaxPerUnit": 10
            },
            {
              "TaxType": "E",
              "TaxRate": 0,
              "TaxExemptionReason": "Exempt New Means of Transport"
            }
          ],
          "ClassificationCode": ["001", "002", "003"]
        },
        {
          "Description": "INV99 - INV199",
          "InvoicedQuantity": 1,
          "PriceAmount": 17,
          "LineTaxes":  [
            {
              "TaxType": "01",
              "TaxBaseUnit": 1,
              "TaxPerUnit": 10
            },
            {
              "TaxType": "E",
              "TaxRate": 0,
              "TaxExemptionReason": "Exempt New Means of Transport"
            }
          ],
          "ClassificationCode": ["001", "002", "003"]
        }
      ]
    }'
Sample Response
{
  "status": "submitted",
  "data": {
    "submissionResponse": {
      "submissionUid": "GJ49979N7RCV2KAXDCH6ZK0J10",
      "acceptedDocuments": [
        {
          "uuid": "FRSS37P7NSM94970DCH6ZK0J10",
          "invoiceCodeNumber": "INV12345"
        }
      ],
      "rejectedDocuments": []
    }
  }
}
Submit a Self-Billed Invoice
To submit Self-Billed E-Invoice, this endpoint can be used along with the Supplier UUID to which it belongs to. Specify transport_mode for proper delivery of the document.
Request Body
- Name
- ID
- Type
- string: mandatory (limit: 50 chars)
- Description
- Unique Invoice Reference Number. This should be made in sequence. 
 
- Name
- IssueDate
- Type
- date: mandatory, schema: YYYY-MM-DD
- Description
- Date on which the invoice was issued. 
 
- Name
- IssueTime
- Type
- time: mandatory, schema: HH-MM-ssZ
- Description
- Time at which the invoice was issued. Keep it in UTC format. 
 
- Name
- InvoiceTypeCode
- Type
- enum: mandatory
- Description
- Document Type to be specified. - enum - description - 11 - Self-Billed Invoice - 12 - Self-Billed Credit Note - 13 - Self-Billed Debit Note - 14 - Self-Billed Refund Note 
 
- Name
- InvoiceTotal
- Type
- number: optional
- Description
- If you want to make rounding to stay total aligned, please pass the total of Invoice including all taxes. 
 
- Name
- DocumentCurrencyCode
- Type
- string: mandatory (3 chars)
- Description
- Currency in which Invoice was issued. Default value: - MYR. Please see the list of currency code in LHDN Documentation
 
- Name
- TaxExchangeRate
- Type
- string: mandatory if applicable
- Description
- Rate at which non-Malaysian currency will be converted into Malaysian Ringgit. This is required when DocumentCurrencyCode is not - MYR
 
- Name
- InvoiceDocumentReference
- Type
- array: mandatory if applicable
- Description
- In case of Self-Billed Credit Note, Debit Note and Refund Note, it is mandatory to reference which that dodcument relates to. - UUID mandatory: IRBM Unique Identifier Number of the Invoice to which this credit note refers to.
- InternalID  mandatory: Internal ID / e-Invoice Code / Number to which this credit note belongs to.
 - "InvoiceDocumentReference": [{ "UUID": "71E88663PY17SQ9JZ48NYM0J10", "InternalID": "INV12345" }]
- UUID 
 
- Name
- Discounts
- Type
- array: optional
- Description
- Document level discounts need to be shown here. It is an optional tag and can be skipped if there is no discounts involved. 
 
- Name
- Charges
- Type
- array: optional
- Description
- Document level charges or fees need to be shown here. It is an optional tag and can be skipped if there is no charges involved. 
 
- Name
- Prepayments
- Type
- array: optional
- Description
- Prepayments related this specific invoice need to me mentioned here. It is an optional tag. - [{ "PaymentID": "REC1012", "Amount": 100, "Date": "2024-01-10", "Time": "12:00:00Z", }]
 
- Name
- CustomsImportForm
- Type
- string: mandatory if applicable
- Description
- Unique identifier assigned on the Declaration of Goods Imported.The input of special characters is not allowed. (limit: 19 chars) 
 
- Name
- Incoterms
- Type
- string: optional
- Description
- A set of international trade rules that define the responsibilities of buyers and suppliers.The input of special characters is not allowed. (limit: 3 chars) 
 
- Name
- SupplierParty
- Type
- strcut: mandatory
- Description
- Details of supplier against whom which the document is being issued. - LegalName  string: mandatory (limit: 300 chars): Official name of Supplier
- SupplierTIN string: mandatory (limit: 14 chars): TIN Number of Supplier
 - EI00000000010- For General Public
- EI00000000030- Foreign Supplier’s TIN
 - Any one of the below is mandatory
 - tag - description - SupplierBRN - Valid BRN if Supplier is a Business - SupplierNRIC - Valid NRIC (MyKad/MyKAS/MyPR) if its an Individual - SupplierPassport - Valid Passport ID if Supplier is a Non-Malaysian - SupplierArmyID - Valid MyTentera ID if Supplier is having one - SupplierSST string: optional (limit: 35 chars): If they are SST Registered
- CityName string: mandatory (limit: 300 chars): City of Supplier
- AddressLines[] mandatory: min 1, max 3: Address Details of the Supplier. One line is mandatory. Provide 'NA' if not recognizable.
- CountrySubentityCode string: mandatory (2 chars): Subentity Code from authority.17can be given if not applicable in case of foreign buyers. Please refer LHDN Documentation
- CountryCode string: mandatory (3 chars): Country of Supplier. For codes, please refer LHDN Documentation
- Telephone string: mandatory (limit: 20 chars): Contact Number of Supplier.
- MSICCode string: mandatory (5 chars): MSCIC Code of Supplier. You can provide00000if not available.
- Industry string: mandatory (limit: 300 chars): Industry of the supplier.
- Email string: optional (limit: 300 chars): Email Address of Supplier
 
- LegalName  
 
- Name
- DeliveryDetails
- Type
- strcut: optional
- Description
- Details of receipient to which this Invoice is being delivered to. - RecipientName  string: mandatory (limit: 300 chars): Official name of receipient
- RecipientTIN string: mandatory (limit: 14 chars): TIN Number of receipient
- Any one of the below is mandatory
 - tag - description - RecipientBRN - Valid BRN if Customer is a Business - RecipientNRIC - Valid NRIC (MyKad/MyKAS/MyPR) if its an Individual - RecipientPassport - Valid Passport ID if Customer is a Non-Malaysian - RecipientArmyID - Valid MyTentera ID if Customer is having one - RecipientSST string: optional (limit: 35 chars): If they are SST Registered
- CityName string: mandatory (limit: 300 chars): City of receipient
- AddressLines[] mandatory: min 1, max 3: Address Details of the receipient. One line is mandatory. Provide 'NA' if not recognizable.
- CountrySubentityCode string: mandatory (2 chars): Subentity Code from authority.17can be given if not applicable in case of foreign buyers. Please refer LHDN Documentation
- CountryCode string: mandatory (3 chars): Country of receipient. For codes, please refer LHDN Documentation
- ShipmentID string: optional (limit: 50 chars): Shipping ID if any.
- ShipmentCharges array: optional[if given, at least one]: Amount and Reason of such a charge need to be given.
 
- RecipientName  
 
- Name
- InvoiceLines
- Type
- array: mandatory
- Description
- Details of line items in the document as an array. At least one item is mandatory in an Invoice. Each elemnt in this array must have: - Description string: mandatory (limit: 300 chars): Item Name
- InvoicedQuantity number: mandatory: Quantity of Items
- UOM string: optional: Default: "C62". If you want to specify, then you can use any of the code given in: (https://sdk.myinvois.hasil.gov.my/codes/unit-types/)
- PriceAmount number: mandatory: Unit Price of Items
- LineTaxes array: mandatory: Taxes in each Line item
 - TaxType enum: mandatory: Fixed codes as per: (https://sdk.myinvois.hasil.gov.my/files/TaxTypes.json)
 - code - description - 01 - Sales Tax - 02 - Service Tax - 03 - Tourism Tax - 04 - High-Value Goods Tax - 05 - Sales Tax on Low Value Goods - 06 - Not Applicable - E - Tax exemption (where applicable) - TaxExemptionReason string: mandatory if applicable: If TaxType is 'E', then TaxExemptionReason is mandatory.
- TaxRate number: optional: 0.10 for 10% of Tax Rate [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
- TaxBaseUnit number: optional: Units that have Tax applied [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
- TaxPerUnit number: mandatory: Per unit tax to be considered [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
 - [ { "TaxType": "01", "TaxBaseUnit": 1, "TaxPerUnit": 10 }, { "TaxType": "E", "TaxRate": 0, "TaxExemptionReason": "Exempt New Means of Transport" } ]- ClassificationCode array: mandatory ([] each has limit of: 3 chars): The 3 digit number of classification. Please refer LHDN Documentation
- Discounts array: optional: Line item level discounts need to be passed here. It is an optional tag and can be skipped if there is no discounts involved.
- Charges array: optional: Line item level charges/fees need to be passed here. It is an optional tag and can be skipped if there is no charges/fees involved.
 - Both Discounts and Charges Should have the schema as specified below: - [{ "Amount": 100, // Amount to be adjusted from line total "Reason": "Discount / Item Service Fee", // Reason text }]
- Description 
 
Both Discounts and Charges Should have the schema as specified below:
 [{
   "Amount": 100, // Amount to be adjusted from total txable
   "Reason": "Flat Discount / Service Fee Charged", // Reason
 }]
Sample Request
curl --url https://sandbox-my.flick.network/api/einvoice/generate/self-billed-invoice \
  --header 'x-flick-auth-key: {token}' \
  --header 'supplier_uuid: {supplier_uuid}' \
  --header 'transport_mode: peppol' \
  --header 'Content-Type: application/json' \
  --data '
     {
      "ID": "SBINV-14003",
      "IssueDate": "2024-07-17",
      "IssueTime": "01:40:00Z",
      "InvoiceTypeCode": "11",
      "DocumentCurrencyCode": "USD",
      "TaxExchangeRate": 4.75,
      "CustomsImportForm": "1312312",
      "Incoterms": "CIF",
      "SupplierParty": {
        "LegalName": "Amazon Inc",
        "SupplierTIN": "EI00000000030",
        "SupplierBRN": "NA",
        "CityName": "Seattle",
        "PostalZone": "50000",
        "CountrySubentityCode": "17",
        "AddressLines": [
          "National Landing",
          "Crystal City",
          "Virginia"
        ],
        "CountryCode": "USA",
        "Telephone": "+60-123456789",
        "MSICCode": "46413",
        "Industry": "Wholesale of clothing"
      },
      "PaymentMeansCode": "01",
      "InvoiceLines": [
        {
          "Description": "Item 2",
          "InvoicedQuantity": 1,
          "PriceAmount": 50000,
          "LineTaxes":  [
            {
              "TaxType": "01",
              "TaxBaseUnit": 1,
              "TaxPerUnit": 10
            },
            {
              "TaxType": "E",
              "TaxRate": 0,
              "TaxExemptionReason": "Exempt New Means of Transport"
            }
          ],
          "ClassificationCode": ["001", "002", "003"]
        }
      ]
    }'
Sample Response
{
  "status": "submitted",
  "data": {
    "submissionResponse": {
      "submissionUid": "GJ49979N7RCV2KAXDCH6ZK0J10",
      "acceptedDocuments": [
        {
          "uuid": "FRSS37P7NSM94970DCH6ZK0J10",
          "invoiceCodeNumber": "INV12345"
        }
      ],
      "rejectedDocuments": []
    }
  }
}
Self-Billed Invoices in Bulk
To submit multiple Self-Billed E-Invoice, this endpoint can be used along with the Supplier UUID to which it belongs to. Specify transport_mode for proper delivery of the document.
Request Body
The body of request should be an array of Documents. Each document should have the below schema.
- Name
- ID
- Type
- string: mandatory (limit: 50 chars)
- Description
- Unique Invoice Reference Number. This should be made in sequence. 
 
- Name
- IssueDate
- Type
- date: mandatory, schema: YYYY-MM-DD
- Description
- Date on which the invoice was issued. 
 
- Name
- IssueTime
- Type
- time: mandatory, schema: HH-MM-ssZ
- Description
- Time at which the invoice was issued. Keep it in UTC format. 
 
- Name
- InvoiceTypeCode
- Type
- enum: mandatory
- Description
- Document Type to be specified. - enum - description - 11 - Self-Billed Invoice - 12 - Self-Billed Credit Note - 13 - Self-Billed Debit Note - 14 - Self-Billed Refund Note 
 
- Name
- InvoiceTotal
- Type
- number: optional
- Description
- If you want to make rounding to stay total aligned, please pass the total of Invoice including all taxes. 
 
- Name
- DocumentCurrencyCode
- Type
- string: mandatory (3 chars)
- Description
- Currency in which Invoice was issued. Default value: - MYR. Please see the list of currency code in LHDN Documentation
 
- Name
- TaxExchangeRate
- Type
- string: mandatory if applicable
- Description
- Rate at which non-Malaysian currency will be converted into Malaysian Ringgit. This is required when DocumentCurrencyCode is not - MYR
 
- Name
- InvoiceDocumentReference
- Type
- array: mandatory if applicable
- Description
- In case of Self-Billed Credit Note, Debit Note and Refund Note, it is mandatory to reference which that dodcument relates to. - UUID mandatory: IRBM Unique Identifier Number of the Invoice to which this credit note refers to.
- InternalID  mandatory: Internal ID / e-Invoice Code / Number to which this credit note belongs to.
 - "InvoiceDocumentReference": [{ "UUID": "71E88663PY17SQ9JZ48NYM0J10", "InternalID": "INV12345" }]
- UUID 
 
- Name
- Discounts
- Type
- array: optional
- Description
- Document level discounts need to be shown here. It is an optional tag and can be skipped if there is no discounts involved. 
 
- Name
- Charges
- Type
- array: optional
- Description
- Document level charges or fees need to be shown here. It is an optional tag and can be skipped if there is no charges involved. 
 
- Name
- Prepayments
- Type
- array: optional
- Description
- Prepayments related this specific invoice need to me mentioned here. It is an optional tag. - [{ "PaymentID": "REC1012", "Amount": 100, "Date": "2024-01-10", "Time": "12:00:00Z", }]
 
- Name
- CustomsImportForm
- Type
- string: mandatory if applicable
- Description
- Unique identifier assigned on the Declaration of Goods Imported.The input of special characters is not allowed. (limit: 19 chars) 
 
- Name
- Incoterms
- Type
- string: optional
- Description
- A set of international trade rules that define the responsibilities of buyers and suppliers.The input of special characters is not allowed. (limit: 3 chars) 
 
- Name
- SupplierParty
- Type
- strcut: mandatory
- Description
- Details of supplier against whom which the document is being issued. - LegalName  string: mandatory (limit: 300 chars): Official name of Supplier
- SupplierTIN string: mandatory (limit: 14 chars): TIN Number of Supplier
 - EI00000000010- For General Public
- EI00000000030- Foreign Supplier’s TIN
 - Any one of the below is mandatory
 - tag - description - SupplierBRN - Valid BRN if Supplier is a Business - SupplierNRIC - Valid NRIC (MyKad/MyKAS/MyPR) if its an Individual - SupplierPassport - Valid Passport ID if Supplier is a Non-Malaysian - SupplierArmyID - Valid MyTentera ID if Supplier is having one - SupplierSST string: optional (limit: 35 chars): If they are SST Registered
- CityName string: mandatory (limit: 300 chars): City of Supplier
- AddressLines[] mandatory: min 1, max 3: Address Details of the Supplier. One line is mandatory. Provide 'NA' if not recognizable.
- CountrySubentityCode string: mandatory (2 chars): Subentity Code from authority.17can be given if not applicable in case of foreign buyers. Please refer LHDN Documentation
- CountryCode string: mandatory (3 chars): Country of Supplier. For codes, please refer LHDN Documentation
- Telephone string: mandatory (limit: 20 chars): Contact Number of Supplier.
- MSICCode string: mandatory (5 chars): MSCIC Code of Supplier. You can provide00000if not available.
- Industry string: mandatory (limit: 300 chars): Industry of the supplier.
- Email string: optional (limit: 300 chars): Email Address of Supplier
 
- LegalName  
 
- Name
- DeliveryDetails
- Type
- strcut: optional
- Description
- Details of receipient to which this Invoice is being delivered to. - RecipientName  string: mandatory (limit: 300 chars): Official name of receipient
- RecipientTIN string: mandatory (limit: 14 chars): TIN Number of receipient
- Any one of the below is mandatory
 - tag - description - RecipientBRN - Valid BRN if Customer is a Business - RecipientNRIC - Valid NRIC (MyKad/MyKAS/MyPR) if its an Individual - RecipientPassport - Valid Passport ID if Customer is a Non-Malaysian - RecipientArmyID - Valid MyTentera ID if Customer is having one - RecipientSST string: optional (limit: 35 chars): If they are SST Registered
- CityName string: mandatory (limit: 300 chars): City of receipient
- AddressLines[] mandatory: min 1, max 3: Address Details of the receipient. One line is mandatory. Provide 'NA' if not recognizable.
- CountrySubentityCode string: mandatory (2 chars): Subentity Code from authority.17can be given if not applicable in case of foreign buyers. Please refer LHDN Documentation
- CountryCode string: mandatory (3 chars): Country of receipient. For codes, please refer LHDN Documentation
- ShipmentID string: optional (limit: 50 chars): Shipping ID if any.
- ShipmentCharges array: optional[if given, at least one]: Amount and Reason of such a charge need to be given.
 
- RecipientName  
 
- Name
- InvoiceLines
- Type
- array: mandatory
- Description
- Details of line items in the document as an array. At least one item is mandatory in an Invoice. Each elemnt in this array must have: - Description string: mandatory (limit: 300 chars): Item Name
- InvoicedQuantity number: mandatory: Quantity of Items
- UOM string: optional: Default: "C62". If you want to specify, then you can use any of the code given in: (https://sdk.myinvois.hasil.gov.my/codes/unit-types/)
- PriceAmount number: mandatory: Unit Price of Items
- LineTaxes array: mandatory: Taxes in each Line item
 - TaxType enum: mandatory: Fixed codes as per: (https://sdk.myinvois.hasil.gov.my/files/TaxTypes.json)
 - code - description - 01 - Sales Tax - 02 - Service Tax - 03 - Tourism Tax - 04 - High-Value Goods Tax - 05 - Sales Tax on Low Value Goods - 06 - Not Applicable - E - Tax exemption (where applicable) - TaxExemptionReason string: mandatory if applicable: If TaxType is 'E', then TaxExemptionReason is mandatory.
- TaxRate number: optional: 0.10 for 10% of Tax Rate [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
- TaxBaseUnit number: optional: Units that have Tax applied [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
- TaxPerUnit number: mandatory: Per unit tax to be considered [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
 - [ { "TaxType": "01", "TaxBaseUnit": 1, "TaxPerUnit": 10 }, { "TaxType": "E", "TaxRate": 0, "TaxExemptionReason": "Exempt New Means of Transport" } ]- ClassificationCode array: mandatory ([] each has limit of: 3 chars): The 3 digit number of classification. Please refer LHDN Documentation
- Discounts array: optional: Line item level discounts need to be passed here. It is an optional tag and can be skipped if there is no discounts involved.
- Charges array: optional: Line item level charges/fees need to be passed here. It is an optional tag and can be skipped if there is no charges/fees involved.
 - Both Discounts and Charges Should have the schema as specified below: - [{ "Amount": 100, // Amount to be adjusted from line total "Reason": "Discount / Item Service Fee", // Reason text }]
- Description 
 
Both Discounts and Charges Should have the schema as specified below:
 [{
   "Amount": 100, // Amount to be adjusted from total txable
   "Reason": "Flat Discount / Service Fee Charged", // Reason
 }]
Sample Request
curl --url https://sandbox-my.flick.network/api/einvoice/generate/self-billed/bulk \
  --header 'x-flick-auth-key: {token}' \
  --header 'supplier_uuid: {supplier_uuid}' \
  --header 'transport_mode: peppol' \
  --header 'Content-Type: application/json' \
  --data '
     [{
      "ID": "SBINV-14003",
      "IssueDate": "2024-07-17",
      "IssueTime": "01:40:00Z",
      "InvoiceTypeCode": "11",
      "DocumentCurrencyCode": "USD",
      "TaxExchangeRate": 4.75,
      "CustomsImportForm": "1312312",
      "Incoterms": "CIF",
      "SupplierParty": {
        "LegalName": "Amazon Inc",
        "SupplierTIN": "EI00000000030",
        "SupplierBRN": "NA",
        "CityName": "Seattle",
        "PostalZone": "50000",
        "CountrySubentityCode": "17",
        "AddressLines": [
          "National Landing",
          "Crystal City",
          "Virginia"
        ],
        "CountryCode": "USA",
        "Telephone": "+60-123456789",
        "MSICCode": "46413",
        "Industry": "Wholesale of clothing"
      },
      "PaymentMeansCode": "01",
      "InvoiceLines": [
        {
          "Description": "Item 2",
          "InvoicedQuantity": 1,
          "PriceAmount": 50000,
          "LineTaxes":  [
            {
              "TaxType": "01",
              "TaxBaseUnit": 1,
              "TaxPerUnit": 10
            },
            {
              "TaxType": "E",
              "TaxRate": 0,
              "TaxExemptionReason": "Exempt New Means of Transport"
            }
          ],
          "ClassificationCode": ["001", "002", "003"]
        }
      ]
    }]'
Sample Response
{
  "status": "submitted",
  "data": {
    "submissionResponse": {
      "submissionUid": "GJ49979N7RCV2KAXDCH6ZK0J10",
      "acceptedDocuments": [
        {
          "uuid": "FRSS37P7NSM94970DCH6ZK0J10",
          "invoiceCodeNumber": "INV12345"
        }
      ],
      "rejectedDocuments": []
    }
  }
}
Report Consolidated SB Invoices
To Generate a consolidated Self-Billed Document, this endpoint can be used along with the Supplier UUID to which it belongs to. Specify transport_mode for proper delivery of the document.
Request Body
- Name
- ID
- Type
- string: mandatory (limit: 50 chars)
- Description
- Unique Invoice Reference Number. This should be made in sequence. 
 
- Name
- IssueDate
- Type
- date: mandatory, schema: YYYY-MM-DD
- Description
- Date on which the invoice was issued. 
 
- Name
- IssueTime
- Type
- time: mandatory, schema: HH-MM-ssZ
- Description
- Time at which the invoice was issued. Keep it in UTC format. 
 
- Name
- InvoiceTypeCode
- Type
- enum: mandatory
- Description
- Document Type to be specified. - enum - description - 11 - Self-Billed Invoice - 12 - Self-Billed Credit Note - 13 - Self-Billed Debit Note - 14 - Self-Billed Refund Note 
 
- Name
- InvoiceTotal
- Type
- number: optional
- Description
- If you want to make rounding to stay total aligned, please pass the total of Invoice including all taxes. 
 
- Name
- DocumentCurrencyCode
- Type
- string: mandatory (3 chars)
- Description
- Currency in which Invoice was issued. Default value: - MYR. Please see the list of currency code in LHDN Documentation
 
- Name
- TaxExchangeRate
- Type
- string: mandatory if applicable
- Description
- Rate at which non-Malaysian currency will be converted into Malaysian Ringgit. This is required when DocumentCurrencyCode is not - MYR
 
- Name
- InvoiceDocumentReference
- Type
- array: mandatory if applicable
- Description
- In case of Self-Billed Credit Note, Debit Note and Refund Note, it is mandatory to reference which that dodcument relates to. - UUID mandatory: IRBM Unique Identifier Number of the Invoice to which this credit note refers to.
- InternalID  mandatory: Internal ID / e-Invoice Code / Number to which this credit note belongs to.
 - "InvoiceDocumentReference": [{ "UUID": "71E88663PY17SQ9JZ48NYM0J10", "InternalID": "INV12345" }]
- UUID 
 
- Name
- Discounts
- Type
- array: optional
- Description
- Document level discounts need to be shown here. It is an optional tag and can be skipped if there is no discounts involved. 
 
- Name
- Charges
- Type
- array: optional
- Description
- Document level charges or fees need to be shown here. It is an optional tag and can be skipped if there is no charges involved. 
 
- Name
- Prepayments
- Type
- array: optional
- Description
- Prepayments related this specific invoice need to me mentioned here. It is an optional tag. - [{ "PaymentID": "REC1012", "Amount": 100, "Date": "2024-01-10", "Time": "12:00:00Z", }]
 
- Name
- CustomsImportForm
- Type
- string: mandatory if applicable
- Description
- Unique identifier assigned on the Declaration of Goods Imported.The input of special characters is not allowed. (limit: 19 chars) 
 
- Name
- Incoterms
- Type
- string: optional
- Description
- A set of international trade rules that define the responsibilities of buyers and suppliers.The input of special characters is not allowed. (limit: 3 chars) 
 
- Name
- SupplierParty
- Type
- strcut: mandatory
- Description
- Details of supplier against whom which the document is being issued. - LegalName  string: mandatory (limit: 300 chars): Official name of Supplier
- SupplierTIN string: mandatory (limit: 14 chars): TIN Number of Supplier
 - EI00000000010- For General Public
 - SupplierBRN string: mandatory (limit: 14 chars): NA Can be given for General Public
- CityName string: mandatory (limit: 300 chars): NA Can be given for General Public
- AddressLines[] mandatory: min 1, max 3: NA Can be given for General Public
- CountrySubentityCode string: mandatory (2 chars): Subentity Code from authority.17can be given if not applicable in case of foreign buyers. Please refer LHDN Documentation
- CountryCode string: mandatory (3 chars): Country of Supplier. For codes, please refer LHDN Documentation
- Telephone string: mandatory (limit: 20 chars): Contact Number of Supplier.
- MSICCode string: mandatory (5 chars): MSCIC Code of Supplier. You can provide00000if not available.
- Industry string: mandatory (limit: 300 chars): Industry of the supplier, NA if not available.
 
- LegalName  
 
- Name
- InvoiceLines
- Type
- array: mandatory
- Description
- Details of line items in the document as an array. At least one item is mandatory in an Invoice. Each elemnt in this array must have: - Description string: mandatory (limit: 300 chars): Item Name
- InvoicedQuantity number: mandatory: Quantity of Items
- UOM string: optional: Default: "C62". If you want to specify, then you can use any of the code given in: (https://sdk.myinvois.hasil.gov.my/codes/unit-types/)
- PriceAmount number: mandatory: Unit Price of Items
- LineTaxes array: mandatory: Taxes in each Line item
 - TaxType enum: mandatory: Fixed codes as per: (https://sdk.myinvois.hasil.gov.my/files/TaxTypes.json)
 - code - description - 01 - Sales Tax - 02 - Service Tax - 03 - Tourism Tax - 04 - High-Value Goods Tax - 05 - Sales Tax on Low Value Goods - 06 - Not Applicable - E - Tax exemption (where applicable) - TaxExemptionReason string: mandatory if applicable: If TaxType is 'E', then TaxExemptionReason is mandatory.
- TaxRate number: optional: 0.10 for 10% of Tax Rate [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
- TaxBaseUnit number: optional: Units that have Tax applied [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
- TaxPerUnit number: mandatory: Per unit tax to be considered [Either TaxRate or TaxBaseUnit & TaxPerUnit together].
 - [ { "TaxType": "01", "TaxBaseUnit": 1, "TaxPerUnit": 10 }, { "TaxType": "E", "TaxRate": 0, "TaxExemptionReason": "Exempt New Means of Transport" } ]- ClassificationCode array: mandatory ([] each has limit of: 3 chars): The 3 digit number of classification. Please refer LHDN Documentation
- Discounts array: optional: Line item level discounts need to be passed here. It is an optional tag and can be skipped if there is no discounts involved.
- Charges array: optional: Line item level charges/fees need to be passed here. It is an optional tag and can be skipped if there is no charges/fees involved.
 - Both Discounts and Charges Should have the schema as specified below: - [{ "Amount": 100, // Amount to be adjusted from line total "Reason": "Discount / Item Service Fee", // Reason text }]
- Description 
 
Both Discounts and Charges Should have the schema as specified below:
 [{
   "Amount": 100, // Amount to be adjusted from total txable
   "Reason": "Flat Discount / Service Fee Charged", // Reason
 }]
Sample Request
curl --url https://sandbox-my.flick.network/api/einvoice/generate/self-billed/consolidated \
  --header 'x-flick-auth-key: {token}' \
  --header 'supplier_uuid: {supplier_uuid}' \
  --header 'transport_mode: peppol' \
  --header 'Content-Type: application/json' \
  --data '
    {
      "ID": "CR12345",
      "InvoiceDocumentReference": {
        "UUID": "71E88663PY17SQ9JZ48NYM0J10",
        "InternalID": "INV12345"
      },
      "IssueDate": "2024-01-26",
      "IssueTime": "15:30:00Z",
      "InvoiceTypeCode": "12",
      "DocumentCurrencyCode": "MYR",
      "CustomerParty": {
        "LegalName": "General Public",
        "CustomerTIN": "EI00000000010",
        "CustomerBRN":"NA",
        "CityName": "NA",
        "PostalZone": "NA",
        "CountrySubentityCode": "17",
        "AddressLines": [
          "NA"
        ],
        "CountryCode": "MYS",
        "Telephone": "NA"
      },
      "InvoiceLines": [
        {
          "Description": "INV-1",
          "InvoicedQuantity": 1,
          "PriceAmount": 50000,
          "LineTaxes":  [
            {
              "TaxType": "01",
              "TaxBaseUnit": 1,
              "TaxPerUnit": 10
            },
            {
              "TaxType": "E",
              "TaxRate": 0,
              "TaxExemptionReason": "Exempt New Means of Transport"
            }
          ],
          "ClassificationCode": ["001", "002", "003"]
        }
      ]
    }'
Sample Response
{
  "status": "submitted",
  "data": {
    "submissionResponse": {
      "submissionUid": "GJ49979N7RCV2KAXDCH6ZK0J10",
      "acceptedDocuments": [
        {
          "uuid": "FRSS37P7NSM94970DCH6ZK0J10",
          "invoiceCodeNumber": "INV12345"
        }
      ],
      "rejectedDocuments": []
    }
  }
}
Get Document Details from LHDN
This API endpoint allows users to query LHDN system and return details of a particular Document submitted.
GET Request Parameters
- Name
- uuid
- Type
- string
- Description
- UUID issued by LHDN for the document 
 
Sample Request
curl 
  --url https://sandbox-my.flick.network/api/einvoice/get-document/{uuid} \
  --header 'x-flick-auth-key: {token}' \
  --header 'supplier_uuid: {supplier_uuid}' 
Sample Response
{
  "uuid": "T9Z4ZES3SQFESQ0P3N4FXA1J10",
  "submissionUid": "74980SSDSHF87KD33N4FXA1J10",
  "longId": "EEXA83PNNMJADQPH3N4FXA1J10MoVOEi1719427109",
  "typeName": "Self-billed Invoice",
  "typeVersionName": "Version 1",
  "issuerTin": "C51231412",
  "issuerName": "Demo Company SDN. BHD",
  "receiverId": "C23234234",
  "receiverName": "Demo Receiver SDN. BHD",
  "dateTimeReceived": "2024-06-26T18:38:29Z",
  "dateTimeValidated": "2024-06-26T18:38:32Z",
  "totalExcludingTax": 120,
  "totalDiscount": 0,
  "totalNetAmount": 120,
  "totalPayableAmount": 127.2,
  "status": "Valid",
  "createdByUserId": "C58715578070:67876c24-b8bf-4336-ae4a-de5cccffe00f",
  "documentStatusReason": null,
  "cancelDateTime": null,
  "rejectRequestDateTime": null,
  "validationResults": {
    "status": "Valid",
    "validationSteps": [
      {
        "status": "Valid",
        "name": "Step03-Duplicated Submission Validator"
      },
      {
        "status": "Valid",
        "name": "Step-07. Code Field Validator"
      },
      {
        "status": "Valid",
        "name": "Step14-Taxpayer Profile Validator"
      }
    ]
  },
  "internalId": "SBINV-14003",
  "dateTimeIssued": "2024-06-25T17:40:00Z",
  "data": {
      "ID": "SBINV-14003",
      "IssueDate": "2024-07-17",
      "IssueTime": "01:40:00Z",
      "InvoiceTypeCode": "11",
      "DocumentCurrencyCode": "USD",
      "TaxExchangeRate": 4.75,
      "CustomsImportForm": "1312312",
      "Incoterms": "CIF",
      "SupplierParty": {
        "LegalName": "Amazon Inc",
        "SupplierTIN": "EI00000000030",
        "SupplierBRN": "NA",
        "CityName": "Seattle",
        "PostalZone": "50000",
        "CountrySubentityCode": "17",
        "AddressLines": [
          "National Landing",
          "Crystal City",
          "Virginia"
        ],
        "CountryCode": "USA",
        "Telephone": "+60-123456789",
        "MSICCode": "46413",
        "Industry": "Wholesale of clothing"
      },
      "PaymentMeansCode": "01",
      "InvoiceLines": [
        {
          "Description": "Item 1",
          "InvoicedQuantity": 1,
          "PriceAmount": 120,
          "LineTaxes":  [
            {
              "TaxType": "01",
              "TaxBaseUnit": 1,
              "TaxPerUnit": 10
            },
            {
              "TaxType": "E",
              "TaxRate": 0,
              "TaxExemptionReason": "Exempt New Means of Transport"
            }
          ],
          "ClassificationCode": ["001", "002", "003"]
        }
      ]
    },
  "qrCode": "iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAYAAAA9zQYyAAAAAklEQVR4AewaftIAAAdnSURBVO3BQY4kR5IAQVVH/f/Lun0b20sAgcxqkg4TsT9Y6xKHtS5yWOsih7UucljrIoe1LnJY6yKHtS5yWOsih7UucljrIoe1LnJY6yKHtS5yWOsih7Uu8sOHVP6miicqU8Wk8kbFpPKkYlKZKp6oTBVPVN6omFSmiknlb6r4xGGtixzWushhrYv88GUV36TyROWNiknljYpJ5ZsqJpU3KiaVJxVvVHyTyjcd1rrIYa2LHNa6yA+/TOWNijcqJpUnKk8qJpUnFW+oTBVvVEwqb6hMFZ9QeaPiNx3WushhrYsc1rrID+v/UXlS8UbFE5Wp4onKVLH+57DWRQ5rXeSw1kV++I9TeaLyiYpPqDypmFTeUJkq3lCZKv7LDmtd5LDWRQ5rXeSHX1bxmyqeqEwVk8pUMak8qZhUpopJZVKZKiaVN1SmikllqvhExb/JYa2LHNa6yGGti/zwZSp/k8pU8ZsqJpWpYlKZKiaVNyomlaliUpkqJpWp4onKv9lhrYsc1rrIYa2L2B9cROXfrGJSmSp+k8qTiv+yw1oXOax1kcNaF7E/+IDKVDGpTBWTylQxqUwVb6hMFZPKVPGGylQxqTyp+ITKGxXfpDJVPFGZKr7psNZFDmtd5LDWRewPvkjlmyqeqHxTxROVJxWTypOKN1SeVDxReaPiN6lMFZ84rHWRw1oXOax1kR9+WcWkMlU8UXlS8ZtU3lCZKj6h8k0Vk8pUMan8lxzWushhrYsc1rqI/cG/iMpU8UTlScWkMlVMKlPFE5UnFZPKVDGpTBVPVD5RMalMFU9UnlRMKlPFNx3WushhrYsc1rrIDx9SeaNiUpkqJpUnFW9UTCpvqEwVk8qTiknlDZWpYlKZKp6oPFF5UvEJlaniE4e1LnJY6yKHtS7yw4cqnqi8oTJVTCqfUJkq3qiYVKaK31QxqUwVk8pU8aRiUpkqPlHxmw5rXeSw1kUOa13E/uBfROVJxROVqWJSeVIxqUwVT1Smik+oTBVPVKaKN1TeqHiiMlVMKlPFJw5rXeSw1kUOa13khw+pfKLiScWk8qTin1TxhsobKlPFJ1SmijdUpoqpYlL5TYe1LnJY6yKHtS7yw5dVPFF5UjGpTBWTyqTyCZUnKlPFN1VMKk9U3lD5TSpTxVTxmw5rXeSw1kUOa13E/uADKm9U/CaVqWJSeVLxRGWqeEPlmyreUJkqJpU3KiaVJxWTylTxicNaFzmsdZHDWhf54R+m8omKT1S8UfGbKiaVqWJSmSomlTcqJpWpYlKZKp6o/KbDWhc5rHWRw1oXsT/4gMpUMalMFZPKk4pJ5RMVT1TeqJhUnlRMKp+omFT+popJZaqYVKaKbzqsdZHDWhc5rHWRH75M5YnKVDGpTCpPKiaVN1SeVHyiYlJ5o+KJypOKJypvVDypmFSmit90WOsih7UucljrIj/8w1SeVEwqTyomlU+oPKl4ojJVTCpTxaQyVTyp+E0qU8WkMlVMKk8qPnFY6yKHtS5yWOsiP3xZxSdUJpUnKlPFVPFGxROVSWWqmFTeUJkqnlT8m1RMKlPFbzqsdZHDWhc5rHUR+4NfpPKkYlKZKiaVNyomlU9UTCpvVEwqU8UbKm9UPFGZKp6oTBVPVKaKbzqsdZHDWhc5rHWRHz6kMlVMFU9UpopJZar4J6k8qZhUJpWp4g2VJxWTym+qmFSmir/psNZFDmtd5LDWRX74UMUbKm9UPFGZKv7LVKaKqeKNit+kMlW8oTJVfOKw1kUOa13ksNZFfviQylQxqXxCZap4ovJGxaQyVUwqn6h4Q+WNikllqphUnqhMFW+o/E2HtS5yWOsih7UuYn/wRSpPKj6hMlVMKlPFpDJVTCpPKiaVT1RMKr+p4ptUpop/0mGtixzWushhrYv88CGVqeKJym+qeENlqphUJpWpYlJ5UjGpPKmYVN6oeKLyN6k8qfjEYa2LHNa6yGGti/zwoYo3Kr5J5Y2KSeWbKt6omFSeVEwqU8UnKt5QmVSmiqliUvmmw1oXOax1kcNaF/nhQyp/U8VU8UTlExWTyhOVqeKJylQxqUwVn1B5Q2Wq+KaKbzqsdZHDWhc5rHWRH76s4ptUvkllqphUnlRMKlPFE5UnKp9QmSqmiknlScVvUpkqPnFY6yKHtS5yWOsiP/wylTcq3lB5o2JS+UTFN1VMKp9QmSqeqPyXHda6yGGtixzWusgP/3EVk8pUMak8qXiiMlVMKlPFN6k8qXiiMlW8ofKk4onKbzqsdZHDWhc5rHWRH/7jVKaKSeUNlaliqnhSMal8U8WkMqlMFVPFpPKkYqqYVN6omFS+6bDWRQ5rXeSw1kV++GUVv6liUnmj4onKk4onFU9UJpXfpDJVvKHyCZWp4psOa13ksNZFDmtd5IcvU/mbVD6h8qTiicqTiknljYpJZaqYVD6h8qTiDZUnKlPFJw5rXeSw1kUOa13E/mCtSxzWushhrYsc1rrIYa2LHNa6yGGtixzWushhrYsc1rrIYa2LHNa6yGGtixzWushhrYsc1rrI/wFKk7qmDdchaQAAAABJRU5ErkJggg=="
}
Cancel a Document
This endpoint allows you to cancel an already issued E-Document.
Request Body
- Name
- uuid
- Type
- string: mandatory
- Description
- UUID of the document that you want to cancel. 
 
- Name
- status
- Type
- enum: mandatory
- Description
- Desired status for the document. Must be "cancelled" always to cancel previously issued document, be it usual or self-billed. 
 
- Name
- reason
- Type
- string: string (limit: 300 chars)
- Description
- Reason for cancelling the document. 
 
Sample Request
curl 
  --url https://sandbox-my.flick.network/api/einvoice/cancel \
  --header 'x-flick-auth-key: {token}' \
  --header 'supplier_uuid: {supplier_uuid}' \
  --header 'Content-Type: application/json' \
  --data '
  {
    "uuid": "5YS7R96D4X110AS9HCD8D13J10",
    "status": "cancelled",
    "reason": "Wrong buyer details"
  }'
Sample Response
{
  "status": "success",
  "data": {
    "uuid": "5YS7R96D4X1S0AS9HCD8D13J10",
    "status": "Cancelled"
  }
}
Get Invoices from Suppliers
This API endpoint allows users to query LHDN system and return list of documents that have been recently issued against them.
System limits the number of the documents that can be received in one request by implementing paging mechanism for this API and also by not allowing to request documents that are issued more than 30 days ago.
GET Request Parameters
- Name
- pageNo
- Type
- number (optional)
- Description
- Number of the page to retrieve. Typically this parameter value is derived from initial parameter less call when caller learns total amount of page of certain size 
 
- Name
- pageSize
- Type
- number (optional)
- Description
- Number of the documents to retrieve per page. Page size cannot exceed system configured maximum page size for this API 
 
- Name
- submissionDateFrom
- Type
- date (optional)
- Description
- The start date and time when the document was submitted to the e-Invoice API, Time to be supplied in UTC timezone. Mandatory when ‘submissionDateTo’ is provided. 
 
- Name
- submissionDateTo
- Type
- date (optional)
- Description
- The end date and time when the document was submitted to the e-Invoice API, Time to be supplied in UTC timezone. Mandatory when ‘submissionDateFrom’ is provided 
 
- Name
- issueDateFrom
- Type
- date (optional)
- Description
- The start date and time when the document was issued. Mandatory when ‘issueDateTo’ is provided 
 
- Name
- issueDateTo
- Type
- date (optional)
- Description
- The end date and time when the document was issued. Mandatory when ‘issueDateFrom’ is provided 
 
- Name
- status
- Type
- string (optional)
- Description
- status of the document. Possible values: (Valid, Invalid, Cancelled, Submitted) 
 
- Name
- documentType
- Type
- string (optional)
- Description
- Document type code. 
 
- Name
- issuerIdType
- Type
- string (optional)
- Description
- Document issuer identifier type. Possible values: (BRN, PASSPORT, NRIC, ARMY) This is mandatory in case the issuerId is provided. 
 
- Name
- issuerId
- Type
- string (optional)
- Description
- Document issuer identifier. 
 
- Name
- issuerTin
- Type
- string (optional)
- Description
- Document issuer identifier. Possible values: (Business registration number, National ID(IC), Passport Number, Army ID) 
 
Sample Request
curl 
  --url https://sandbox-my.flick.network/api/einvoice/supplier-invoices
  ?pageNo={pageNo}
  &pageSize={pageSize}
  &submissionDateFrom={submissionDateFrom}
  &submissionDateTo={submissionDateTo}
  &issueDateFrom={issueDateFrom}
  &issueDateTo={IssueDateTo}
  &status={status}
  &documentType={documentType}
  &issuerIdType={issuerIdType}
  &issuerId={issuerId}
  &issuerTin={issuerTin} \
  --header 'x-flick-auth-key: {token}' \
  --header 'supplier_uuid: {supplier_uuid}' 
Sample Response
{
  "status": "success",
  "data": [{
    "uuid": "216e7b91-dc17-4316-85dd-2afc913cd630",
    "submissionUID": "1bc5e22a-07c9-47dd-9ec4-26032e5dfa21",
    "longId": "FjeaQo89YgVcRbS4dNpWzX1UjLkPvT6Ygt9eD1b4mc5F3xWs7rZyQoXnIA2aB8h0fEjMuGNzVqRlSOCHdwUiKpFjeaQo89YgVcRbS4dNpWzX1UjLkPvT6Ygt9eD1b4mc5F3xWs7rZyQoXnIA2aB8h0fEjMuGNzVqRlSOCHdwUiKpFjeaQo89YgVcRbS4dNpWzX1UjLkPvT6Ygt9eD1b4mc5F3xWs7rZyQoXnIA2aB8h0fEjMuGNzVqRlSOCHdwUiKp",
    "internalId": "PZ-234-A",
    "typeName": "invoice",
    "typeVersionName": "1.0",
    "issuerTin": "C25845632100",
    "issuerName": "AMS Setia Jaya Sdn. Bhd.",
    "receiverId": "201901234567",
    "receiverName": "AMS Setia Jaya Sdn. Bhd.",
    "dateTimeIssued": "2021-02-13T13:15:00Z",
    "dateTimeReceived": "2021-02-13T14:20:00Z",
    "dateTimeValidated": "2021-02-13T14:20:00Z",
    "totalSales": 10.10,
    "totalDiscount": 50.00,
    "netAmount": 100.70,
    "total": 124.09,
    "status": "Valid",
    "cancelDateTime": "2021-02-25T01:59:10Z",
    "rejectRequestDateTime": "2021-02-25T01:59:10Z",
    "documentStatusReason": "Wrong buyer details",
    "createdByUserId": "C1XXXXXXXX00:9e21b10c-41c4-9323-c590-95abcb6e4e4d",
    "issuerEmail": "general.ams@supplier.com"
  }],
  "metadata": {
    "totalPages": 1,
    "totalCount": 1
  }
}
Reject any Document
This endpoint allows you to cancel an already issued E-Document.
Request Body
- Name
- uuid
- Type
- string: mandatory
- Description
- UUID of the document that you want to reject. 
 
- Name
- status
- Type
- enum: mandatory
- Description
- Desired status for the document. Must be rejected to reject received document. 'rejected' is the only allowed value. 
 
- Name
- reason
- Type
- string: mandatory (limit: 300 chars)
- Description
- Reason for rejecting the document. Examples of reasons: Wrong buyer details or Wrong invoice details or any other reasons as the supplier deems appropriate 
 
Sample Request
curl 
  --url https://sandbox-my.flick.network/api/einvoice/cancel \
  --header 'x-flick-auth-key: {token}' \
  --header 'supplier_uuid: {supplier_uuid}' \
  --header 'Content-Type: application/json' \
  --data '
  {
    "uuid": "5YS7R96D4X1S0AS9HCD8D13J10",
    "status": "rejected",
    "reason": "Wrong buyer details"
  }'
Sample Response
{
  "status": "success",
   "data":{ 
      "uuid": "5YS7R96D4X1S0AS9HCD8D13J10",
      "status": "Rejected",
    }
}
Listen Status Changes
You can listen to the updates in status of a document that is already issued by the user or issued against him, by adding a webhook endpoint.
Request Body
- Name
- eventType
- Type
- string
- Description
- Type of Event happend 
 
- Name
- uuid
- Type
- string
- Description
- UUID of the document 
 
- Name
- longId
- Type
- string
- Description
- LongId of the document 
 
- Name
- internalId
- Type
- string
- Description
- Internal Document ID 
 
- Name
- status
- Type
- string
- Description
- Current status of the document 
 
- Name
- cancelDateTime
- Type
- datetime
- Description
- Datetime when the document was cancelled. 
 
- Name
- rejectRequestDateTime
- Type
- datetime
- Description
- Datetime when the rejection was requested. 
 
- Name
- documentStatusReason
- Type
- string
- Description
- Reason why a document has the current status of cancelled or invalid. This includes validation errors from LHDN. 
 
Sample Request
{
  "eventType": "statusChange",
  "uuid": "5YS7R96D4X1S0AS9HCD8D13J10",
  "longId": "FjeaQo89YgVcRbS4dNpWzX1UjLkPvT6Ygt9eD1b4mc5F3xWs7rZyQoXnIA2aB8h0fEjMuGNzVqRlSOCHdwUiKpFjeaQo89YgVcRbS4dNpWzX1UjLkPvT6Ygt9eD1b4mc5F3xWs7rZyQoXnIA2aB8h0fEjMuGNzVqRlSOCHdwUiKpFjeaQo89YgVcRbS4dNpWzX1UjLkPvT6Ygt9eD1b4mc5F3xWs7rZyQoXnIA2aB8h0fEjMuGNzVqRlSOCHdwUiKp",
  "internalId": "PZ-234-A",
  "status": "cancelled",
  "cancelDateTime": "2021-02-25T01:59:10Z",
  "rejectRequestDateTime": "2021-02-25T01:59:10Z",
  "documentStatusReason": "Wrong buyer details",
}
Listen Cancelation Requests
You can listen for cancellation requests from your receipients, by adding a webhook endpoint.
Request Body
- Name
- uuid
- Type
- string
- Description
- UUID of the document 
 
- Name
- longId
- Type
- string
- Description
- LongId of the document 
 
- Name
- internalId
- Type
- string
- Description
- Internal Document ID 
 
- Name
- status
- Type
- string
- Description
- Current status of the document 
 
- Name
- rejectRequestDateTime
- Type
- datetime
- Description
- Datetime when the rejection was requested. 
 
- Name
- documentStatusReason
- Type
- string
- Description
- Reason why a document has the current status of cancelled or invalid. This includes validation errors from LHDN. 
 
Sample Request
{
  "uuid": "5YS7R96D4X1S0AS9HCD8D13J10",
  "longId": "FjeaQo89YgVcRbS4dNpWzX1UjLkPvT6Ygt9eD1b4mc5F3xWs7rZyQoXnIA2aB8h0fEjMuGNzVqRlSOCHdwUiKpFjeaQo89YgVcRbS4dNpWzX1UjLkPvT6Ygt9eD1b4mc5F3xWs7rZyQoXnIA2aB8h0fEjMuGNzVqRlSOCHdwUiKpFjeaQo89YgVcRbS4dNpWzX1UjLkPvT6Ygt9eD1b4mc5F3xWs7rZyQoXnIA2aB8h0fEjMuGNzVqRlSOCHdwUiKp",
  "internalId": "PZ-234-A",
  "status": "valid",
  "rejectRequestDateTime": "2021-02-25T01:59:10Z",
  "documentStatusReason": "Wrong buyer details",
}
Listen Rejection Status
You can listen to updates in your rejection requests to know whether they are accepted by the issuer, by adding a webhook endpoint.
Request Body
- Name
- uuid
- Type
- string
- Description
- UUID of the document 
 
- Name
- longId
- Type
- string
- Description
- LongId of the document 
 
- Name
- internalId
- Type
- string
- Description
- Internal Document ID 
 
- Name
- status
- Type
- string
- Description
- Current status of the document 
 
- Name
- cancelDateTime
- Type
- datetime
- Description
- Datetime when the document was cancelled. 
 
- Name
- rejectRequestDateTime
- Type
- datetime
- Description
- Datetime when the rejection was requested. 
 
- Name
- documentStatusReason
- Type
- string
- Description
- Reason why a document has the current status of cancelled or invalid. This includes validation errors from LHDN. 
 
Sample Request
{
  "uuid": "5YS7R96D4X1S0AS9HCD8D13J10",
  "longId": "FjeaQo89YgVcRbS4dNpWzX1UjLkPvT6Ygt9eD1b4mc5F3xWs7rZyQoXnIA2aB8h0fEjMuGNzVqRlSOCHdwUiKpFjeaQo89YgVcRbS4dNpWzX1UjLkPvT6Ygt9eD1b4mc5F3xWs7rZyQoXnIA2aB8h0fEjMuGNzVqRlSOCHdwUiKpFjeaQo89YgVcRbS4dNpWzX1UjLkPvT6Ygt9eD1b4mc5F3xWs7rZyQoXnIA2aB8h0fEjMuGNzVqRlSOCHdwUiKp",
  "internalId": "PZ-234-A",
  "status": "cancelled",
  "cancelDateTime": "2021-02-25T01:59:10Z",
  "rejectRequestDateTime": "2021-02-25T01:59:10Z",
  "documentStatusReason": "Wrong buyer details",
}