Back to list
jgtolentino

bir-tax-filing

by jgtolentino

1🍴 1📅 Jan 25, 2026

SKILL.md


name: bir-tax-filing description: Guides BIR tax return preparation and filing for Philippine compliance version: 1.0.0 author: InsightPulse AI tags: [tax, bir, compliance, philippines, withholding]

BIR Tax Filing Skill

Overview

This skill provides comprehensive guidance for Bureau of Internal Revenue (BIR) tax compliance, including preparation, validation, and filing of various tax returns required for Philippine businesses.

Supported Forms

FormNameFrequency
1601-CMonthly Withholding Tax on CompensationMonthly
1601-EMonthly Expanded Withholding TaxMonthly
2550MMonthly VAT DeclarationMonthly
2550QQuarterly VAT ReturnQuarterly
1601-QQuarterly Income TaxQuarterly
1702Annual Income Tax ReturnAnnual
1604-CFAnnual Alphalist (Compensation)Annual
2307Certificate of Creditable Tax WithheldAs needed

Workflow by Form Type

Form 1601-C (Monthly Withholding - Compensation)

Deadline: 10th of following month

Data Sources:

Odoo hr.payslip → Compute withholding tax
Fields: employee_id, date_from, date_to, net_wage, tax_withheld

Preparation Steps:

  1. Export payroll data for the period
  2. Summarize by tax bracket
  3. Reconcile to payroll register
  4. Generate BIR format data
  5. Review and validate

Validation Checks:

validations = [
    ("Total employees matches payroll", lambda x: x.employee_count == payroll.count),
    ("Tax withheld > 0", lambda x: x.total_tax > 0),
    ("Dates within period", lambda x: x.date_range_valid),
    ("TIN format valid", lambda x: re.match(r'\d{3}-\d{3}-\d{3}-\d{3}', x.tin)),
]

Form 1601-E (Monthly Expanded Withholding Tax)

Deadline: 10th of following month

Data Sources:

Odoo account.move → Vendor invoices with EWT
Filter: tax_ids contains EWT tax codes

EWT Rate Reference:

Payment TypeRate
Professional fees (individuals)10%
Professional fees (corporations)15%
Rent5%
Contractors2%

Preparation Steps:

  1. Query vendor invoices with EWT taxes
  2. Group by tax rate / ATC code
  3. Generate payee listing (Alphalist)
  4. Summarize totals
  5. Validate against GL

Form 2550Q (Quarterly VAT Return)

Deadline: 25th of month following quarter end

Data Sources:

Odoo account.move →
  Output VAT: move_type='out_invoice', tax like '%VAT%'
  Input VAT: move_type='in_invoice', tax like '%VAT%'

VAT Computation:

Output VAT = Sum of VAT on sales
Input VAT = Sum of VAT on purchases (claimable)
VAT Payable = Output VAT - Input VAT

Validation:

  • Output VAT ties to sales register
  • Input VAT ties to purchase register
  • VAT creditable percentage applied correctly
  • Zero-rated sales documented

Automation Support

n8n Workflow: BIR Deadline Reminder

The bir_deadline_reminder.json workflow:

  • Runs daily at 8 AM
  • Calculates upcoming deadlines
  • Posts to #bir-alerts channel
  • Tags urgent items (< 3 days)

Data Export Query

-- EWT Summary for 1601-E
SELECT
    p.vat AS payee_tin,
    p.name AS payee_name,
    at.name AS tax_type,
    at.amount AS tax_rate,
    SUM(aml.debit) AS gross_amount,
    SUM(aml.debit * at.amount / 100) AS tax_withheld
FROM account_move_line aml
JOIN account_move am ON aml.move_id = am.id
JOIN res_partner p ON am.partner_id = p.id
JOIN account_tax at ON aml.tax_line_id = at.id
WHERE am.state = 'posted'
  AND am.move_type = 'in_invoice'
  AND at.name LIKE '%EWT%'
  AND am.date BETWEEN '2026-01-01' AND '2026-01-31'
GROUP BY p.vat, p.name, at.name, at.amount;

Filing Process

eFPS Filing

  1. Log in to efps.bir.gov.ph
  2. Select form type
  3. Enter header information (TIN, period)
  4. Upload data file (CSV/XML)
  5. Review summary
  6. Submit and pay
  7. Save confirmation receipt

eBIRForms Filing

  1. Download offline software
  2. Select form
  3. Enter data manually or import
  4. Validate locally
  5. Generate submission file
  6. Upload to BIR portal
  7. Process payment separately

Certificate Generation (Form 2307)

When Required: Within 20 days of withholding

Data Required:

  • Payee TIN
  • Payee name and address
  • Period covered
  • Income paid
  • Tax withheld
  • ATC code

Odoo Integration:

# Generate 2307 from vendor bill
def generate_2307(move_id):
    move = env['account.move'].browse(move_id)
    return {
        'payee_tin': move.partner_id.vat,
        'payee_name': move.partner_id.name,
        'period': move.date.strftime('%m/%Y'),
        'income_payment': move.amount_untaxed,
        'tax_withheld': sum(move.tax_line_ids.mapped('amount')),
    }

Error Handling

ErrorCauseResolution
Invalid TINFormat errorVerify TIN with payee
Duplicate filingAlready submittedCheck eFPS history
Amount mismatchData errorReconcile to source
System timeoutBIR server issueRetry during off-peak

Compliance Calendar

## January 2026
- Jan 10: 1601-C, 1601-E (Dec 2025)
- Jan 20: 2550M (Dec 2025)
- Jan 25: 2550Q (Q4 2025)
- Jan 31: 1604-CF (2025 Annual)

## February 2026
- Feb 10: 1601-C, 1601-E (Jan)
- Feb 20: 2550M (Jan)

## March 2026
- Mar 1: 1604-E (2025 Annual)
- Mar 10: 1601-C, 1601-E (Feb)

References

Changelog

  • v1.0.0 (2026-01-06): Initial release

Score

Total Score

50/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon