---
title: "List read-only current provider invoice dry runs"
method: GET
path: "/providers/current/invoice-dry-runs"
tags: ["Usage summary"]
---

# List read-only current provider invoice dry runs

`GET /providers/current/invoice-dry-runs`

## Request

- Base URL: `https://platform-api.homejourney.sg/v1`
- URL: `https://platform-api.homejourney.sg/v1/providers/current/invoice-dry-runs`
- Auth: HTTP bearer

Returns invoice dry-run previews for all platform launch verticals when the authenticated automation client has `platform.billing_owner_visibility.read`. External URL: `/v1/providers/current/invoice-dry-runs`. Current Next.js implementation path: `/api/platform/v1/providers/current/invoice-dry-runs`. This read-only route does not require `Idempotency-Key`; it exposes deterministic invoice draft previews, approved rollup line items, and manual-review posture only. It never reads usage event tables or partner-facing billing tables, returns raw usage payloads or raw payment payloads, sends invoices, collects payments, enforces quota, suspends credentials, or calls external finance providers.

## Headers

- `X-Correlation-Id` string

## Response `200`

Read-only invoice dry-run previews.

- InvoiceDryRunsResponse
  - `invoice_dry_runs` InvoiceDryRunItem[], required
    - `module_id` 'agent' | 'agency' | 'business' | 'mortgage' | 'legal' | 'developer' | 'renovation', required
    - `label` string, required
    - `workspace_root` string, required
    - `invoice_id` string, required
    - `billing_account_org_id` string, required
    - `billing_account_client_id` string, required
    - `billing_owner` string, required
    - `invoice_contact` string, email, required
    - `billing_period` string, required
    - `currency` string, required
    - `commercial_package_id` string, required
    - `support_tier` string, required
    - `aws_cost_owner` string, required
    - `invoice_state` 'draft' | 'review_required' | 'approved' | 'issued' | 'paid' | 'partially_paid' | 'voided' | 'credited' | 'disputed' | 'uncollectible', required
    - `payment_terms` string, required
    - `invoice_delivery_mode` 'draft_only', required
    - `send_mode` 'dry_run_preview_only', required
    - `send_review_state` 'manual_review_required', required
    - `line_items` InvoiceDryRunLineItem[], required
      - `capability` string, required
      - `unit` 'api_call' | 'tool_call' | 'cli_call' | 'webhook_delivery' | 'webhook_replay' | 'site_view' | 'lead_submission' | 'schedule_request' | 'crm_delivery' | 'storage_gb_month' | 'signed_url' | 'document_scan' | 'source_refresh' | 'source_snapshot' | 'sandbox_reset' | 'certification_review' | 'marketplace_install', required
      - `billable_units` integer, required
      - `included_units` integer, required
      - `adjusted_units` integer, required
    - `line_item_count` integer, required
    - `rollup_count` integer, required
    - `draft_invoice_generation_allowed` boolean, required
    - `invoice_external_send_allowed` false, required
    - `invoice_send_side_effects_allowed` false, required
    - `payment_collection_allowed` false, required
    - `quota_enforcement_allowed` false, required
    - `credential_suspension_allowed` false, required
    - `raw_usage_event_payload_visible` false, required
    - `raw_payment_payload_visible` false, required
    - `proof_command` string, required
    - `evidence_path` string, required
    - `launch_ready` boolean, required
    - `blocker` string, nullable, required
    - `next_action` string, required
  - `summary` InvoiceDryRunAggregate, required
    - `total_verticals` integer, required
    - `plan_state_visible` integer, required
    - `billing_owner_visible` integer, required
    - `invoice_contact_visible` integer, required
    - `billing_owner_visibility_gates` integer, required
    - `partner_billing_table_reads_deferred` integer, required
    - `usage_events_present` integer, required
    - `customer_visible_usage_summaries` integer, required
    - `automatic_overage_enforcement_blocked` integer, required
    - `billing_owner_gate_side_effects_blocked` integer, required
    - `launch_ready_contracts` integer, required
    - `source_contract` 'vertical_billing_usage_contract', required
    - `invoice_dry_run_model` 'deterministic_invoice_draft_contract_no_billing_table_reads', required
    - `invoice_dry_runs_present` integer, required
    - `draft_invoice_generation_allowed` integer, required
    - `invoice_send_side_effects_blocked` integer, required
    - `payment_collection_blocked` integer, required
  - `authorization` InvoiceDryRunsAuthorization, required
    - `organization_id` string, uuid, required
    - `client_id` string, uuid, required
    - `api_key_id` string, uuid, required
    - `required_scope` 'platform.billing_owner_visibility.read', required
    - `granted_billing_scopes` PlatformScope[], required
    - `actor_model` 'api_key_automation_client', required
    - `data_access` 'invoice_dry_run_contract_only', required
    - `table_access` 'no_usage_event_or_partner_billing_table_reads', required
    - `mutation_access` 'billing_writes_deferred', required
  - `public_safety` InvoiceDryRunsPublicSafety, required
    - `usage_event_table_reads_allowed` false, required
    - `partner_billing_table_reads_allowed` false, required
    - `raw_usage_event_payload_visible` false, required
    - `raw_payment_payload_visible` false, required
    - `invoice_external_send_allowed` false, required
    - `invoice_send_side_effects_allowed` false, required
    - `payment_collection_allowed` false, required
    - `quota_enforcement_allowed` false, required
    - `credential_suspension_allowed` false, required
    - `external_finance_calls` false, required
    - `billing_write_mutations_enabled` false, required
  - `principal` Principal, required (unresolved $ref)
  - `livemode` boolean, required
  - `request_id` string, required

## Other responses

- `400`: Request validation failed.
- `401`: Missing or invalid platform API key.
- `403`: Credential, environment, or scope is not allowed.
- `404`: Platform API feature or resource is not available.
- `429`: Rate limit exceeded.
- `500`: Unexpected platform API failure.

---

[API](https://skmtc.dev/homejourney/apis/homejourney-platform-api.md) · [All operations](https://skmtc.dev/homejourney/apis/homejourney-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/homejourney/apis/homejourney-platform-api/revisions/a2c6fe063db1?raw)
