Malaysia: validation rules
Find the rule behind a rejected Malaysian e-invoice and correct it. Start with the document type you sent and the errors returned by Unify or LHDN.
A Malaysian e-invoice is checked twice. Unify checks the GETS request against LHDN’s requirements before anything is submitted. LHDN then runs its own document validation rules when the document reaches MyInvois.
Check the GETS request
Select Malaysia and the document type in the field reference. The Requirement column shows which GETS fields are mandatory, optional or conditional. In List with sample request, choose the document type and inspect the fields for that selection. Use values from the invoice and the company’s registration records.
Read a 422 response
A 422 response from Unify lists each failed rule in errors. code is the rule ID from the table below, getsPath names the GETS field to correct and message describes the rule. Correct the source data, then send the document again. See Unify errors for the response format.
Read LHDN’s result
After the 200, follow the document until isTerminal is true. final_valid means LHDN validated the document. final_invalid means LHDN marked it invalid; government holds LHDN’s answer with the reason.
LHDN’s checks cover the document structure and core fields, taxpayer identities, references on credit and debit notes, codes, duplicate documents, currency and exchange rates. Check the current MyInvois code tables when a code is rejected. For a credit or debit note, check that the invoice it refers to is valid in MyInvois. For a taxpayer error, confirm the identifiers against the company’s registration records. Do not replace a rejected identifier with a guessed value.
Every rule Unify checks
These are the 173 rules Unify applies to a Malaysian GETS request, with the message you get back and the field it points at. MY-* codes are Unify’s checks of LHDN’s requirements. IBR-*, ALIGNED-IBRP-* and BR-* codes come from the Peppol rules and apply with the peppol modifier. Applies to shows the document types, modifiers or variant each rule belongs to. A receipt (is_receipt) skips the buyer checks.
173 of 173 rules
| Rule | What it checks | Field | Applies to |
|---|---|---|---|
ALIGNED-IBRP-046 | Each tax breakdown must have tax amount. | taxTotals | Modifier peppol |
ALIGNED-IBRP-047 | Each tax breakdown must have tax category code. | taxTotals | Modifier peppol |
ALIGNED-IBRP-048 | Tax breakdown rate must be present for taxable categories, optional for O, and absent for TTX. | taxTotals | Modifier peppol |
ALIGNED-IBRP-CL-01-MY | Malaysian invoice tax categories must use the MY aligned tax-category codes. | taxTotals | Modifier peppol |
ALIGNED-IBRP-E-05 | Invoice line with 'Exempt from tax' must have tax rate 0. | lineItems | Modifier peppol |
ALIGNED-IBRP-E-08 | Exempt tax breakdown taxable amount must reconcile against exempt lines, allowances, and charges. | taxTotals | Modifier peppol |
ALIGNED-IBRP-E-09 | Exempt tax breakdown tax amount must equal 0. | taxTotals | Modifier peppol |
ALIGNED-IBRP-HVG-08 | HVG tax breakdown taxable amount must reconcile by rate. | taxTotals | Modifier peppol |
ALIGNED-IBRP-HVG-09 | HVG tax breakdown tax amount must equal taxable amount multiplied by rate. | taxTotals | Modifier peppol |
ALIGNED-IBRP-HVG-10 | HVG tax breakdown must not have exemption reason code or text. | taxTotals | Modifier peppol |
ALIGNED-IBRP-LVG-08 | LVG tax breakdown taxable amount must reconcile by rate. | taxTotals | Modifier peppol |
ALIGNED-IBRP-LVG-09 | LVG tax breakdown tax amount must equal taxable amount multiplied by rate. | taxTotals | Modifier peppol |
ALIGNED-IBRP-LVG-10 | LVG tax breakdown must not have exemption reason code or text. | taxTotals | Modifier peppol |
ALIGNED-IBRP-O-09 | Not subject to tax breakdown tax amount must equal 0. | taxTotals | Modifier peppol |
ALIGNED-IBRP-SA-08 | SA tax breakdown taxable amount must reconcile by rate. | taxTotals | Modifier peppol |
ALIGNED-IBRP-SA-09 | SA tax breakdown tax amount must equal taxable amount multiplied by rate. | taxTotals | Modifier peppol |
ALIGNED-IBRP-SA-10 | SA tax breakdown must not have exemption reason code or text. | taxTotals | Modifier peppol |
ALIGNED-IBRP-SE-08 | SE tax breakdown taxable amount must reconcile by rate. | taxTotals | Modifier peppol |
ALIGNED-IBRP-SE-09 | SE tax breakdown tax amount must equal taxable amount multiplied by rate. | taxTotals | Modifier peppol |
ALIGNED-IBRP-SE-10 | SE tax breakdown must not have exemption reason code or text. | taxTotals | Modifier peppol |
ALIGNED-IBRP-TTX-08 | Tourism tax breakdown must not include tax percentage. | taxTotals | Modifier peppol |
ALIGNED-IBRP-TTX-09 | Tourism tax amount must equal line-level and document-level TTX tax amounts. | taxTotals | Modifier peppol |
BR-CL-14 | Country codes in an invoice MUST be coded using ISO code list 3166-1. | parties | Modifier peppol |
BR-CO-04 | Each Invoice line MUST have an Invoice line VAT category code (ibt-151). | lineItems | Modifier peppol |
IBR-002 | An Invoice MUST have an Invoice number (ibt-001). | header.documentNumber | Modifier peppol |
IBR-02-MY | Invoice must have supplier BRN number. | parties.seller.registrationNumbers | Modifier peppol |
IBR-003 | An Invoice MUST have an Invoice issue date (ibt-002). | header.issueDate | Modifier peppol |
IBR-03-MY | Invoice must have buyer BRN number. | parties.buyer.registrationNumbers | Modifier peppol |
IBR-04-MY | Invoice must have supplier TIN. | parties.seller.taxIds | Modifier peppol |
IBR-005 | An Invoice MUST have an Invoice currency code (ibt-005). | header.currency | Modifier peppol |
IBR-006 | An Invoice MUST contain the Seller name (ibt-027). | parties.seller.name | Modifier peppol |
IBR-007 | An Invoice MUST contain the Buyer name (ibt-044). | parties.buyer.name | Modifier peppol |
IBR-008 | An Invoice MUST contain the Seller postal address (ibg-05). | parties.seller.address | Modifier peppol |
IBR-009 | The Seller postal address (ibg-05) MUST contain a Seller country code (ibt-040). | parties.seller.address.country | Modifier peppol |
IBR-010 | An Invoice MUST contain the Buyer postal address (ibg-08). | parties.buyer.address | Modifier peppol |
IBR-011 | The Buyer postal address (ibg-08) MUST contain a Buyer country code (ibt-055). | parties.buyer.address.country | Modifier peppol |
IBR-012 | An Invoice MUST have the Sum of Invoice line net amount (ibt-106). | totals.totalLineTaxableAmount | Modifier peppol |
IBR-013 | An Invoice MUST have the Invoice total amount without Tax (ibt-109). | totals.totalAmountExcludingTax | Modifier peppol |
IBR-014 | An Invoice MUST have the Invoice total amount with Tax (ibt-112). | totals.totalAmountIncludingTax | Modifier peppol |
IBR-015 | An Invoice MUST have the Amount due for payment (ibt-115). | totals.amountDue | Modifier peppol |
IBR-016 | An Invoice MUST have at least one Invoice line (ibg-25). | lineItems | Modifier peppol |
IBR-017 | The Payee name (ibt-059) MUST be provided in the Invoice, if the Payee (ibg-10) is different from the Seller (ibg-04). | payment.paymentMeans.0.creditTransferInfo.payeeFinancialAccountName | Modifier peppol |
IBR-021 | Each Invoice line MUST have an Invoice line identifier (ibt-126). | lineItems | Modifier peppol |
IBR-022 | Each Invoice line (ibg-25) MUST have an invoiced quantity (ibt-129).. | lineItems | Modifier peppol |
IBR-023 | An Invoice line (ibg-25) MUST have an Invoiced quantity unit of measure code (ibt-130). | lineItems | Modifier peppol |
IBR-024 | Each Invoice line (ibg-25) MUST have an Invoice line net amount (ibt-131). | lineItems | Modifier peppol |
IBR-025 | Each Invoice line (ibg-25) MUST contain the Item name (ibt-153). | lineItems | Modifier peppol |
IBR-026 | Each Invoice line (ibg-25) MUST contain the Item net price (ibt-146). | lineItems | Modifier peppol |
IBR-027 | The Item net price (ibt-146) MUST NOT be negative. | lineItems | Modifier peppol |
IBR-028 | The Item gross price (ibt-148) MUST NOT be negative. | lineItems | Modifier peppol |
IBR-029 | If both Invoicing period start date (ibt-073) and Invoicing period end date (ibt-074) are given then the Invoicing period end date (ibt-074) MUST be later or equal to the Invoicing period start date (ibt-073). | header.invoicePeriod | Modifier peppol |
IBR-030 | If both Invoice line period start date (ibt-134) and Invoice line period end date (ibt-135) are given then the Invoice line period end date (ibt-135) MUST be later or equal to the Invoice line period start date (ibt-134). | lineItems | Modifier peppol |
IBR-031 | Allowance (ibg-20) MUST have an allowance amount (ibt-092). | allowancesAndCharges | Modifier peppol |
IBR-033 | Each Document level allowance (ibg-20) MUST have a Document level allowance reason (ibt-097) or a Document level allowance reason code (ibt-098). | allowancesAndCharges | Modifier peppol |
IBR-036 | Charge (ibg-21) MUST have a charge amount (ibt-099). | allowancesAndCharges | Modifier peppol |
IBR-038 | Each Document level charge (ibg-21) MUST have a Document level charge reason (ibt-104) or a Document level charge reason code (ibt-105). | allowancesAndCharges | Modifier peppol |
IBR-041 | Each Invoice line allowance (ibg-27) MUST have an Invoice line allowance amount (ibt-136). | lineItems | Modifier peppol |
IBR-042 | Each Invoice line allowance (ibg-27) MUST have an Invoice line allowance reason (ibt-139) or an Invoice line allowance reason code (ibt-140). | lineItems | Modifier peppol |
IBR-043 | Each Invoice line charge (ibg-28) MUST have an Invoice line charge amount (ibt-141). | lineItems | Modifier peppol |
IBR-044 | Each Invoice line charge (ibg-28) MUST have an Invoice line charge reason (ibt-144) or an invoice line charge reason code (ibt-145). | lineItems | Modifier peppol |
IBR-049 | A Payment instruction (ibg-16) MUST specify the Payment means type code (ibt-081). | payment.paymentMeans | Modifier peppol |
IBR-052 | Each Additional supporting document (ibg-24) MUST contain a Supporting document reference (ibt-122). | supportingDocuments | Modifier peppol |
IBR-053 | If the Tax accounting currency code (ibt-006) is present, then the Invoice total Tax amount in accounting currency (ibt-111) MUST be provided. | extensions.peppol_totalTaxAmountInTaxCurrency | Modifier peppol |
IBR-054 | Each Item attribute (ibg-32) MUST contain an Item attribute name (ibt-160) and an Item attribute value (ibt-161). | lineItems | Modifier peppol |
IBR-057 | Each Deliver to address MUST contain a Deliver to country code (ibt-080). | parties.delivery.address.country | Modifier peppol |
IBR-062 | The Seller electronic address (ibt-034) MUST have a Scheme identifier. | extensions.peppol_seller_peppolIdScheme | Modifier peppol |
IBR-063 | The Buyer electronic address (ibt-049) MUST have a Scheme identifier. | extensions.peppol_buyer_peppolIdScheme | Modifier peppol |
IBR-064 | The Item standard identifier (ibt-157) MUST have a Scheme identifier. | lineItems | Modifier peppol |
IBR-065 | The Item classification identifier (ibt-158) MUST have a Scheme identifier. | lineItems | Modifier peppol |
IBR-066 | An Invoice MUST contain maximum one Payment Card account (ibg-18). | payment.paymentMeans | Modifier peppol |
IBR-067 | An Invoice MUST contain maximum one Payment Mandate (ibg-19). | payment.paymentMeans | Modifier peppol |
IBR-068 | GLN MUST have a valid format according to GS1 rules for endpoints (ibt-034), (ibt-049), party identification (ibt-029), (ibt-046), (ibt-060), legal entities (ibt-030), (ibt-047), (ibt-061). | parties | Modifier peppol |
IBR-069 | Norwegian organization number MUST be stated in the correct format for endpoints (ibt-034), (ibt-049), party identification (ibt-029), (ibt-046), (ibt-060), legal entities (ibt-030), (ibt-047), (ibt-061). | parties | Modifier peppol |
IBR-070 | Danish organization number (CVR) MUST be stated in the correct format for endpoints (ibt-034), (ibt-049), party identification (ibt-029), (ibt-046), (ibt-060), legal entities (ibt-030), (ibt-047), (ibt-061). | parties | Modifier peppol |
IBR-071 | An invoice should not include an AdditonalDocumentReference (ibg-24) simultaneously referring an Invoice Object Identifier (ibt-018) and an Attachment (ibt-125). | supportingDocuments | Modifier peppol |
IBR-072 | An invoice MUST not include an AdditionalDocumentReference (ibg-24) simultaneously referring an Invoice Object Identifier (ibt-018) and an Document Description (ibt-123). | supportingDocuments | Modifier peppol |
IBR-073 | A date MUST be formatted YYYY-MM-DD in (ibt-002), (ibt-007), (ibt-009), (ibt-026), (ibt-072), (ibt-073), (ibt-074), (ibt-134), (ibt-135). | header | Modifier peppol |
IBR-074 | Binary object elements (ibt-125) MUST contain the mime code attribute (ibt-125-1). | supportingDocuments | Modifier peppol |
IBR-075 | Binary object elements (ibt-125) MUST contain the filename attribute (ibt-125-2). | supportingDocuments | Modifier peppol |
IBR-077 | Tax accounting currency code (ibt-006) MUST be different from invoice currency code (ibt-005) when provided. | header.taxCurrency | Modifier peppol |
IBR-078 | Only one invoiced object (ibt-018) is allowed on document level. | supportingDocuments | Modifier peppol |
IBR-080 | The Buyer electronic address (ibt-049) MUST be provided. | parties.buyer.peppolId | Modifier peppol |
IBR-081 | The Seller electronic address (ibt-049) MUST be provided. | parties.seller.peppolId | Modifier peppol |
IBR-082 | Allowance/charge indicator value MUST equal 'true' or 'false'. | allowancesAndCharges | Modifier peppol |
IBR-084 | Invoice total tax amount (ibt-110) and Invoice total tax amount in accounting currency (ibt-111) MUST have the same operational sign. | totals.totalTaxAmount | Modifier peppol |
IBR-085 | Start date of line period (ibt-134) MUST be within invoice period (ibg-14). | lineItems | Modifier peppol |
IBR-086 | End date of line period (ibt-135) MUST be within invoice period (ibg-14). | lineItems | Modifier peppol |
IBR-087 | Base quantity (ibt-149) MUST be a positive number above zero. | lineItems | Modifier peppol |
IBR-088 | Unit code of price base quantity (ibt-150) MUST be same as invoiced quantity (ibt-130). | lineItems | Modifier peppol |
IBR-090 | Only one project reference (ibt-011) is allowed on document level. | supportingDocuments | Modifier peppol |
IBR-091 | Invoice amount due for payment (ibt-115) MUST have no more than 2 decimals. | totals.amountDue | Modifier peppol |
IBR-113 | Belgian enterprise number MUST be stated in the correct format for endpoints (ibt-034), (ibt-049), party identification (ibt-029), (ibt-046), (ibt-060), legal entities (ibt-030), (ibt-047), (ibt-061). | parties | Modifier peppol |
IBR-114 | IPA Code (Codice Univoco Unità Organizzativa) must be stated in the correct format for endpoints (ibt-034), (ibt-049), party identification (ibt-029), (ibt-046), (ibt-060), legal entities (ibt-030), (ibt-047), (ibt-061). | parties | Modifier peppol |
IBR-115 | Tax Code (Codice Fiscale) must be stated in the correct format for endpoints (ibt-034), (ibt-049), party identification (ibt-029), (ibt-046), (ibt-060), legal entities (ibt-030), (ibt-047), (ibt-061). | parties | Modifier peppol |
IBR-116 | Italian VAT Code (Partita Iva) must be stated in the correct format for endpoints (ibt-034), (ibt-049), party identification (ibt-029), (ibt-046), (ibt-060), legal entities (ibt-030), (ibt-047), (ibt-061). | parties | Modifier peppol |
IBR-120 | Australian Business Number (ABN) must be stated in the correct format for for endpoints (ibt-034), (ibt-049), party identification (ibt-029), (ibt-046), (ibt-060), legal entities (ibt-030), (ibt-047), (ibt-061). | parties | Modifier peppol |
IBR-121 | Document level allowance amount (ibt-107) MUST have no more than 2 decimals. | totals.totalAllowances | Modifier peppol |
IBR-122 | Document level charge amount (ibt-108) MUST have no more than 2 decimals. | totals.totalCharges | Modifier peppol |
IBR-123 | Invoice total amount without TAX (ibt-109) MUST have no more than 2 decimals. | totals.totalAmountExcludingTax | Modifier peppol |
IBR-124 | Invoice total TAX amount (ibt-110) MUST have no more than 2 decimals. | taxTotals.0.taxAmount | Modifier peppol |
IBR-125 | Invoice total amount with TAX (ibt-112) MUST have no more than 2 decimals. | totals.totalAmountIncludingTax | Modifier peppol |
IBR-127 | Swedish organization number MUST be stated in the correct format for endpoints (ibt-034), (ibt-049), party identification (ibt-029), (ibt-046), (ibt-060), legal entities (ibt-030), (ibt-047), (ibt-061). | parties | Modifier peppol |
IBR-CL-04 | Invoice currency code (ibt-005) MUST be coded using ISO code list 4217 alpha-3. | header.currency | Modifier peppol |
IBR-CL-05 | Tax currency code (ibt-006) MUST be coded using ISO code list 4217 alpha-3. | header.taxCurrency | Modifier peppol |
IBR-CL-05-MY | If tax accounting currency is present, it must be MYR. | header.taxCurrency | Modifier peppol |
IBR-CL-07 | Object identifier schemes must use the UAE UNTDID 1153 restriction. | lineItems | Modifier peppol |
IBR-CL-10 | Party identifier scheme MUST be a code from the ISO 6523 ICD list. | extensions | Modifier peppol |
IBR-CL-11 | Legal registration identifier scheme MUST be a code from the ISO 6523 ICD list. | extensions.peppol_registrationNumberScheme | Modifier peppol |
IBR-CL-13 | Item classification identifier identification scheme MUST be coded using the UNTDID 7143 list. | lineItems | Modifier peppol |
IBR-CL-14 | Country codes in an invoice MUST be coded using ISO code list 3166-1. | parties | Modifier peppol |
IBR-CL-15 | Origin country codes in an invoice (ibt-159) MUST be coded using ISO code list 3166-1. | lineItems | Modifier peppol |
IBR-CL-16 | Payment means in an invoice (ibt-081) MUST be coded using UNCL4461 code list. | payment.paymentMeans | Modifier peppol |
IBR-CL-19 | Reason code MUST be according to subset of UNCL 5189 D.16B. | allowancesAndCharges | Modifier peppol |
IBR-CL-20 | Reason code MUST be according to UNCL 7161 D.16B. | allowancesAndCharges | Modifier peppol |
IBR-CL-21 | Item standard identifier scheme (IBT-157-1) MUST belong to the ISO 6523 ICD list. | lineItems | Modifier peppol |
IBR-CL-23 | Unit code (ibt-130), (ibt-150) MUST be coded according to the UN/ECE Recommendation 20 with Rec 21 extension. | lineItems | Modifier peppol |
IBR-CL-24 | Mime code (ibt-125-1) MUST be according to subset of IANA code list. | supportingDocuments | Modifier peppol |
IBR-CL-25 | Endpoint identifier scheme MUST belong to the CEF EAS code list. | extensions | Modifier peppol |
IBR-CL-26 | Delivery location identifier scheme (IBT-071-1) MUST belong to the ISO 6523 ICD list. | extensions.peppol_deliveryLocationIdScheme | Modifier peppol |
IBR-CO-10 | Sum of Invoice line net amount MUST equal the rounded sum of Invoice line net amounts. | totals.totalLineTaxableAmount | Modifier peppol |
IBR-CO-11 | Sum of allowances on document level (ibt-107) = Σ Document level allowance amount (ibt-092). | totals.totalAllowances | Modifier peppol |
IBR-CO-12 | Sum of charges on document level (ibt-108) = Σ Document level charge amount (ibt-099). | totals.totalCharges | Modifier peppol |
IBR-CO-13 | Invoice total amount without Tax (ibt-109) = Σ Invoice line net amount (ibt-131) - Sum of allowances on document level (ibt-107) + Sum of charges on document level (ibt-108). | totals.totalAmountExcludingTax | Modifier peppol |
IBR-CO-14 | Invoice total Tax amount MUST equal the rounded sum of Tax category tax amounts. | taxTotals.0.taxAmount | Modifier peppol |
IBR-CO-15 | Invoice total amount with Tax (ibt-112) = Invoice total amount without Tax (ibt-109) + Invoice total Tax amount (ibt-110). | totals.totalAmountIncludingTax | Modifier peppol |
IBR-CO-16 | Amount due for payment (ibt-115) = Invoice total amount with Tax (ibt-112) - Paid amount (ibt-113) + Rounding amount (ibt-114). | totals.amountDue | Modifier peppol |
IBR-CO-26 | At least one Seller party, legal registration or tax identifier MUST be present. | parties.seller | Modifier peppol |
MY-COMMODITY-CLASSIFICATION | MY: Commodity classification code must be in the range 1–45. | lineItems | Every document type |
MY-DATE-001 | MY: Issue time is mandatory. | header.issueTime | Every document type |
MY-DATE-002 | Issuance date time value of the document is too old and cannot be submitted. | header.issueDate | Every document type |
MY-DATE-003 | MY: Document issue date cannot be in the future. | header.issueDate | Every document type |
MY-DATE-004 | MY: Issue time must match HH:mm:ssZ format. | header.issueTime | Every document type |
MY-DATE-005 | MY: Document issue date and time (UTC) cannot be in the future. | header.issueTime | Every document type |
MY-DATE-006 | MY: Invoice period start and end dates must both be provided and start must not be after end. | header.invoicePeriod | Every document type |
MY-DEBIT-NOTE-REFERENCE | MY: Debit note must have a reference to the original invoice. | header.referenceId | Debit note |
MY-GEN-TOTALS | MY: Totals section is mandatory for Malaysia e-invoicing. | totals | Every document type |
MY-INVALID-TIN-BUYER | MY: Buyer TIN format is invalid. | parties.buyer.taxIds | Every document type |
MY-INVALID-TIN-SELLER | MY: Seller TIN format is invalid. | parties.seller.taxIds | Every document type |
MY-LINE-CLASSIFICATION | MY: Line item classification is mandatory. | lineItems | Every document type |
MY-LINE-DESCRIPTION | MY: Line item description is mandatory. | lineItems | Every document type |
MY-LINE-EXTENSION-SUM | MY: Line taxable value must match quantity × unit price. | lineItems | Every document type |
MY-LINE-ITEM-PRICE-EXTENSION | MY: Line item subtotal is mandatory. | lineItems | Every document type |
MY-LINE-QUANTITY | MY: Line item quantity must be greater than zero. | lineItems | Every document type |
MY-LINE-TAX-AMOUNT | MY: Line tax amount must equal taxable value × tax rate. | lineItems | Every document type |
MY-LINE-TAX-AMOUNT-NON-NEGATIVE | MY: Line tax amount cannot be negative. | lineItems | Every document type |
MY-LINE-TAX-CATEGORY | MY: Line item tax category must be a valid LHDN code. | lineItems | Every document type |
MY-LINE-TAX-RATE-RANGE | MY: Tax rate must be between 0 and 100. | lineItems | Every document type |
MY-LINE-TOTAL | MY: Line total must equal taxable value + tax amount. | lineItems | Every document type |
MY-MSIC-CODE | MY: Invalid MSIC code for seller. | parties.seller.industryClassification.code | Every document type |
MY-MSIC-CODE-REQUIRED | MY: Seller MSIC code is mandatory. | parties.seller.industryClassification.code | Every document type |
MY-MSIC-DESCRIPTION-REQUIRED | MY: Seller business activity description is mandatory. | parties.seller.industryClassification.description | Every document type |
MY-PARTY-001 | MY: Buyer TIN is mandatory. | parties.buyer.taxIds | Every document type |
MY-PARTY-002 | MY: Credit note must have a reference to the original invoice. | header.referenceId | Credit note |
MY-PARTY-003 | MY: Seller BRN registration number is mandatory. | parties.seller.registrationNumbers | Every document type |
MY-PARTY-005 | MY: Seller's mobile number is mandatory. | parties.seller.contact.phone | Every document type |
MY-PARTY-BUYER-PHONE | MY: Buyer's mobile number format is invalid. | parties.buyer.contact.phone | Every document type |
MY-PARTY-BUYER-PHONE-REQUIRED | MY: Buyer's mobile number is mandatory. | parties.buyer.contact.phone | Every document type |
MY-PARTY-REGISTRATION-BUYER | MY: Buyer registration number is mandatory. | parties.buyer.registrationNumbers | Every document type |
MY-PARTY-TIN-SELLER | MY: Seller TIN is mandatory. | parties.seller.taxIds | Every document type |
MY-REFUND-BASE | MY: variant 'refund' is only allowed with base type 'credit_note'. | documentType.base | Variant refund |
MY-REFUND-REFERENCE | MY: header.referenceId is mandatory when documentType.variant='refund'. | header.referenceId | Variant refund |
MY-SELF-BILLED-EXPORT | MY: modifier 'self_billed' cannot be combined with modifier 'export'. | documentType.modifiers | Modifier self_billed |
MY-SELLER-BUYER-TIN-SAME | MY: Seller and Buyer TIN cannot be the same. | parties.buyer.taxIds | Every document type |
MY-SELLER-COUNTRY | MY: Seller address country must be MY. | parties.seller.address.country | Every document type |
MY-SELLER-STATE | MY: Seller address state is invalid. | parties.seller.address.stateOrProvince | Every document type |
MY-TAX-001 | MY: Cannot apply invoice-level discount or charge if line item tax rates differ. | allowancesAndCharges | Every document type |
MY-TAX-002 | MY: Total tax amount must match sum of line tax amounts. | totals.totalTaxAmount | Every document type |
MY-TAX-SUBTOTAL | MY: At least one tax subtotal is required. | taxTotals.0.taxSubtotals | Every document type |
MY-TAX-SUBTOTAL-CATEGORY | MY: Tax subtotal category must be a valid LHDN code. | taxTotals | Every document type |
MY-TAX-TOTAL-AMOUNT | MY: Document tax total amount is required. | taxTotals.0.taxAmount | Every document type |
MY-TAX-TOTAL-GROUP | MY: Exactly one document tax total is required. | taxTotals | Every document type |
MY-TOTAL-EXCLUDING | MY: Total amount excluding tax must reconcile with line totals and adjustments. | totals.totalAmountExcludingTax | Every document type |
MY-TOTAL-INCLUSIVE | MY: Total amount including tax must equal excluding tax + total tax. | totals.totalAmountIncludingTax | Every document type |