Overview
Financing Integration Guide
Display pre-qualified financing offers to your customers with Slate's embedded financing solution.
How it works
-
Send business data — Share your customer's business information and revenue data with Slate
-
Automatic evaluation — Slate evaluates businesses and generates pre-approval offers
-
Create session token — Generate a secure token on your backend for each business
-
Display offers — Embed Slate's script in your frontend to show financing banners
-
Customer application — Users click the banner and complete their application on Slate's hosted page
-
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
ACTIVEpre-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