FurniOpsDocs
API referenceBilling

Preview a subscription

What subscribing to, or moving to, the plan and interval would cost now: fee, discount, tax and total, calculated by Stripe Tax from the address (without one, before tax), when it takes effect and what is charged today. An invalid promotion code is reported in promotion, not refused. Changes nothing. While billing is switched off, it answers 409 conflict.

POST/v1/billing/preview

What subscribing to, or moving to, the plan and interval would cost now: fee, discount, tax and total, calculated by Stripe Tax from the address (without one, before tax), when it takes effect and what is charged today. An invalid promotion code is reported in promotion, not refused. Changes nothing. While billing is switched off, it answers 409 conflict.

Authorization

apiKey
AuthorizationBearer <token>

An API key (fo_live_… / fo_test_…) as a bearer token

In: header

Header Parameters

FurniOps-Version?string

Dated API version; pinned per organisation on first use and overridable per request

Value in

  • "2026-10-01"
  • "2026-10-04"
FurniOps-Mode?string

The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused

Value in

  • "live"
  • "test"
Idempotency-Key*string

Unique key for this operation, reused on retries (24 h)

Length1 <= length <= 257
FurniOps-Dry-Run?string

Preview the write and change nothing: true answers the would-be response, explain a Preview (application/vnd.furniops.preview+json)

Value in

  • "true"
  • "explain"

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

The plan and interval to subscribe to, or to move to

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://example.com/v1/billing/preview" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "plan": "string"  }'
{  "object": "billing_preview",  "plan": "string",  "interval": "month",  "currency": "string",  "subtotal": 0,  "discount": 0,  "tax": 0,  "total": 0,  "tax_status": "complete",  "timing": "now",  "effective_at": "2019-08-24T14:15:22Z",  "amount_due": 0,  "credit_applied": 0,  "renews_at": "2019-08-24T14:15:22Z",  "quoted_at": "2019-08-24T14:15:22Z",  "promotion": {    "code": "string",    "valid": true,    "reason": "unknown"  }}