Full feature breakdown
Every Malaysia-specific capability in Oris Invoice, grouped by area. All features listed are in production on master today.
MyInvois submission
All 37 mandatory LHDN fields covered per MyInvois SDK v1.0 §3.3. Produces deterministic XML safe for XML-DSig signing.
OAuth 2.0 client_credentials flow to the LHDN MyInvois API. Submits, polls for validation result, and updates invoice status in one step.
Background cron every 5 minutes checks SUBMITTED invoices and advances them to VALID, INVALID, ACCEPTED, REJECTED, or CANCELLED.
Invoice (01), Credit Note (02), Debit Note (03), Refund Note (04), Self-Billed Invoice (11), Self-Billed Credit Note (12), Self-Billed Debit Note (13), BIK Invoice (15).
Select multiple invoices and submit up to 100 at once. Per-document result aggregation — one failure does not block the batch.
Upload IRBM PEM/PFX certificate. Encrypted at rest (AES-256-GCM). Expiry warnings at T-90d and T-30d; submission blocked at T-0.
SST tax engine
Applied to taxable services. No input-tax credit chain — SST is single-stage. Classification: taxable, exempt, or out-of-scope.
Rate determined by goods category. Designated-area and special-area flags suppress sales tax on qualifying inter-area transactions.
All amounts in sen (1 MYR = 100). BigInt throughout — no floating-point drift on long invoices or multi-line documents.
Bimonthly return files matching MySST schema. SST-02A covers imported services flagged by the buyer inbox foreign-TIN detector.
Buyer inbox
Polls LHDN /documents/recent?direction=Received every 5 minutes. Idempotent — duplicate UUIDs are skipped.
Countdown shown per invoice. Reject with reason — notification sent to supplier via LHDN API. Auto-accept at window expiry.
Invoices from foreign-supplier TINs (not starting with C or IG) are flagged is_imported_service for the SST-02A self-accounting export.
Validation & compliance
TIN: C or IG prefix + 10 digits. BRN: 12-digit new format or legacy ROC/ROB pattern. Validated at input, not at submission.
5-digit MSIC code validated against the full LHDN codelist. Auto-suggests SST rate based on MSIC during onboarding.
Type code 11 for imported-service purchases. Buyer is the LHDN-registered supplier; no full Customer record required for self-billing.
Type code 15. Buyer is the employee TIN. Employee name, TIN, and BIK category (housing, vehicle, etc.) are mandatory fields.
Multi-currency & FX
Daily rate fetch from the BNM API. Historical rate lookup at invoice date. BNM exchange rate embedded in the UBL XML for non-MYR invoices.
Indian org invoicing a Malaysian customer — INR-denominated with MYR equivalent at BNM rate. Correct SST treatment for imported services.