Billing & FinOps

Preview — pending review

This reference is generated from the platform API contract and is still under review. Operations, fields, and descriptions can change before publication.

Get the bank-transfer payment instructions for the active scope

GET
/scopes/{scopeId}/billing/payment-instructions

Returns WHERE to send an offline bank transfer for the active scope: the billing legal entity (subsidiary) that issues this tenant's invoices, plus that entity's PAYEE bank account in the same beneficiary vocabulary an uploaded WireReceipt already uses. The entity is resolved exactly as the invoice freeze resolves it — the tenant's billing country maps 1:1 to a subsidiary, falling back to the platform default — so a tenant in a mapped country is given that entity's account. payee is null whenever the resolved entity publishes no USABLE account (no beneficiary IBAN and no account number); the console renders its "account not published — contact Support" panel off that null instead of showing a bank name with a blank IBAN. A half-configured account is never returned as a partial object. Validation: scopeId must reference a tenant/subscription/project scope the caller can access — unknown or unauthorized scope maps to 404 NOT_FOUND. No other inputs. Async & state: Synchronous read; no state change. The account is platform configuration edited by operators, not by the tenant; no SSE frames are tied to this endpoint. Errors: 401 unauthenticated; 403 caller lacks a billing-capable role (owner|admin|contributor|reader|billing) on the scope; 404 unknown scopeId; 500 read failure. Idempotency/Concurrency: Safe, cacheable; no idempotency key required.

Authorization

bearerToken
headerAuthorizationBearer <token>

An API token (pc_live_…) or a service-account key (sak_live_…), created in Identity & Access Management and sent as Authorization: Bearer <token>. Requests are rate limited per credential and per tenant: every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, and a refused request gets 429 RATE_LIMITED with Retry-After.

Path Parameters

scopeId*string

Opaque ownership+authorization scope resolving to tenant + subscription + project.

Response Body

The issuing subsidiary and its payee bank account (payee null when unpublished).

application/json
  1. response

Where to send an offline bank transfer for a scope: the billing legal entity that issues this tenant's invoices, plus its payee account. payee is null when that entity publishes no usable account — the honest empty state the console turns into a "contact Support" panel rather than rendering a half-filled account.

subsidiaryId*|

Reference id of the issuing subsidiary (audit only); null only when the platform has no billing entity configured at all.

subsidiaryName*|

Display name of the issuing legal entity (e.g. Acme Cloud Türkiye).

payee*|null

The beneficiary account to transfer to, or null when the resolved entity publishes no usable account (no IBAN and no account number).

curl -X GET "https://example.com/scopes/string/billing/payment-instructions"
{  "subsidiaryId": "string",  "subsidiaryName": "string",  "payee": {    "beneficiaryName": "string",    "bankName": "string",    "iban": "string",    "swiftBic": "string",    "accountNumber": "string",    "bankAddress": "string"  }}