Malaysia v2: Peppol Unify API

Validate and send B2B and B2C invoices, credit notes and self-billed documents over Peppol with the Malaysia Unify API v2 (legacy): endpoint, headers, request fields and responses.

The Unify API validates and processes business-to-business (B2B) and business-to-consumer (B2C) invoices sent over Peppol. It supports invoices, credit notes and self-billed documents, and checks them against the tax and invoicing rules.

Document types

CodeDocumentValue to send
01InvoiceINV
02Credit NoteCRD
11Self-billed InvoiceSLF_INV
12Self-billed Credit NoteSLF_CRD

Endpoint

Submit invoiceshttp
POST https://malaysia-sandbox.complyance.io/unify

This endpoint validates and processes invoice data, including seller and buyer details, line items and tax information.

Headers

HeaderDescription
x-api-keyYour API key.
invoiceMethodThe invoice method. Use peppol.
Content-TypeSet as application/json.

Code examples

These examples show the URL and headers. Send the request body as JSON.

bash
curl --location 'https://malaysia.complyance.io/dev/unify' \
--header 'x-api-key: your-api-key' \
--header 'Content-Type: application/json'

Request body

Request bodyjson
{
    "invoiceDataList": [
        {
            "documentType": "INV",
            "documentId": "Peppol EINV-0222",
            "originalEInvoiceReferenceNumber": "",
            "originalEInvoiceReferenceUUID": "",
            "documentIssueDate": "2025-06-17",
            "documentIssueTime": "02:30:00Z",
            "currency": "MYR",
            "currencyExchangeRate": "1",
            "invoiceFrequency": "MONTHLY",
            "invoiceStartDate": "2024-10-01",
            "invoiceEndDate": "2024-10-23",
            "supplierId": "",
            "supplierParticipantId": "0230:01998877665544",
            "sellerTinNumber": "C20000000000",
            "sellerRegistrationIdType": "BRN",
            "sellerRegistrationId": "202001234567",
            "supplierSstRegistrationNumber": "",
            "supplierTourismTaxRegistrationNumber": "",
            "buyerId": "",
            "buyerParticipantId": "0230:0245622",
            "buyerTinNumber": "C30000000000",
            "buyerRegistrationIdType": "BRN",
            "buyerRegistrationId": "201901234568",
            "buyerSstRegistrationNumber": "",
            "isShippingAndBuyerAddressSame": true,
            "shippingRecipientName": "Example Logistics Sdn Bhd",
            "shippingRecipientTin": "C40000000000",
            "shippingRecipientRegistrationType": "BRN",
            "shippingRecipientRegistrationNumber": "234234234",
            "totalExcludingTax": "2000",
            "totalTaxableAmount": "2000",
            "taxTotal": "0",
            "documentTotal": "2000",
            "invoiceAmountExemptedFromTax": "0",
            "invoiceTaxExemptionReason": "Goods acquired with SST exemption under Sales Tax Act 2018. Reference No: (C01-2345-67890123)",
            "invoiceAdditionalDiscountAmount": "0",
            "invoiceAdditionalChargeAmount": "0",
            "totalPayableAmount": "2000",
            "roundingAmount": "0",
            "paymentMeans": "1",
            "supplierBankAccountNumber": "1234567890123",
            "sellerAddress": {
                "addressLine1": "Lot 66",
                "addressLine2": "Bangunan Merdeka",
                "addressLine3": "Persiaran Jaya",
                "postalCode": "50480",
                "city": "Kuala Lumpur",
                "state": "14",
                "country": "MYS"
            },
            "buyerAddress": {
                "addressLine1": "Lot 66",
                "addressLine2": "Bangunan Merdeka",
                "addressLine3": "Persiaran Jaya",
                "postalCode": "50480",
                "city": "Kuala Lumpur",
                "state": "14",
                "country": "MYS"
            },
            "shippingRecipientAddress": {
                "addressLine1": "Lot 66",
                "addressLine2": "Bangunan Merdeka",
                "addressLine3": "Persiaran Jaya",
                "postalCode": "50480",
                "city": "Kuala Lumpur",
                "state": "14",
                "country": "MYS"
            },
            "supplierDetails": {
                "organizationName": "Acme Trading Sdn Bhd",
                "email": "finance@acme.example",
                "industryCode": "01111",
                "industryDescription": "Growing of maize",
                "phoneNumber": "+60-123456789"
            },
            "buyerDetails": {
                "organizationName": "Example Buyer Sdn Bhd",
                "email": "accounts@buyer.example",
                "phoneNumber": "+60-123456789"
            },
            "documentLineItems": [
                {
                    "lineItemId": "1",
                    "commodityClassificationCode": "1",
                    "description": "Laptop peripherals",
                    "unitPrice": "200",
                    "quantity": "10",
                    "lineItemSubtotal": "2000",
                    "discountPercent": "0",
                    "discountAmount": "0",
                    "chargePercent": "0",
                    "chargeAmount": "0",
                    "lineTotalExcludingTax": "2000",
                    "taxType": "6",
                    "taxPercentage": "0",
                    "totalTax": "0",
                    "taxExemptionReason": "Goods acquired with SST exemption under Sales Tax Act 2018. Reference No: (C01-2345-67890123)",
                    "amountExemptedFromTax": "0",
                    "lineItemTotal": "2000"
                }
            ],
            "invoiceMethod": "peppol"
        }
    ]
}

Request fields

Invoice details

ObjectNameField NameConditionalityInformaticsField Max LengthSample Value
documentTypee-Invoice Type CodeMandatoryIdentifies the document type (e.g., INV, CRD,SLF, SLF_CRD.)2INV
documentIde-Invoice Code / NumberMandatoryDocument reference number used by Supplier for internal tracking purpose50INV12345
documentIssueDatee-Invoice DateMandatoryDate of issuance of the e-Invoice (Note that the date must be the current date)102017-11-26
documentIssueTimee-Invoice TimeMandatoryTime of issuance of the e-Invoice (Note that the time must be the current time)1215:30:00.0Z
documentCurrencyCodeInvoice Currency CodeMandatorySpecific currency that is used to represent the monetary value stated in the e-Invoice3MYR
invoiceFrequencyFrequency of BillingOptionalFrequency of the invoice (e.g., Daily, Weekly, Monthly, Bimonthly, Quarterly, Half-yearly, Yearly, Others)50Monthly
invoiceStartDateBilling Period Start DateOptionalInterval of the transaction102017-11-26
invoiceEndDateBilling Period End DateOptionalEnd date of the transaction interval102017-11-30

Supplier details

ObjectNameField NameConditionalityInformaticsField Max LengthSample Value
supplierIdSupplier IDOptionalIdentification Number of a Specific Supplier in an Invoice201
supplierSstRegistrationNumbersupplierSstRegistrationNumberMandatorySales tax / service tax (SST) registration number of the Supplier (input “NA” if not registered for SST)A01-2345-67891012
supplierDetails.organizationNameSupplier’s NameMandatoryName of business or individual who will be the issuer of the e-Invoice in a commercial transaction300Acme Trading Sdn Bhd
sellerTinNumberSupplier’s TINMandatorySupplier’s (i.e., issuer’s) TIN assigned by IRBM14C20000000000
sellerRegistrationIdTypeSupplier’s Registration scheme IDMandatoryBusiness registration number / MyKad / Passport number depending on entity12BRN
sellerRegistrationIdSupplier’s Registration / Identification Number / Passport NumberMandatoryBusiness registration number / MyKad / Passport number depending on entity20BRN: 202001234567
supplierDetails.emailSupplier’s e-mailOptionalE-mail address of the Supplier (Provide “NA” if unavailable)320finance@acme.example
supplierDetails.industryCodeSupplier’s MSIC CodeMandatory5-digit numeric code representing the Supplier’s business nature and activity51111
supplierDetails.industryDescriptionSupplier’s Business Activity DescriptionMandatoryDescription of the Supplier’s business activity300Growing of maize
supplierDetails.phoneNumberSupplier’s Contact NumberMandatoryThe telephone number of the Supplier15-123456729

Supplier address

ObjectNameField NameConditionalityInformaticsField Max LengthSample Value
sellerAddress.addressLine1Address Line 1MandatoryThe main address line in an address structure. Input “NA” if unavailable150Lot 66
sellerAddress.addressLine2Address Line 2OptionalAn additional address line for further details150Bangunan Merdeka
sellerAddress.addressLine3Address Line 3OptionalAn additional address line for further details150Persiaran Jaya
sellerAddress.postalCodePostal ZoneOptionalThe identifier for a postal zone5050480
sellerAddress.cityCity NameMandatoryThe common name of the city50Kuala Lumpur
sellerAddress.stateStateMandatoryThe state of a country5014
sellerAddress.countryCountryMandatoryA code identifying the country3MYS

Buyer details

ObjectNameField NameConditionalityInformaticsField Max LengthSample Value
buyerIdBuyer IDOptionalIdentification Number of a Specific Buyer in an Invoice201
buyerDetails.organizationNameBuyer’s NameMandatoryName of the recipient of the e-Invoice in a commercial transaction300Example Buyer Sdn Bhd
buyerTinNumberBuyer’s TINMandatoryBuyer’s (i.e., issuer’s) TIN assigned by IRBM14C30000000000
buyerRegistrationIdTypeBuyer’s Registration / Identification Number / Passport Scheme IDMandatoryBusiness registration number / MyKad / Passport number depending on entity12BRN
buyerRegistrationIdBuyer’s Registration / Identification Number / Passport NumberOptionalBusiness registration number / MyKad / Passport number depending on entity20BRN: 202001234567
buyerDetails.emailBuyer’s e-mailOptionalE-mail address of the Buyer (Provide “NA” if unavailable)320accounts@buyer.example
buyerDetails.phoneNumberBuyer’s Contact NumberMandatoryThe telephone number of the Buyer15-123456729

Buyer address

ObjectNameField NameConditionalityInformaticsField Max LengthSample Value
buyerAddress.addressLine1Address Line 1MandatoryThe main address line in an address structure. Input “NA” if unavailable150Lot 66
buyerAddress.addressLine2Address Line 2OptionalAn additional address line for further details150Bangunan Merdeka
buyerAddress.addressLine3Address Line 3OptionalAn additional address line for further details150Persiaran Jaya
buyerAddress.postalCodePostal ZoneOptionalThe identifier for a postal zone5050480
buyerAddress.cityCity NameMandatoryThe common name of the city50Kuala Lumpur
buyerAddress.stateStateMandatoryThe state of a country5014
buyerAddress.countryCountryMandatoryA code identifying the country3MYS

Line items

ObjectNameField NameConditionalityInformaticsField Max LengthSample Value
documentLineItems.lineItemIdLine IDMandatoryIdentification of a Specific Line in an Invoice201
documentLineItems.commodityClassificationCodeClassificationMandatoryCategory of products or services being billed31
documentLineItems.descriptionDescription of Product or ServiceMandatoryDetails of products or services being billed300Laptop Peripherals
documentLineItems.unitPriceUnit PriceMandatoryPrice assigned to a single unit of a product or service17
documentLineItems.quantityQuantityOptionalNumber of units of a product or service1
documentLineItems.lineItemSubtotalSubtotalMandatoryAmount of each individual item, excluding any taxes or charges100
documentLineItems.lineTotalExcludingTaxTotal Excluding TaxMandatorySum of amount payable excluding any applicable taxes1436.5
documentLineItems.taxTypeTax TypeMandatoryType of taxes that will be applicable21
documentLineItems.taxPercentageTax RateMandatoryThe appropriate tax rate that is applicable6
documentLineItems.totalTaxTax AmountMandatoryThe amount of tax payable292.2
documentLineItems.taxCodeDetails of Tax ExemptionOptionalDescription of tax exemption applicable300SST exemption
documentLineItems.taxExemptionReasonAmount Exempted from TaxConditional MandatoryTotal amount of tax exempted for SST purposes1460.5
documentLineItems.chargeAmountCharge AmountOptionalCharge associated with the product or service imposed after tax1000
documentLineItems.discountAmountDiscount AmountOptionalAmount deducted from the original price of a product1000

Peppol data

ObjectNameField NameConditionalityInformaticsField Max LengthSample Value
supplierIdPeppol Id of the supplierConditional MandatorySupplier or Seller’s participant id in the Peppol network0230:05TESTID
buyerIdPeppol Id of the buyerConditional MandatoryBuyer’s participant id in the Peppol network0230:05TESTID
supplierTradingNameRegistered business nameConditional MandatorySupplier business name registered in SSMCompany Name Sdn. Bhd.
sellerPointOfContactSeller nameConditional MandatorySeller point of contact nameJohn
buyerPointOfContactBuyer NameConditional MandatoryBuyer point of contact nameJohn
shippingRecipientLocationIdShipping location IDConditional MandatoryAn identifier for the location at which the goods and services are delivered
buyerAccountingLedgerReferenceLedger referenceConditional MandatoryBuyer Accounting or Ledger Reference
deliveryDateDelivery DateConditional MandatoryThe date on which the supply of goods or services was made or completed

Summary

ObjectNameField NameConditionalityInformaticsField Max LengthSample Value
invoiceAdditionalChargeAmountCharge AmountOptionalAdditional Discount at Invoice Level1000
invoiceAdditionalDiscountAmountDiscount AmountOptionalAdditional Charges at Invoice Level1000
totalExcludingTaxTotal Excluding TaxMandatorySum of amount payable excluding any applicable taxes1436.5
usedTaxTypes.taxTypeTax TypeMandatoryType of taxes that will be applicable (e.g., sales tax, service tax, etc.)21
usedTaxTypes.taxableAmountTotal Taxable Amount Per Tax TypeOptionalSum of amount chargeable for each tax type1460.5
usedTaxTypes.taxAmountTotal Tax Amount Per Tax TypeMandatorySum of amount chargeable for each tax type1460.5
usedTaxTypes.taxExemptionReasonDetails of Tax ExemptionOptionalDescription of tax exemption applicable at invoice levelSST exemption
taxTotalTotal Tax AmountMandatoryTotal amount of tax payable1234
documentTotalInvoice Total Amount Including TaxMandatorySum of amount payable inclusive of total taxes chargeable1436.5
totalPayableAmountTotal Payable AmountMandatorySum of amount payable excluding any amount paid in advance and rounding1436.5

Response

Success response

When the submission succeeds, the response lists the accepted documents. The xmlEncoded value is the Base64-encoded XML of the document, shortened here.

Success responsejson
{
  "submissionUid": "KMNPQRSTVW0123456789ABCD10",
  "acceptedDocuments": [
    {
      "documentUlid": "01HZEXAMPLE000000000000001",
      "uuid": "ABCDEFGHJK0123456789ABCD10",
      "invoiceCodeNumber": "ML-ST-2424",
      "xmlEncoded": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pgo…"
    }
  ],
  "rejectedDocuments": [],
  "timestamp": "2023-08-14T08:15:30Z"
}
Status codeDescription
200Success: the request was processed.
202Accepted: the request was accepted and is still processing.

Error response

When the submission fails, the response lists the rejected documents with an error code and message. See Peppol errors for the messages you can receive.

Error responsejson
{
  "submissionUid": "KMNPQRSTVW0123456789ABCD10",
  "rejectedDocuments": [
    {
      "documentUlid": "01HZEXAMPLE000000000000002",
      "uuid": "ABCDEFGHJK0123456789ABCD10",
      "status": "Rejected",
      "errorCode": "ERR123",
      "errorMessage": "Invalid Tax ID format"
    }
  ],
  "acceptedDocuments": [],
  "timestamp": "2023-08-14T08:15:30Z"
}
Error codeDescription
400Bad Request: invalid data in the request.
401Unauthorized: invalid or missing API key.
500Internal Server Error: the server encountered an error.

Notes

  • Check that your document types are accepted in your jurisdiction.
  • Check that the invoice format meets the standards, to avoid delays.