Billing
Read pricing, estimate deployment costs, and manage billing records and payments
Set variables to auto-fill all examples and run requests in-browser.
The Billing API provides rates, estimates, contact details, usage reports, invoices, payment methods, and credits. Send requests to https://api.laserdata.cloud.
Tenant billing reads require billing:read. Changes require billing:manage. The public pricing endpoints below do not require authentication.
Public Pricing
GET/pricingReturn the public rate card for managed AWS and GCP deployments and the BYOC starting monthly price. No authentication required.
The response contains currency, nodes, managed.aws, managed.gcp, and byoc. Managed clouds contain tiers, compute, network_drive, local_nvme, network, and throughput.
tiers describes Standard, Performance, and Enterprise. Each record includes these fields:
| Fields | Meaning |
|---|---|
monthly_base | Starting monthly configuration price |
compute_profile_id, storage_profile_id, storage_gb_per_node | Default compute and storage configuration |
throughput_mb_per_second | Default traffic estimate |
availability_mode | Default availability for the preset |
included_telemetry_days | Managed-tier retention: 14, 30, or 90 days |
vpc_peering, private_link | Access to VPC peering and private endpoints |
Managed telemetry retention comes from the tier record, not the compute profile. network.minimum_monthly describes networking operations already included in monthly_base. Do not add it to the transfer estimate again. Prices use USD under the current published pricing version.
Estimate Pricing
POST/pricing/estimateEstimate the monthly configuration price and usage-inclusive total for a managed configuration or a BYOC deployment. No authentication required. Requests are rate limited.
curl -X POST https://api.laserdata.cloud/pricing/estimate \
-H "Content-Type: application/json" \
-d '{
"variant": "managed",
"managed_tier": "standard",
"cloud": "aws",
"region": "us-east-1",
"compute_profile_id": "small",
"storage_profile_id": "network_drive",
"storage_gb_per_node": 100,
"throughput_mb_per_second": "0.1",
"network_scope": "same_region",
"availability_mode": "single_az"
}'All shown fields except region are required for managed estimates. Omit region to use us-east-1 for AWS or us-central1 for GCP. managed_tier accepts standard, performance, or enterprise.
compute_profile_id selects a size such as small or large. storage_profile_id accepts network_drive or local_nvme. Network scopes are same_region, cross_region_same_cloud, and cross_cloud. Local NVMe requires Performance or Enterprise, while Multi AZ requires Enterprise. Free is excluded because it has no charge.
Throughput uses decimal MB/s, with a self-service range of 0.1 to 100 MB/s. Compute sizing and Local NVMe impose further bounds. Network Drive supports 100 to 30,000 GB per node. Read current limits from the rate card instead of fixing them in application code.
The response includes monthly_base, monthly_total, currency, pricing_version, and these objects:
| Object | Fields |
|---|---|
breakdown | compute, storage, network |
usage | estimated_customer_gb_per_month, provisioned_storage_gb_total, partitions_per_node_at_default_segment, partitions_per_node_at_min_segment |
deployment | nodes, compute_profile_label, storage_profile_label, availability_mode, included_telemetry_days |
capacity | shards_per_node, default_segment_bytes, min_segment_bytes |
monthly_base is the monthly configuration price for compute, storage, and tier features. monthly_total adds estimated data transfer from breakdown.network. Transfer is billed on actual usage, not the selected throughput. Estimates use 30 days of symmetric traffic.
For AWS Standard at 0.1 MB/s, the response gives $199 per month plus $15.552 estimated transfer. The total is $214.552, displayed as $214.55. See Billing & Pricing.
Partitions are dynamic and require no upfront count. The segment-based capacity fields are diagnostic storage calculations, not guaranteed active-partition limits.
For BYOC, send {"variant":"byoc","vcpus_per_node":4}. The estimate uses three nodes for a full 720-hour month. Billing uses actual active capacity and agreed terms.
Billing Info
Get Billing Info
GET/tenants/{tenant_id}/billing/infoRetrieve billing contact details, address, and tax ID for the tenant.
curl https://api.laserdata.cloud/tenants/{tenant_id}/billing/info \
-H "ld-api-key: YOUR_API_KEY"{
"name": "John Doe",
"company": "Acme Corp",
"address": "123 Main St",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country": "US",
"tax_id": "US123456789",
"email": "billing@acme.com",
"phone": "+1-555-0100"
}Update Billing Info
PUT/tenants/{tenant_id}/billing/infoUpdate billing contact information and address.
curl -X PUT https://api.laserdata.cloud/tenants/{tenant_id}/billing/info \
-H "ld-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"company": "Acme Corporation",
"email": "finance@acme.com",
"address": "456 Market St",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country": "US",
"tax_id": "US123456789",
"phone": "+1-555-0100"
}'A successful request returns 204 No Content.
Usage Reports
List Usage Reports
GET/tenants/{tenant_id}/billing/reportsList monthly usage reports with cost breakdown by deployment and resource type.
curl "https://api.laserdata.cloud/tenants/{tenant_id}/billing/reports?page=1&results=10" \
-H "ld-api-key: YOUR_API_KEY"Get Usage Report
GET/tenants/{tenant_id}/billing/reports/{report_id}Retrieve a detailed usage report with per-deployment cost breakdown.
curl https://api.laserdata.cloud/tenants/{tenant_id}/billing/reports/{report_id} \
-H "ld-api-key: YOUR_API_KEY"Detailed reports contain compute_cost, storage_cost, network_cost, and total_cost. Managed reports also expose monthly_base_charge and network_usage_cost before negotiated adjustments. The first includes prorated reserved resources and any billable additional capacity. The second describes measured transfer. Do not add these explanatory amounts to total_cost again.
Credits and Promo Codes
GET/tenants/{tenant_id}/billing/creditsList the tenant's credits and remaining balances. Credits are consumed oldest first.
POST/tenants/{tenant_id}/billing/promo_codesRedeem a promo code once per tenant. Redemption is rate limited.
Redeem a code with {"code":"YOUR_PROMO_CODE"}. Its credit reduces later invoices until used or expired. Marketplace-billed tenants cannot redeem promo codes.
Invoices
List Invoices
GET/tenants/{tenant_id}/billing/invoicesList all invoices for the tenant.
curl "https://api.laserdata.cloud/tenants/{tenant_id}/billing/invoices?page=1&results=10" \
-H "ld-api-key: YOUR_API_KEY"{
"items": [
{
"id": 1,
"tenant_id": 100,
"division_id": null,
"number": "INV-01-2026-100",
"period_start": "2026-01-01T00:00:00Z",
"period_end": "2026-02-01T00:00:00Z",
"status": "paid",
"currency": "USD",
"total": "289.22",
"created_at": "2026-02-01T00:00:00Z"
}
],
"page": 1,
"total_pages": 1,
"total_results": 1
}approvedpaidfailedrefundedpartially_refundedCustomer endpoints do not return draft, pending, or cancelled invoices. Payment is due 14 days after invoice generation.
Get Invoice
GET/tenants/{tenant_id}/billing/invoices/{invoice_id}Retrieve a specific invoice with line items.
curl https://api.laserdata.cloud/tenants/{tenant_id}/billing/invoices/{invoice_id} \
-H "ld-api-key: YOUR_API_KEY"Download Invoice PDF
GET/tenants/{tenant_id}/billing/invoices/{invoice_id}/pdfDownload the invoice as a PDF. Available for customer-visible invoices: approved, paid, failed, refunded, or partially_refunded. Returns the file with Content-Type: application/pdf.
curl https://api.laserdata.cloud/tenants/{tenant_id}/billing/invoices/{invoice_id}/pdf \
-H "ld-api-key: YOUR_API_KEY"Payment Methods
Get Payment Method
GET/tenants/{tenant_id}/billing/payments/methodRetrieve the current payment method on file.
curl https://api.laserdata.cloud/tenants/{tenant_id}/billing/payments/method \
-H "ld-api-key: YOUR_API_KEY"Create Payment Intent
POST/tenants/{tenant_id}/billing/payments/intentsCreate a Stripe SetupIntent to add or update a payment method. Use the returned client_secret with Stripe.js to complete the setup in your UI.
curl -X POST https://api.laserdata.cloud/tenants/{tenant_id}/billing/payments/intents \
-H "ld-api-key: YOUR_API_KEY"Delete Payment Method
DELETE/tenants/{tenant_id}/billing/payments/methodRemove the current payment method on file.
curl -X DELETE https://api.laserdata.cloud/tenants/{tenant_id}/billing/payments/method \
-H "ld-api-key: YOUR_API_KEY"Spend Limits
Configure a deployment threshold through Update Spend Limit.