Malaysia MyInvois API Integration Guide

Practical MyInvois API guide covering auth, TIN checks, submission polling, Peppol, and PDF invoice handling before compliance submission.

Published
Updated
Reading Time
12 min
Topics:
API & Developer IntegrationMalaysiaMyInvoisPeppolPINT-MYERP integration

A working Malaysia MyInvois API integration usually has four moving parts: authenticate with OAuth 2.0 client credentials, validate or search the taxpayer TIN, submit documents, and poll submission status on the recommended cadence instead of logging in again for every call. In the official MyInvois workflow, tokens last 60 minutes, Search Taxpayer's TIN is guided at 60 requests per minute, Submit Documents at 100 requests per minute, and Get Submission at 300 requests per minute with a 3 to 5 second polling interval. PINT-MY and Peppol sit next to that core flow as the interoperability layer. They do not remove the need to understand how MyInvois itself authenticates, accepts submissions, and reports status.

That matters because the search results for MyInvois integration are still split between two unhelpful extremes. Vendor pages reduce the problem to "connect your ERP and you are done." Official SDK pages are accurate, but they are organized by endpoint rather than by production architecture. If you are the team responsible for making an ERP, finance platform, or compliance adapter work in practice, you need the sequence, the operating limits, and the decision points in one place.

The real design questions come quickly:

  1. Should you integrate directly with MyInvois, use an intermediary, or route interoperability through a Peppol access point?
  2. Where should token caching and taxpayer identity checks live so you are not creating avoidable load on LHDN services?
  3. How should your submission and polling jobs work so batch processing stays reliable under the published rate guidance?
  4. What happens when the invoice data does not start in a clean ERP table, but in PDFs, scans, or mixed inbound files?

The rest of this guide treats MyInvois as a system-design problem rather than an endpoint list. That is the gap most current pages miss, and it is the only useful way to design a workflow that survives real operational volume.

Direct API, Intermediary, or Peppol Access Point: What Problem Are You Actually Solving?

The first architecture decision is not technical. It is about scope of responsibility.

If your team wants maximum control over authentication, submission logic, status handling, and error management, direct MyInvois API integration is usually the right fit. That works best when you already own the ERP workflow, have engineering capacity, and want Malaysia e-invoice API integration to behave like another internal service. You keep the logic close to your business rules, but you also own token management, TIN checks, retries, monitoring, and change management when the SDK evolves.

An intermediary changes that balance. It can abstract part of the MyInvois workflow, especially when a business is rolling out across multiple entities or does not want to build country-specific compliance logic itself. That can be useful, but it is not the same as removing compliance design altogether. You still need to know what data enters the process, what statuses come back, how exceptions are handled, and what evidence your finance or support teams will need later. Teams weighing that tradeoff may also find the Kenya eTIMS API integration guide useful because Kenya frames a similar build-versus-integrator decision through VSCU and OSCU models. Permission boundaries matter too. In practice, an intermediary can only access the documents it submitted on behalf of a taxpayer, so retrieval and audit behavior should be designed with that constraint in mind.

Peppol solves a different problem again. PINT-MY defines the Malaysia interoperability layer and the Peppol access point handles network exchange, but neither replaces the need to understand the underlying MyInvois compliance workflow. If your rollout involves interoperability across trading partners, Peppol may be part of the target architecture. If your immediate problem is getting documents from your ERP into MyInvois with reliable status tracking, you still need to design the direct compliance flow underneath. For a useful parallel, see how a Peppol-based e-invoicing rollout works in practice, which shows how network-level interoperability and domestic compliance rules often overlap without being the same thing.

For most teams, the decision comes down to this:

  • Choose direct integration when you want control, already have engineering ownership, and need MyInvois to fit tightly into an existing ERP or finance systems estate.
  • Choose an intermediary when time-to-implement and country-specific abstraction matter more than owning every moving part.
  • Choose a Peppol-oriented design when partner interoperability is part of the requirement, while recognizing that PINT-MY does not excuse weak design around authentication, submission, or exception handling.

That framing is more useful than the usual vendor promise because it starts with the operating problem you have to solve, not the product someone wants to sell you.

Authentication and TIN Checks: Build the Identity Layer Correctly

MyInvois authentication is straightforward at the protocol level and easy to mishandle operationally. The platform uses OAuth 2.0 client credentials, and the token response gives you a 60-minute lifetime. That means your integration should treat authentication as a shared service with caching, expiry tracking, and controlled refresh behavior. It should not treat login as a pre-step for every downstream call.

Repeated authentication is one of the clearest avoidable anti-patterns in a MyInvois API guide. It adds load, makes rate behavior harder to reason about, and turns transient auth issues into a wider workflow problem. A better design is to cache the token for its full lifetime, refresh it predictably, and expose it to the submission and polling jobs that need it. In ERP integration terms, that usually means the auth layer belongs in a central connector or integration service, not in every individual workflow component.

The next identity decision is about taxpayer data. Teams often collapse two different tasks into one vague "TIN validation" step:

  • Checking that the TIN you already have is the right one for the business process
  • Using Search Taxpayer's TIN when you need to retrieve or confirm taxpayer details from the official system

Those are related, but they are not the same operational action. If your supplier onboarding process already maintains trusted master data, the submission workflow may only need a controlled validation check before documents are sent. If your inbound process regularly receives incomplete or inconsistent supplier data, Search Taxpayer's TIN may belong earlier in the workflow so you resolve identity issues before a submission job is created.

This distinction matters because identity problems are expensive when they surface too late. A clean design puts taxpayer checks at the point where bad data is cheapest to fix, not at the point where a failed submission has already interrupted finance operations. That also helps you decide who owns the outcome: the onboarding team, the AP operations team, or the integration layer itself.

In practice, the identity layer for MyInvois should answer three questions before a document is submitted:

  1. Do we have the correct taxpayer identity for this supplier or transaction?
  2. Where was that identity verified or searched, and can we trust that source in this workflow?
  3. Can the submission service reuse a valid token and a validated taxpayer record without redoing both checks unnecessarily?

If you can answer those three questions consistently, the rest of the compliance flow becomes much easier to operate.

Submission, Polling, and Retrieval: The Operational Rules That Matter in Production

The middle of the workflow is where most proof-of-concept integrations break down. Submitting a document is not the hard part. Running submission, status polling, troubleshooting, and reconciliation as one controlled operating model is the hard part.

Start by treating submission as an asynchronous workflow. Your job submits documents, stores the submission reference, and hands status tracking to a polling process that respects the official guidance. MyInvois does not reward aggressive polling. According to MyInvois Get Submission guidance, the platform recommends polling submission status every 3 to 5 seconds and caps Get Submission at 300 requests per minute per client ID. That needs to sit alongside the other published guidance too: Submit Documents is guided at 100 requests per minute, and Search Taxpayer's TIN at 60 requests per minute. If you ignore those limits, you are not building a faster integration. You are building one that becomes harder to stabilize under load.

In production, a reliable submission flow usually has these characteristics:

  • A queue or job layer that controls how documents are batched and submitted
  • A persistent record of each submission identifier and current processing state
  • A polling worker that uses the documented cadence instead of continuous status checks
  • Retry logic that distinguishes between transient failures, bad input data, and cases that need human review

Retrieval endpoints also need a clear role. Get Submission is for status progression on a known submission. Get Recent Documents is not a substitute for a full operational ledger or a long-term reconciliation store. It only covers the last 31 days, so it is better treated as a short-window troubleshooting tool or a recovery aid when you need to look back at recent activity. If your finance team needs auditability across longer periods, keep your own submission history and status events rather than assuming the API should act as your reporting database.

The practical rule is simple: submit once, track intentionally, and store your own operational truth. Teams that follow that pattern usually have a clearer path to support, exception handling, and scale. Teams that wire endpoints together without that control layer usually end up debugging rate behavior and missing status context when volume rises.


If Your Invoices Start as PDFs or Scans, Extraction Comes Before Compliance

Official MyInvois documentation assumes you are ready to send structured invoice data. Many real workflows are not there yet. The upstream reality is messier: invoices arrive as PDFs, scanned images, emailed attachments, or mixed batches exported from several systems. If that is your starting point, the first problem is not submission. It is getting reliable, normalized data into the submission layer.

That is why it helps to separate the pipeline into three stages:

  1. Document ingestion and extraction
  2. Business and compliance validation
  3. MyInvois submission and status tracking

When those stages are separated, you can catch incomplete fields, supplier mismatches, or formatting issues before they hit the compliance adapter. You also make exception handling clearer. AP staff can fix source-data problems upstream, while the integration service focuses on submission state, polling, and downstream evidence.

This is also where build choices become more concrete. If you are still weighing choosing between a direct invoice capture API, SaaS platform, or ERP-native build, ask where document normalization should live and who will maintain it. For teams that want that layer programmatically, an invoice extraction API for MyInvois-ready workflows can sit upstream of the compliance integration and convert PDFs, JPGs, or PNG files into structured XLSX, CSV, or JSON output before MyInvois-specific checks run.

That upstream role is a fair place to mention Invoice Data Extraction because it matches the product's actual scope. The platform's REST API can ingest batches of up to 6,000 PDF, JPG, or PNG files, apply prompt-driven extraction rules, and return structured XLSX, CSV, or JSON outputs that another service can validate and route onward. It does not replace MyInvois compliance logic. It solves the earlier problem of turning unstructured invoice files into data your ERP integration can actually work with.

This distinction is what many MyInvois integration discussions miss. The official APIs start at compliance. Your operational workflow may need to start one step earlier, at document extraction, if the source invoices are not already clean records inside your system.

A Production Rollout Plan for ERP and Finance Systems Teams

If you are moving from evaluation to implementation, the safest approach is to break the rollout into ownership decisions rather than endpoint milestones.

  1. Choose the operating model first. Decide whether you are building direct, using an intermediary, or adding a Peppol access point for interoperability. That choice changes who owns authentication, document status visibility, and support boundaries.
  2. Define the identity layer. Specify where token caching lives, when taxpayer data is validated or searched, and which system is authoritative for supplier identity.
  3. Map the asynchronous workflow. Submission, polling, retries, and exception routing should be separate jobs with persistent status history, not one synchronous process that hides failure modes.
  4. Handle source-data variance upstream. If documents arrive unstructured, put extraction and normalization before compliance submission so operational teams can fix data issues early.
  5. Keep Malaysia-specific compliance rules in view. Integration logic does not remove the need to understand document scenarios, exclusions, and domestic rule changes. If you need the mandate-level rollout dates, exemptions, and submission-route context first, start with Malaysia's broader 2026 e-Invoice requirements. From there, a reference like Malaysia's consolidated e-Invoice rules and exclusion cases becomes useful alongside the SDK itself, as do the buyer-issued edge cases in Malaysia's self-billed e-Invoice requirements for foreign suppliers and imported services.
  6. Design for reporting beyond the short API windows. Use Get Recent Documents as a short-range support tool, not as your long-term audit record.

If you follow that sequence, you end up with a cleaner division of responsibilities: extraction where files are messy, validation where business rules are enforced, submission where compliance messages are sent, and monitoring where operations teams can see what happened. That is the difference between a demo integration and one your finance systems team can run with confidence.

About the author

DH

David Harding

Founder, Invoice Data Extraction

David Harding is the founder of Invoice Data Extraction and a software developer with experience building finance-related systems. He oversees the product and the site's editorial process, with a focus on practical invoice workflows, document automation, and software-specific processing guidance.

Editorial process

This page is reviewed as part of Invoice Data Extraction's editorial process.

If this page discusses tax, legal, or regulatory requirements, treat it as general information only and confirm current requirements with official guidance before acting. The updated date shown above is the latest editorial review date for this page.

Continue Reading

Extract invoice data to Excel with natural language prompts

Upload your invoices, describe what you need in plain language, and download clean, structured spreadsheets. No templates, no complex configuration.

Exceptional accuracy on financial documents
1–8 seconds per page with parallel processing
50 free pages every month — no subscription
Any document layout, language, or scan quality
Native Excel types — numbers, dates, currencies
Files encrypted and auto-deleted within 24 hours