Integration GuideGuideSlate Partner API

Overview

Financing Integration Guide

Display pre-qualified financing offers to your customers with Slate's embedded financing solution.

How it works

  1. Send business data — Share your customer's business information and revenue data with Slate

  2. Automatic evaluation — Slate evaluates businesses and generates pre-approval offers

  3. Create session token — Generate a secure token on your backend for each business

  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 business

First, register each business in Slate's system. Use your own stable identifier as the externalId to easily reference the business later.

POST https://api.tryslatehq.com/v1/businesses

Request

{
  "externalId": "biz_123456",
  "legalName": "Acme Corporation",
  "dba": "Acme Co",
  "website": "https://acme.example.com",
  "type": "CORPORATION",
  "address": {
    "address1": "123 Main Street",
    "address2": "Suite 100",
    "city": "Toronto",
    "state": "ON",
    "postalCode": "M5H 2N2",
    "country": "CA"
  }
}

Response:

{
  "id": "bus_a1b2c3d4e5",
  "externalId": "biz_123456",
  "legalName": "Acme Corporation",
  "dba": "Acme Co",
  "type": "corporation",
  "website": "https://acme.example.com",
  "address": {
    "address1": "123 Main Street",
    "address2": "Suite 100",
    "city": "Toronto",
    "state": "ON",
    "postalCode": "M5H 2N2",
    "country": "CA"
  }
}

You can use either Slate's id or your externalId in subsequent API calls.

Step 2: Attach revenue data

we are working on ingesting multiple types of data and not only revenue

Provide revenue information to enable Slate to evaluate the business for pre-approval. You can submit data in two formats:

Summarized revenue (monthly totals)

PUT https://api.tryslatehq.com/v1/businesses/{id}/attach-revenue-data

Request:

{
  "type": "SUMMARY",
  "data": [
    {
      "month": 10,
      "year": 2025,
      "revenue": 125000,
      "currency": "CAD"
    },
    {
      "month": 9,
      "year": 2025,
      "revenue": 118000,
      "currency": "CAD"
    },
    {
      "month": 8,
      "year": 2025,
      "revenue": 132000,
      "currency": "CAD"
    }
  ]
}

Itemized revenue (transaction-level)

For more granular data, send individual transactions:

Request:

{
  "type": "ITEMIZED",
  "data": [
    {
      "id": "txn_001",
      "date": "2025-10-15",
      "amount": 5000,
      "currency": "CAD",
      "sourceAccount": "customer_abc",
      "destinationAccount": "merchant_xyz"
    },
    {
      "id": "txn_002",
      "date": "2025-10-16",
      "amount": 7500,
      "currency": "CAD",
      "sourceAccount": "customer_def",
      "destinationAccount": "merchant_xyz"
    }
  ]
}

Step 3: Check for pre-approvals

After submitting business and revenue data, Slate automatically evaluates businesses for pre-qualification. Check if a business has an active pre-approval:

GET https://api.tryslatehq.com/v1/pre-approvals?businessExternalId=biz_12345

Response:

{
  "data": [
    {
      "id": "pre_x1y2z3",
      "status": "ACTIVE",
      "amount": 50000,
      "currency": "CAD",
      "repaymentFrequency": "weekly",
      "repaymentTerm": 12,
      "origin": "slate"
    }
  ]
}

Pre-approval statuses:

  • ACTIVE — Available for the customer to accept

  • REJECTED — Business did not qualify

  • EXPIRED — Offer has expired

  • CONSUMED — Customer has applied for this offer

Step 4: Create a user session token

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

POST https://api.tryslatehq.com/v1/user-sessions

Request:

{
  "externalId": "biz_123456"
}

Response:

{
  "token": "ust_a1b2c3d4e5f6g7h8i9j0"
}

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

Note: If the externalId doesn't match an existing business, a new business record will be created automatically when the customer submits an application.

Step 5: Embed the financing banner

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

<!DOCTYPE html>
<html>
<head>
  <title>Your Application</title>
</head>
<body>
  <!-- Your application content -->
  
  <!-- Slate financing banner -->
  <div id="slate-financing-banner"></div>
  
  <script src="https://cdn.tryslatehq.com/banner.js"></script>
  <script>
    Slate.init({
      token: 'ust_a1b2c3d4e5f6g7h8i9j0', // Session token from Step 4
      containerId: 'slate-financing-banner'
    });
  </script>
</body>
</html>

Behavior:

  • If the business 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 new window or modal

Step 6: Monitor applications

Track the status of applications submitted by your customers:

GET https://api.tryslatehq.com/v1/application?businessExternalId=biz_123456

Response:

{
  "data": [
    {
      "id": "app_m1n2o3p4",
      "businessId": "bus_a1b2c3d4e5",
      "status": "PROCESSING",
      "origin": "self",
      "requiredActions": []
    }
  ]
}

Application statuses:

  • DRAFT — Application started but not submitted

  • REQUIRES_ACTION — Additional information needed from the customer

  • PROCESSING — Under review by Slate

  • APPROVED — Application approved, financing agreement created

  • REJECTED — Application declined

Step 7: Access financing agreements

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

GET https://api.tryslatehq.com/v1/financing-agreements?businessExternalId=biz_123456

Response:

{
  "data": [
    {
      "id": "fa_q1r2s3t4",
      "businessId": "bus_a1b2c3d4e5",
      "type": "fixed_mca",
      "fixed_mca": {
        "paybackAmount": 60000,
        "factorRate": 1.2
      },
      "fundedAmount": 50000,
      "fundedDate": "2025-11-10",
      "currency": "CAD",
      "firstPaymentDate": "2025-11-17",
      "estimatedLastPaymentDate": "2026-02-07",
      "status": "in_progress",
      "nextPaymentDate": "2025-11-17",
      "nextPaymentAmount": 5000,
      "term": 12,
      "termUnit": "week",
      "repaymentFrequency": 1,
      "repaymentFrequencyUnit": "week",
      "remainingBalance": 60000,
      "totalPaid": 0,
      "payments": []
    }
  ]
}

Webhook notifications

Slate will notify you of important events via webhooks. Contact integrations@tryslatehq.com to configure your webhook endpoint.

Common events:

  • Application status changes

  • Financing agreement created

  • Payment processed

  • Payment failed

Authentication

All API requests require authentication using your private API key in the x-api-key header:

curl https://api.tryslatehq.com/v1/businesses \
  -H "x-api-key: your_private_api_key" \
  -H "Content-Type: application/json"

Security: Never expose your private API key in client-side code. Always generate session tokens on your backend.

Pagination

List endpoints support pagination using offset and limit parameters:

GET https://api.tryslatehq.com/v1/businesses?offset=20&limit=10

Testing

Contact the Slate team at integrations@tryslatehq.com to:

  • Obtain your API credentials

  • Configure pre-approval criteria for your integration

  • Set up webhook endpoints

  • Access the testing environment

Best practices

Keep business data current — Update business information and revenue data regularly to ensure accurate pre-approvals.

Cache session tokens — Session tokens can be reused for the same business within a session. Generate new tokens periodically for security.

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.

Monitor application status — Poll the applications endpoint or use webhooks to stay informed about application progress.

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

Need help?

Contact the Slate integration team at integrations@tryslatehq.com for support with:

  • API credentials and access

  • Pre-approval configuration

  • Webhook setup

  • Integration question