REST API · OpenAPI 3.0 · HMAC Webhooks

API Documentation

Integrate Bali tax compliance into your applications

12 Endpoints100 req/minHMAC-SHA256OpenAPI 3.0

Bearer Auth

API keys in Settings → API. vt_live_* for production, vt_test_* for sandbox.

Rate Limits

100 requests/minute per API key. Headers: X-RateLimit-Limit, X-RateLimit-Remaining.

Signed Webhooks

HMAC-SHA256 signature on every payload. Automatic exponential backoff retry on failure.

OpenAPI 3.0

Full specification at /openapi.yaml. Use openapi-generator to create SDKs in any language.

Authentication

All API requests require a Bearer token API key. Get your key from Dashboard > Settings > API Keys.

Base URL: https://villa-tax.operium.store/api/v1
Auth:     Authorization: Bearer vt_live_YOUR_API_KEY
Sandbox:  Bearer vt_test_YOUR_KEY (returns testMode: true)

Rate limited to 100 requests/minute per API key. Headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Quick Start

JavaScriptnode.js
// Authenticate with Bearer token
const headers = {
  'Authorization': 'Bearer vt_live_YOUR_API_KEY',
  'Content-Type': 'application/json'
};

// List your properties
const res = await fetch(
  'https://villa-tax.operium.store/api/v1/properties?organizationId=YOUR_ORG_ID',
  { headers }
).then(r => r.json());
// { data: [...], testMode: false, meta: { total: 5, page: 1, limit: 20 } }

// Create a booking + auto tax calculation
const booking = await fetch('https://villa-tax.operium.store/api/v1/bookings', {
  method: 'POST', headers,
  body: JSON.stringify({
    propertyId: 'prop-uuid',
    guestName: 'Alice Martin',
    checkIn: '2025-06-15',
    checkOut: '2025-06-22',
    grossAmountIdr: 14000000,
    platform: 'airbnb'
  })
}).then(r => r.json());
// { data: { id: '...', taxBreakdowns: [{ type:'PBJT', rate:0.10, ... }] }, testMode: false }
GET/v1/organizations
GET/v1/organizations/{id}
GET/v1/properties
POST/v1/properties
GET/v1/properties/{id}
GET/v1/bookings
POST/v1/bookings
GET/v1/bookings/{id}
GET/v1/tax-summary
GET/v1/webhooks/endpoints
POST/v1/webhooks/endpoints
DELETE/v1/webhooks/endpoints/{id}

SDKs for Node.js and Python, Coming Q3 2026

Webhooks

Configure your webhooks from Dashboard > Integrations > Webhooks

booking.created

New booking received

booking.updated

Booking modified

tax.calculated

Tax calculation completed

report.generated

Fiscal report generated

HMAC-SHA256

All webhook payloads are signed with HMAC-SHA256. Verify the X-VillaTax-Signature header using your endpoint secret.

Built for developers who need real tax data

01

Channel Manager Integration

Push bookings from your PMS or channel manager. Tax calculations fire automatically. Build your own reporting layer on top.

02

Property Management Software

Embed fiscal compliance directly into your property management product. Your clients get Indonesian tax compliance without leaving your app.

03

Automated Fiscal Reporting

Pull tax summaries via API to generate monthly PBJT, PPh, and PPN reports automatically. Export to your accounting system with clean JSON.

FAQ

Ready to integrate VillaTax?