Mandatory Data Fields For e-Invoicing in Philippines
Mandatory data fields for e-invoicing in the Philippines are the exact data points every BIR e-invoice must carry to pass validation. Miss one, and the file is rejected. The BIR EIS checks each JSON invoice against a fixed schema, so these fields are not optional suggestions.
Key Takeaways
- A BIR-compliant e-invoice must be a system-generated JSON file, digitally signed, and transmitted to the EIS.
- The CAS JSON schema carries complete BIR e invoice mandatory fields.
- Every invoice needs a 24-digit EIS Unique ID built from the issuance date, certification ID, and a control value.
- Split VATable, zero-rated, and VAT-exempt sales into different invoices.
- A missing or malformed field triggers a schema error, and the invoice does not count as issued.
What is a BIR-Compliant e-Invoice?
A BIR-compliant e-invoice is a sales document generated by an accredited system, in JSON, digitally signed, and accepted by the EIS. It also includes sales invoices, credit and debit memos, and service billings.
A BIR-compliant e-invoice must be:
- Generated by a system with a valid Permit To Use (or Acknowledgement Certificate) and EIS Certification.
- Formatted as JSON, with all amounts in PHP.
- Digitally signed and sent to eis.bir.gov.ph.
- Assigned a 24-digit EIS Unique ID.
- Passed EIS validation (a success returns SUC001).
Fail any one, and it is not compliant. I have seen teams assume a CAS accreditation alone is enough. It is not. EIS certification is separate.
Complete List of Mandatory Data Fields
These are the required invoice fields Philippines businesses must populate in the CAS JSON, the fuller of the two schemas. Grouped by block below.
Header. CompInvoiceId (internal control number), IssueDtm (issuance date), EisUniqueId (24-digit ID), DocType, TransClass (VATable, zero-rated, or exempt), CorrYN (correction flag).
Seller. TIN (9 digits), BranchCd (HQ is 00000), Type (VAT or non-VAT), RegNm, BusinessNm. These must match your BIR registration exactly.
Buyer. TIN (use 000000000 if unregistered or foreign), BranchCd, BusinessNm.
Line items. Nm, Qty, UnitCost, SalesAmt, RegDscntAmt, SpeDscntAmt, NetSales. Up to 1,000 lines per invoice.
Summary and tax. TotNetItemSales, RegAmt, SpeAmt, OtherTaxRev, TotNetSalesAftDisct, VATAmt, WithholdIncome, WithholdBusVAT, WithholdBusPT, OtherNonTaxCharge, NetAmtPay.
Currency. Currency (ISO code), ExchangeRate, ForexAmt. Populate these only for foreign-currency deals.
Correction (conditional). When CorrYN is Y, add CorrectionCd and PrevUniqueId.
One thing worth flagging on the Philippines e-invoicing data requirements: VATAmt must be 0 on zero-rated or exempt invoices. Put a figure there by mistake, and you get an ERR004.
Mandatory Data Fields (Quick Reference Table)
Group | Field | JSON key | CAS | POS |
| Basic | Invoice control no. | CompInvoiceId | Yes | Yes |
| Basic | Issuance date | IssueDtm | Yes | Yes |
| Basic | EIS Unique ID | EisUniqueId | Yes | Yes |
| Basic | Document type | DocType | Yes | Yes |
| Basic | Transaction class | TransClass | Yes | Yes |
| Seller | TIN | Tin | Yes | Yes |
| Seller | Branch code | BranchCd | Yes | Yes |
| Seller | Registered name | RegNm | Yes | Yes |
| Buyer | TIN | Tin | Yes | Optional |
| Buyer | Business name | BusinessNm | Yes | Optional |
| Line item | Name, qty, unit cost | Nm, Qty, UnitCost | Yes | Aggregated |
| Tax | VAT amount | VATAmt | Yes | Yes |
| Tax | VATable/exempt/zero sales | via TransClass | Yes | Yes |
| Net | Net amount payable | NetAmtPay | Yes | Yes |
| Currency | ISO, FX rate, forex amt | Currency, ExchangeRate, ForexAmt | Yes | Yes |
| Correction | Code, previous ID | CorrectionCd, PrevUniqueId | Conditional | Conditional |
CAS carries full accounting detail. POS aggregates and drops the line-item array. That is the main split in the BIR invoice data structure.
BIR e-Invoice Format Requirements
The BIR EIS invoice format is JSON, sent over a REST API to eis.bir.gov.ph. XML is allowed for storage, not transmission. A few rules that catch people out:
- Authentication. Bearer token, valid for six hours. Reuse it until it expires.
- Batch limits. Up to 100 invoices per issuance call, up to 1,000 line items per invoice.
- Null handling. String fields take null or ""; number fields take 0.00. Never drop a mandatory key.
- Split mixed sales. VATable, zero-rated, and exempt lines get separate invoices with distinct EIS Unique IDs.
- Signing. The payload is AES-256 encrypted and signed with your certificate.
On the e-invoice data validation Philippines side, EIS runs its own checks: signature, duplicate IDs, seller TIN, date consistency, and the VAT sign rules. Codes worth knowing:
Code | Meaning |
| SUC001 | Passed all checks |
| SYN002 | Invalid signature |
| SYN003 | Duplicate EIS Unique ID |
| SYN004 | Schema error (missing field, wrong type) |
| ERR001 | Seller TIN not registered |
| ERR004 | VAT sign mismatch, or VAT on an exempt invoice |
A quick note on the law. The v2.01 schema still uses the older SI/OR/DM/CM/SB document split. Under RA 11976 (EOPT), the OR and SI distinction was folded into a single "Invoice" from January 2024, so read the DocType codes with that in mind and check bir.gov.ph before go-live. This shapes your invoice reporting requirements Philippines end to end.