SenseCrypt Docs
API ReferenceAdmin Billing

Reconcile Subscription

POST/v1/admin/billing/reconcile

Called by the SPA when it returns from Checkout (?status=success).

Pulls the saved card from Stripe and applies the locked, idempotent recovery NOW, so the dashboard reflects the real result immediately instead of showing stale "Suspended" until the async webhook lands. Returns the fresh subscription so the SPA can render active / payment_failed / no-card without polling.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Response Body

application/json

curl -X POST "https://example.com/v1/admin/billing/reconcile"
{  "status": "string",  "trial_end": "2019-08-24T14:15:22Z",  "trial_days_left": 0,  "current_period_start": "2019-08-24T14:15:22Z",  "current_period_end": "2019-08-24T14:15:22Z",  "has_payment_method": false,  "payment_failed_at": "2019-08-24T14:15:22Z",  "payment_retry_at": "2019-08-24T14:15:22Z",  "payment_action_required_at": "2019-08-24T14:15:22Z",  "payment_action_url": "string",  "card_exp_month": 0,  "card_exp_year": 0,  "suspended_at": "2019-08-24T14:15:22Z",  "deletion_requested_at": "2019-08-24T14:15:22Z",  "purge_date": "2019-08-24T14:15:22Z",  "per_tenant": [    {      "tenant_id": "34f5c98e-f430-457b-a812-92637d0c6fd0",      "name": "string",      "seats": 0,      "mau": 0,      "kms": 0    }  ],  "totals": {    "workforce": 0,    "external": 0,    "kms": 0  },  "estimate_lines": [    {      "description": "string",      "quantity": 0,      "unit_amount": 0,      "amount": 0    }  ],  "estimate_total": 0}