React 0.14 · Angular 0.2
Billing components for your framework
Pass a bill ID and a session endpoint. The components load authoritative data, renew browser sessions, and perform the actions valid for each bill state.
npm install @mindbill/react@0.14 npm install @mindbill/angular@0.2Compact surface
ConnectedBillStatus
Use this in a case header, receivables list, or sidebar where users need status and the next action without the full editor.
processed
Submitted 8/12/2026 · 13 days old · Updated 8/25/2026
- Charged
- $2,015.00
- Paid
- $0.00
- Balance
- $2,015.00
import { ConnectedBillStatus } from "@mindbill/react";
import "@mindbill/react/styles.css";
<ConnectedBillStatus
billId={billId}
sessionEndpoint="/api/mindbill/status-session"
/>// Any server framework: authenticate, authorize, mint, return.
import { MindBillClient } from "@mindbill/node";
const mindbill = new MindBillClient({
apiKey: process.env.MINDBILL_API_KEY!,
organizationId: process.env.MINDBILL_ORG_ID
});
app.post("/api/mindbill/status-session", async (request, response) => {
const user = await requireUser(request);
const { billId } = request.body;
await assertUserCanAccessBill(user, billId);
const session = await mindbill.createBrowserSession({
component: "bill-timeline",
billId,
allowedOrigin: "https://your-product.example",
expiresIn: 900
});
response.json({
token: session.token,
expiresAt: session.expiresAt
});
});Loading, polling, focus refresh, session renewal, amounts, aging, and status-aware actions.
User authentication, bill authorization, placement, and the surrounding navigation.
Complete surface
ConnectedBillLifecycle
Use this as the billing page. It starts as a prefilled editor and becomes the lifecycle workspace after submission.
import { ConnectedBillLifecycle } from "@mindbill/react";
import "@mindbill/react/styles.css";
<ConnectedBillLifecycle
billId={billId}
sessionEndpoint="/api/mindbill/billing-session"
appearance={{
accentColor: "#17666b",
fontFamily: "inherit"
}}
/>// Reuse the same server pattern with the bill-review scope.
app.post("/api/mindbill/billing-session", async (request, response) => {
const user = await requireUser(request);
const { billId } = request.body;
await assertUserCanAccessBill(user, billId);
const session = await mindbill.createBrowserSession({
component: "bill-review",
billId,
allowedOrigin: "https://your-product.example",
expiresIn: 900
});
response.json({
token: session.token,
expiresAt: session.expiresAt
});
});import { MindBillBillLifecycleComponent } from "@mindbill/angular";
@Component({
standalone: true,
imports: [MindBillBillLifecycleComponent],
template: `
<mindbill-bill-lifecycle
[billId]="billId"
sessionEndpoint="/api/mindbill/billing-session"
[appearance]="{ preset: 'orange-bright' }"
/>
`,
})
export class BillingComponent {
billId = "bill_...";
}Editable claim data, payer matching, one automatic trailing procedure row, attachment selection, a route-detail submission dialog, EORs, payment posting, Second Bill Review, resubmission, and close.
The initial bill snapshot, access control, and the surrounding case workflow. Your API key stays server-side.
No React dependency
Hosted review
Use MindBillBillReview when MindBill should own form state. Mint the short-lived session on your server; the API key never reaches the browser.
// app/api/mindbill/session/route.ts
const session = await mindbill.createBrowserSession({
component: "bill-review",
billId,
allowedOrigin: "https://your-product.example",
expiresIn: 900
});
// components/BillingReview.tsx
<MindBillBillReview
sessionToken={session.token}
embedUrl={session.embedUrl}
onMindBill={refreshStatus}
/>Current public boundary
The React and Angular lifecycles support med-legal and professional billing, review, attachments, submission, status, EORs, payment posting, close, Second Bill Review, and correction/resubmission. Independent Bill Review and lien workflows remain in hosted/full MindBill today.