HotelHub HMSDocs

08 โ€” Indonesia Compliance #

Pajak (PB1, PPN, e-Faktur Coretax), lapor WNA imigrasi, NPWP, KTP/Paspor handling, SIPGAR Kemenparekraf. Built-in, bukan add-on.


1. Pajak Hotel (PB1) #

Dasar hukum #

Implementasi #

Tabel pb1_rates:

region_code (e.g. 'ID-JK', 'ID-BA-BD' Badung)
region_name
rate (default 10.00)
effective_from, effective_until
source_law (referensi Perda)

Setiap properties punya region_code โ†’ resolve PB1 rate dari tabel.

Kalkulasi #

Subtotal (room rate + extras kena pajak) ร— PB1 rate = PB1 amount

PB1 ditagih ke tamu, bukan biaya hotel. Display di folio:

Room charge          1,000,000
Service charge 10%      100,000
PB1 (tax) 10%           100,000
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Total              Rp 1,200,000

Reporting #

Bulanan, hotel lapor PB1 ke Pemkab/Pemkot via SPTPD (Surat Pemberitahuan Pajak Daerah).

App generate:


2. Service Charge #


3. PPN (Pajak Pertambahan Nilai) #

Dua mode untuk hotel: #

A. PPN Final 0% (Pajak Hotel)

B. PPN Non-Final 11% (untuk service di luar room: spa, restaurant tertentu)

C. PPN Exempt

App handle multi-mode per outlet.


4. NPWP #

Wajib #

Optional di guest #


5. e-Faktur Coretax (PPN penjualan) #

Sejak Januari 2025: Coretax DJP #

Sebelumnya: e-Faktur desktop app DJP (efaktur.exe). Sekarang: Coretax โ€” web platform integrated, ada API.

Use case di hotel #

Workflow #

Reservation/POS order issued โ†’ 
    PPN non-final calculated โ†’ 
    Generate e-Faktur record (status='draft') โ†’ 
    Build XML per format DJP โ†’ 
    Submit ke Coretax API (with NSFP โ€” Nomor Seri Faktur Pajak) โ†’ 
    Get response (approved with QR code) โ†’ 
    Status='approved', save QR + PDF โ†’ 
    Email PDF ke buyer

Coretax API integration #

XML format #

Per spesifikasi DJP. Field utama:

App generate XML, validate, submit, save response.

Tabel efaktur_records #

Sudah dideskripsikan di 04-DATABASE_SCHEMA.md ยง13.

NSFP management #


6. Lapor Tamu Asing (WNA) ke Imigrasi #

Dasar hukum #

Format lapor #

Sistem APOA (Aplikasi Pelaporan Orang Asing) atau APIPRO (di beberapa daerah Bali). Format CSV/JSON.

Field wajib:

Implementation #

ReservationCheckedIn event (untuk WNA guest)
    โ†“
Listener: TriggerLaporWnaListener
    โ†“
Build payload from guest + reservation
Save to lapor_wna_records (status='pending')
    โ†“
Submit to APOA API (atau email PDF kalau region tidak online)
    โ†“
Status='submitted'
    โ†“
Receive ack โ†’ status='accepted'

Dashboard #


7. KTP / Paspor Scan + OCR #

Saat check-in #

FO clicks "Scan KTP" โ†’ camera HP / webcam open
    โ†“
Capture image
    โ†“
OCR pipeline:
  Primary: Tesseract local (gratis, offline)
  Fallback: Vision LLM BYOK (Gemini Flash, OpenAI Vision via OpenRouter)
    โ†“
Parse fields: NIK, name, dob, address, gender
    โ†“
Auto-fill registration form
    โ†“
FO verify, edit kalau ada error, save
    โ†“
Image stored: storage/app/private/guest/{id}/ktp.jpg (encrypted at rest, RBAC)

Validasi NIK #

Paspor #


8. SIPGAR Kemenparekraf (Phase 2) #

Sistem Informasi Pariwisata dan Geospasial โ€” Kemenparekraf collect statistik pengunjung akomodasi.

Reporting bulanan #

Implementation #


9. Pajak Restoran / Pajak Hiburan #

Kalau hotel punya restoran terbuka untuk umum (bukan in-house guest only):

Kalau hotel punya spa/karaoke/diskotik (entertainment):

App track terpisah, report SPTPD per kategori.


10. PPh 23 (Withholding Tax) #

Saat hotel bayar agen / OTA / vendor:

App support:


11. Audit Trail untuk Pajak #

Semua transaksi yang impact pajak harus auditable:

Audit log append-only, tidak bisa di-edit/delete (DB-level constraint).

Saat audit pajak (Pemkot, DJP), tampilkan trail untuk tiap transaksi.


12. Format Laporan PSAK #

Wajib (Phase 1) #

Tambahan (Phase 2) #

Chart of Accounts (USALI + PSAK adaptasi) #

USALI (Uniform System of Accounts for Lodging Industry) basis internasional. Adaptasi:

Detail di 09-ACCOUNTING.md.


13. Privacy & Data Protection (UU PDP) #

UU 27/2022 โ€” Pelindungan Data Pribadi. Wajib:

App provide:


14. Hotel License & Permits #

App track expiry dokumen perijinan hotel:

Field di properties + alert 30/60/90 hari sebelum expired.


15. Compliance Dashboard #

Single page admin โ†’ Compliance:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Compliance Status โ€” Hotel ABC                       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  โœ… PB1 SPTPD bulan ini        โ€” submitted 2026-04-10โ”‚
โ”‚  โš ๏ธ  Lapor WNA pending         โ€” 3 records (>24 jam) โ”‚
โ”‚  โœ… e-Faktur stock              โ€” 89 of 100 NSFP     โ”‚
โ”‚  โœ… KTP scan rate               โ€” 98% last 30 days   โ”‚
โ”‚  โš ๏ธ  TDUP expiry                โ€” 45 days remaining  โ”‚
โ”‚  โœ… Privacy consent rate        โ€” 100% bookings      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Click each โ†’ drill-down + action.


16. Test Cases Critical #

# Scenario Expected
C1 Reservation di Bali (Badung) PB1 10% applied
C2 Reservation WNA, check-in done Auto-create lapor_wna record
C3 F&B order (PKP) PPN 11% on subtotal
C4 Guest request invoice with NPWP Invoice header includes NPWP
C5 e-Faktur submit ke Coretax XML validate + accept
C6 NSFP exhausted Alert + block new e-Faktur until refill
C7 Night audit DRR + tax summary generated
C8 Refund partial Tax basis recalc, e-Faktur cancellation if applicable
C9 Guest data export request ZIP with all guest data within 7 days
C10 Privacy breach detected Audit log + alert mechanism trigger

Detail: 21-QA_CHECKLIST.md.


17. References #