Overview

Financing Integration Guide

Slate allows you to surface pre-qualified financing offers directly inside your product. Customers are evaluated automatically, and approved offers are displayed via an embeddable banner.

This guide walks you through the full integration flow — from registering customers to embedding financing offers and monitoring financing agreements.


How It Works

  1. Create a customer — Register your customer in Slate as either a person or a business
  2. Automatic evaluation — Slate evaluates customers and generates pre-approval offers
  3. Create session token — Generate a secure token on your backend for each customer
  4. Display offers — Embed Slate's script in your frontend to show financing banners
  5. Customer application — Users click the banner and complete their application on Slate's hosted page
  6. Financing agreement — Approved applications result in financing agreements, with webhook notifications sent to your system

Integration Steps

Step 1 — Create a Customer

Register each customer in Slate. A customer can be a business (commercial entity) or a person (private individual). Use your own stable identifier as the externalId to easily reference the customer later.

POST https://api.tryslatehq.com/customers

Request:

{
  "type": "BUSINESS",
  "externalId": "cus_123",
  "business": {
    "legalName": "Acme Corp",
    "dba": "Acme",
    "website": "https://acme.com",
    "type": "PARTNERSHIP",
    "address": {
      "address1": "123 Main St",
      "address2": null,
      "city": "San Francisco",
      "postalCode": "94105",
      "country": "US",
      "state": "AL"
    },
    "contact": {
      "fullName": "John Doe",
      "email": "john@acme.com",
      "phone": "+15551234567"
    }
  }
}

Request:

{
  "type": "PERSON",
  "externalId": "cus_456",
  "person": {
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "jane.doe@email.com",
    "phone": "+15551234567",
    "birthdate": "1990-06-15",
    "address": {
      "address1": "456 Elm St",
      "address2": null,
      "city": "Toronto",
      "postalCode": "M5H 2N2",
      "country": "CA",
      "state": "ON"
    }
  }
}

Step 2 — Attach Financial Data

Provide financial information to enable Slate to evaluate the customer for pre-approval.

POST https://api.tryslatehq.com/attach-financial-data

Request:

{
  "externalId": "cus_123",
  "timeseries": [
    {
      "date": "2025-01-01",
      "data": {
        "propertyName": "anything"
      }
    }
  ]
}

Step 3 — Create a User Session Token

Generate a secure session token on your backend for each customer that will view financing offers. This token authenticates the embedded banner.

POST https://api.tryslatehq.com/user-session-token

Request:

{
  "externalId": "cus_123"
}

Response:

{
  "token": "ust_a1b2c3d4e5f6g7h8i9j0"
}

⚠️ Important

Generate this token server-side to protect your API key. Never expose your API key in frontend code.


Step 4 — Embed the Financing Banner

Add Slate's script to your frontend and pass the session token. The banner will automatically appear if the customer has an active pre-approval.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Your Application</title>

    <script
      async="true"
      type="module"
      src="https://components.tryslatehq.com/slate.esm.js"
    ></script>
  </head>
  <body>
    <slate-pre-approval-banner-v2
      env="sandbox"
      user-token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
    ></slate-pre-approval-banner-v2>
  </body>
</html>

Behavior:

  • If the customer has an ACTIVE pre-approval, the banner displays the offer details
  • If no pre-approval exists, nothing is rendered
  • Clicking the banner opens Slate's application flow in a modal

Step 5 — Access Financing Agreements

Once an application is approved, retrieve the financing agreement details:

GET https://api.tryslatehq.com/v2/financing-agreements?externalId=cus_123

Response:

{
  "data": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "customerId": "123e4567-e89b-12d3-a456-426614174000",
      "type": "fixed_mca",
      "fixedMCA": {
        "factorRate": 1.2
      },
      "fundedAmount": 10000,
      "fundedDate": "2025-01-01",
      "currency": "CAD",
      "firstPaymentDate": "2025-02-01",
      "estimatedLastPaymentDate": "2026-01-01",
      "status": "IN_PROGRESS",
      "term": 12,
      "termUnit": "month",
      "repaymentFrequency": 1,
      "repaymentFrequencyUnit": "month",
      "remainingBalance": 12000,
      "totalPaid": 0,
      "createdAt": "2025-01-01T00:00:00Z",
      "updatedAt": "2025-01-01T00:00:00Z"
    }
  ],
  "page": 1,
  "limit": 1,
  "total": 1,
  "totalPages": 1
}

Step 6 — Embed the Capital Widget (Optional)

If you want to show financing agreement progress and give visual feedback to your customers — such as repayment status, remaining balance, and payment history — embed the slate-capital component using the same script and session token.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title></title>

    <script
      async="true"
      type="module"
      src="https://components.tryslatehq.com/slate.esm.js"
    ></script>
  </head>
  <body>
    <slate-capital
      env="sandbox"
      user-token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
    ></slate-capital>
  </body>
</html>

Behavior:

  • Displays active financing agreements with repayment progress, funded amount, remaining balance, and next payment date
  • Also includes the pre-approval banner — customers with an active offer will see it alongside their agreements
  • If the customer has no offers or agreements, an empty state is shown prompting them to check back later

Webhook notifications

Slate will notify you of important events via webhooks. You will be able to configure your endpoints and the subscribed events in the dashboard.

Common events:

  • Customer created
  • Application created
  • Application submitted
  • Financing agreement created
  • Financing agreement payment received

Testing

For testing your integration sign up to the sandbox.

  • In the sandbox environment pre-approvals are created automatically when you upload financial data for a customer.
  • The sandbox is a completely isolated environment so webhooks, branding and any other configurations are not automatically applied to live environment.
  • Base URL's for API and scripts are different between live and sandbox.

Best practices

Keep customer data current — Update customer information and financial data regularly to ensure accurate pre-approvals.

Handle missing offers gracefully — The banner won't render if there's no active pre-approval. Design your UI to work with or without the financing offer.

Test thoroughly — Verify the integration in your staging environment before going live.