Premium Financing
Restricted sandbox financing endpoints are deployed through the Audit1 Payment API. Customer financing is not available.
Before you start #
Financing is not enabled for customer use. Customer checkout and test invitation delivery remain disabled. Sandbox requests require approved account settings and configured record scopes; signing agreements and taking down payments are not available to customers. This page does not change the Payment Sessions contract.
Instalment plans split a payment into scheduled charges. They do not create a premium finance agreement.
Create a test session #
Restricted sandbox use. This deployed option requires an active sandbox account with checkout enabled and approved record scopes. It does not create a quote, sign an agreement, or take a payment.
POST /api/v1/payment-sessions
Use the existing Payment Sessions request with billing_method: "PREMIUM_FINANCE". The employer, carrier and policy must exist, the policy must belong to that employer and carrier, and both must be within your account's configured scope.
Request #
{
"billing_method": "PREMIUM_FINANCE",
"idempotency_key": "finance-test-001",
"mode": "embedded",
"employer_id": "68a1f4c2e9b3d70012ab34cd",
"policy_id": "68a1f4c2e9b3d70012ab34ce",
"carrier_id": "68a1f4c2e9b3d70012ab34cf",
"premium_cents": 100000,
"fee_cents": 1000,
"customer": {
"name": "Sample Insured LLC",
"email": "ap@sampleinsured.com"
}
}
| Field | Requirement |
|---|---|
billing_method |
Must be PREMIUM_FINANCE for this test path |
idempotency_key |
Required: 8–128 letters, digits, underscores or hyphens |
mode |
embedded; defaults to this value for test financing |
currency |
USD only; defaults to usd |
| Amounts and customer details | Same validation and saved checkout details as Payment Sessions |
| Delivery and instalment-plan fields | Email/text delivery and instalment-plan inputs are not supported on this test path |
Response #
The response uses the existing Payment Sessions format and returns the saved session's id. No payment URL or card checkout secret is issued. Use that id to read financing status below.
Repeating the same request with the same key returns the same saved session, including after an interrupted save. Changing its checkout details with the same key returns 409. A retry does not reopen a cancelled or expired session.
Test financing sessions cannot be paid through the ordinary public card or bank checkout, or reissued as payment invitations. Creating a session alone does not request financing terms.
Open financing checkout #
Restricted sandbox use. This deployed endpoint prepares quotes for the financing component inside your existing checkout. It requires verified test account settings, carrier mappings and an approved checkout address.
POST /api/v1/payment-sessions/financing-checkout
Use the test-session request above, with the insured's business address:
{
"insured": {
"business_name": "Sample Insured LLC",
"address": "100 Sample Street",
"city": "Kansas City",
"state": "MO",
"zip_code": "64105"
}
}
The business name must match the employer record. Policy dates and coverage come from the saved policy. If you also send policy.effective_date, policy.expiration_date or policy.policy_number, they must match that record. The account's financing program and carrier mapping are controlled by the server. Missing dates, unsupported coverage and unconfigured mappings are refused before a financing request is sent.
Response #
{
"ok": true,
"data": {
"session_id": "68b7c1d4e9b3d70012ab9911",
"environment": "sandbox",
"status": "ready",
"checkout_token": "EXAMPLE_CHECKOUT_TOKEN",
"finance_access_token": "EXAMPLE_PAGE_TOKEN",
"expires_at": "2026-09-14T20:15:00.000Z"
}
}
checkout_token opens the shared financing component. It is returned only when the saved quote batch is ready and the request remains active. Keep the customer in the current checkout; do not submit card or bank details to this endpoint.
finance_access_token gives access to the same request on Audit1's payment page at /pay/{finance_access_token}. It cannot open the ordinary card or bank checkout. Treat both tokens as private: do not log them, put them in analytics, or share them with another customer.
The component handles financing terms, the agreement and the down payment. Its browser events do not mark a payment complete.
| Status | Meaning |
|---|---|
ready |
The financing component can open |
pending |
The first request is still in progress |
on_hold |
The result needs review; no new submission is made |
expired |
The saved request has expired; it is not reopened |
payment_reported |
A verified notice matches the quoted down payment; financing confirmation is still pending |
Poll by repeating the same request with the same idempotency_key. Retries reuse the saved session and submission; they never resend an uncertain creation request. Do not generate a new key to recover from a timeout. Changed request details return 409. Missing test setup returns 503; invalid insured or policy details return 400.
Optional test email invitation #
Only the financing-checkout endpoint above accepts a test invitation. Add these fields to the same request:
{
"deliver": {
"email": true,
"email_to": "approved-test-recipient@example.com"
}
}
Email delivery must be explicitly enabled for sandbox testing, and the recipient must match the configured test-recipient allowlist. Omitting email_to uses customer.email; that address must also be approved. Omitting deliver, or setting email to false, sends nothing. Text delivery remains unavailable.
An invitation is attempted only when checkout is ready, using the account's verified checkout host, branding and sender. The email identifies the request as a test and links to the financing payment page. It does not contain API credentials or indicate that financing or payment is complete.
The ready response also includes:
{
"delivery": [
{
"channel": "email",
"to": "approved-test-recipient@example.com",
"status": "sent",
"at": "2026-09-14T20:00:00.000Z"
}
],
"delivery_ok": true
}
sent means the email service accepted the send; it does not confirm inbox delivery. An unsuccessful or uncertain attempt returns status: "failed", a generic error, and delivery_ok: false. Repeating the same request does not send another email, including after an interrupted or uncertain send. Each session permits only one invitation recipient and URL; changing either after that attempt returns 409.
Invitations are disabled by default (503). An unapproved or invalid recipient returns 400; unavailable checkout settings or a closed session return 409. No email is sent while checkout is pending, on hold or expired.
Customer page #
The payment page reads GET /public/financing-checkouts/{finance_access_token}. This read-only endpoint requires the private page token, checks the account and session on every request, and returns the existing branded payment-page details with a finance status object. The ordinary card and bank controls remain unavailable on this test financing page.
Read financing status #
Sandbox only. This deployed read-only endpoint requires an active sandbox account and an owned session within its configured scope. It does not create a financing request or take a payment.
GET /api/v1/payment-sessions/{id}/financing
This endpoint uses the Payment API host and the same X-Client-ID / X-Client-Secret authentication as Payment Sessions. It requires an active sandbox account. The session must belong to that account, and both its carrier and employer must be within the account's configured scope. An empty list grants no access unless the account is explicitly configured for all carriers or employers.
Response #
{
"ok": true,
"data": {
"session_id": "68b7c1d4e9b3d70012ab9911",
"status": "quote_ready",
"quote_count": 1
}
}
quote_count is returned only when the status is quote_ready. The response contains no checkout token or agreement. A verified down-payment notice is reported separately from financing acceptance.
| Status | Meaning |
|---|---|
not_started |
No financing attempt is recorded for this account and session |
pending |
A request is in progress; do not submit another request |
quote_ready |
Quotes have been saved; this does not mean financing was accepted or paid |
on_hold |
The result is uncertain or unusable; do not retry the submission |
expired |
The session or its stored financing request has expired |
payment_reported |
A verified notice matches the quoted down payment; financing confirmation remains pending |
Reading status never restarts an expired or interrupted request, and never changes the saved payment status.
Errors #
| Code | Meaning |
|---|---|
403 |
The account is not an active sandbox account, or the session is outside its carrier or employer scope |
404 |
The session identifier is invalid, or no sandbox session belongs to this account with that identifier |
409 |
The session is closed, uses a different currency, or already has a competing payment in progress |
500 |
Status could not be read; no new financing request was submitted |
Download an agreement #
Sandbox only. This deployed endpoint retrieves an agreement already associated with a saved financing quote. Quotes can be prepared through the sandbox checkout endpoint above when its required settings are configured.
GET /api/v1/payment-sessions/{id}/financing/agreements/{quoteKey}
Use the same authentication and sandbox account scope as the status endpoint above. Only quote identifiers stored against that payment session are accepted. The session and financing request must still be active when the download finishes.
Response #
The response is the original PDF agreement, sent as a download. It is not a signed agreement or a payment receipt. The response is not cached.
Errors #
| Code | Meaning |
|---|---|
403 |
The account is not an active sandbox account, or the session is outside its scope |
404 |
The session or its saved quote cannot be found for this account |
409 |
The request has expired or the session is unavailable for financing |
502 |
The agreement could not be retrieved or access became unavailable during retrieval |
503 |
Test agreement retrieval is not configured |
Downloading an agreement does not sign it, book financing, or take a payment.
Payment confirmation #
A financing quote, signature, or booked agreement does not confirm that the down payment was received. Financing acceptance and payment confirmation must be tracked separately.
The sandbox integration records verified down-payment notices against the saved request and quote. Duplicate notices do not create another payment record. This evidence does not mark the policy paid, book financing, or confirm that funds have cleared at the bank.
For the payment methods available today, use the events documented in Payment Webhooks. Those events distinguish payment completion, a processor's settlement report, and a match to the receiving bank account. They do not currently provide a financing confirmation.
Related guides #
- Payment Sessions — create a branded invitation to pay.
- Payment Webhooks — receive payment status notifications.