curl --request POST \
--url https://sandbox.api.meet-oj.com/partner/v0/match_checks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"reference": "<string>",
"context": {
"ledger": [
{
"month": "<string>",
"sales_deposits": 123,
"total_inflows": 123,
"total_outflows": 123,
"average_daily_balance": 123,
"ending_balance": 123,
"nsf_count": 1,
"chargeback_count": 1,
"transaction_count": 1
}
],
"listing": {
"listing_id": "<string>",
"asking_price": 123,
"sde_trailing_12": 123,
"ebitda_trailing_12": 123,
"revenue_trailing_12": 123,
"includes_real_estate": true,
"real_estate_value": 123,
"buyer_equity_injection_pct": 50,
"seller_note_pct": 50,
"buyer_industry_experience_years": 1,
"financials_available": []
},
"relationship": {
"customer_since": "2023-12-25",
"products_used": [
"<string>"
],
"monthly_processing_volume": 123
},
"notes": "<string>"
},
"business": {
"state": "<string>",
"naics": "<string>",
"industry": "<string>",
"formation_date": "2023-12-25"
},
"contacts": [
{
"first_name": "<string>",
"last_name": "<string>",
"title": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"ownership_pct": 50,
"is_primary": true
}
],
"requested_amount": 123
}
'import requests
url = "https://sandbox.api.meet-oj.com/partner/v0/match_checks"
payload = {
"reference": "<string>",
"context": {
"ledger": [
{
"month": "<string>",
"sales_deposits": 123,
"total_inflows": 123,
"total_outflows": 123,
"average_daily_balance": 123,
"ending_balance": 123,
"nsf_count": 1,
"chargeback_count": 1,
"transaction_count": 1
}
],
"listing": {
"listing_id": "<string>",
"asking_price": 123,
"sde_trailing_12": 123,
"ebitda_trailing_12": 123,
"revenue_trailing_12": 123,
"includes_real_estate": True,
"real_estate_value": 123,
"buyer_equity_injection_pct": 50,
"seller_note_pct": 50,
"buyer_industry_experience_years": 1,
"financials_available": []
},
"relationship": {
"customer_since": "2023-12-25",
"products_used": ["<string>"],
"monthly_processing_volume": 123
},
"notes": "<string>"
},
"business": {
"state": "<string>",
"naics": "<string>",
"industry": "<string>",
"formation_date": "2023-12-25"
},
"contacts": [
{
"first_name": "<string>",
"last_name": "<string>",
"title": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"ownership_pct": 50,
"is_primary": True
}
],
"requested_amount": 123
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
reference: '<string>',
context: {
ledger: [
{
month: '<string>',
sales_deposits: 123,
total_inflows: 123,
total_outflows: 123,
average_daily_balance: 123,
ending_balance: 123,
nsf_count: 1,
chargeback_count: 1,
transaction_count: 1
}
],
listing: {
listing_id: '<string>',
asking_price: 123,
sde_trailing_12: 123,
ebitda_trailing_12: 123,
revenue_trailing_12: 123,
includes_real_estate: true,
real_estate_value: 123,
buyer_equity_injection_pct: 50,
seller_note_pct: 50,
buyer_industry_experience_years: 1,
financials_available: []
},
relationship: {
customer_since: '2023-12-25',
products_used: ['<string>'],
monthly_processing_volume: 123
},
notes: '<string>'
},
business: {
state: '<string>',
naics: '<string>',
industry: '<string>',
formation_date: '2023-12-25'
},
contacts: [
{
first_name: '<string>',
last_name: '<string>',
title: '<string>',
email: 'jsmith@example.com',
phone: '<string>',
ownership_pct: 50,
is_primary: true
}
],
requested_amount: 123
})
};
fetch('https://sandbox.api.meet-oj.com/partner/v0/match_checks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.api.meet-oj.com/partner/v0/match_checks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reference' => '<string>',
'context' => [
'ledger' => [
[
'month' => '<string>',
'sales_deposits' => 123,
'total_inflows' => 123,
'total_outflows' => 123,
'average_daily_balance' => 123,
'ending_balance' => 123,
'nsf_count' => 1,
'chargeback_count' => 1,
'transaction_count' => 1
]
],
'listing' => [
'listing_id' => '<string>',
'asking_price' => 123,
'sde_trailing_12' => 123,
'ebitda_trailing_12' => 123,
'revenue_trailing_12' => 123,
'includes_real_estate' => true,
'real_estate_value' => 123,
'buyer_equity_injection_pct' => 50,
'seller_note_pct' => 50,
'buyer_industry_experience_years' => 1,
'financials_available' => [
]
],
'relationship' => [
'customer_since' => '2023-12-25',
'products_used' => [
'<string>'
],
'monthly_processing_volume' => 123
],
'notes' => '<string>'
],
'business' => [
'state' => '<string>',
'naics' => '<string>',
'industry' => '<string>',
'formation_date' => '2023-12-25'
],
'contacts' => [
[
'first_name' => '<string>',
'last_name' => '<string>',
'title' => '<string>',
'email' => 'jsmith@example.com',
'phone' => '<string>',
'ownership_pct' => 50,
'is_primary' => true
]
],
'requested_amount' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.api.meet-oj.com/partner/v0/match_checks"
payload := strings.NewReader("{\n \"reference\": \"<string>\",\n \"context\": {\n \"ledger\": [\n {\n \"month\": \"<string>\",\n \"sales_deposits\": 123,\n \"total_inflows\": 123,\n \"total_outflows\": 123,\n \"average_daily_balance\": 123,\n \"ending_balance\": 123,\n \"nsf_count\": 1,\n \"chargeback_count\": 1,\n \"transaction_count\": 1\n }\n ],\n \"listing\": {\n \"listing_id\": \"<string>\",\n \"asking_price\": 123,\n \"sde_trailing_12\": 123,\n \"ebitda_trailing_12\": 123,\n \"revenue_trailing_12\": 123,\n \"includes_real_estate\": true,\n \"real_estate_value\": 123,\n \"buyer_equity_injection_pct\": 50,\n \"seller_note_pct\": 50,\n \"buyer_industry_experience_years\": 1,\n \"financials_available\": []\n },\n \"relationship\": {\n \"customer_since\": \"2023-12-25\",\n \"products_used\": [\n \"<string>\"\n ],\n \"monthly_processing_volume\": 123\n },\n \"notes\": \"<string>\"\n },\n \"business\": {\n \"state\": \"<string>\",\n \"naics\": \"<string>\",\n \"industry\": \"<string>\",\n \"formation_date\": \"2023-12-25\"\n },\n \"contacts\": [\n {\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"title\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"ownership_pct\": 50,\n \"is_primary\": true\n }\n ],\n \"requested_amount\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.api.meet-oj.com/partner/v0/match_checks")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reference\": \"<string>\",\n \"context\": {\n \"ledger\": [\n {\n \"month\": \"<string>\",\n \"sales_deposits\": 123,\n \"total_inflows\": 123,\n \"total_outflows\": 123,\n \"average_daily_balance\": 123,\n \"ending_balance\": 123,\n \"nsf_count\": 1,\n \"chargeback_count\": 1,\n \"transaction_count\": 1\n }\n ],\n \"listing\": {\n \"listing_id\": \"<string>\",\n \"asking_price\": 123,\n \"sde_trailing_12\": 123,\n \"ebitda_trailing_12\": 123,\n \"revenue_trailing_12\": 123,\n \"includes_real_estate\": true,\n \"real_estate_value\": 123,\n \"buyer_equity_injection_pct\": 50,\n \"seller_note_pct\": 50,\n \"buyer_industry_experience_years\": 1,\n \"financials_available\": []\n },\n \"relationship\": {\n \"customer_since\": \"2023-12-25\",\n \"products_used\": [\n \"<string>\"\n ],\n \"monthly_processing_volume\": 123\n },\n \"notes\": \"<string>\"\n },\n \"business\": {\n \"state\": \"<string>\",\n \"naics\": \"<string>\",\n \"industry\": \"<string>\",\n \"formation_date\": \"2023-12-25\"\n },\n \"contacts\": [\n {\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"title\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"ownership_pct\": 50,\n \"is_primary\": true\n }\n ],\n \"requested_amount\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.meet-oj.com/partner/v0/match_checks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reference\": \"<string>\",\n \"context\": {\n \"ledger\": [\n {\n \"month\": \"<string>\",\n \"sales_deposits\": 123,\n \"total_inflows\": 123,\n \"total_outflows\": 123,\n \"average_daily_balance\": 123,\n \"ending_balance\": 123,\n \"nsf_count\": 1,\n \"chargeback_count\": 1,\n \"transaction_count\": 1\n }\n ],\n \"listing\": {\n \"listing_id\": \"<string>\",\n \"asking_price\": 123,\n \"sde_trailing_12\": 123,\n \"ebitda_trailing_12\": 123,\n \"revenue_trailing_12\": 123,\n \"includes_real_estate\": true,\n \"real_estate_value\": 123,\n \"buyer_equity_injection_pct\": 50,\n \"seller_note_pct\": 50,\n \"buyer_industry_experience_years\": 1,\n \"financials_available\": []\n },\n \"relationship\": {\n \"customer_since\": \"2023-12-25\",\n \"products_used\": [\n \"<string>\"\n ],\n \"monthly_processing_volume\": 123\n },\n \"notes\": \"<string>\"\n },\n \"business\": {\n \"state\": \"<string>\",\n \"naics\": \"<string>\",\n \"industry\": \"<string>\",\n \"formation_date\": \"2023-12-25\"\n },\n \"contacts\": [\n {\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"title\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"ownership_pct\": 50,\n \"is_primary\": true\n }\n ],\n \"requested_amount\": 123\n}"
response = http.request(request)
puts response.read_body{
"reference": "<string>",
"matches": [
{
"id": "mat_01K5X3M1A4",
"lender": "Example Capital",
"product": "revenue_based_financing",
"state": "matched",
"program": "Revenue-based financing",
"amount_max": 123,
"term_months": [
6,
12
],
"speed": "1–2 business days"
}
],
"checked_at": "2023-11-07T05:31:56Z"
}{
"type": "https://api.meet-oj.com/problems/duplicate-external-id",
"title": "Referral already exists",
"status": 409,
"code": "invalid_request",
"request_id": "req_01K5X4A9M2",
"detail": "A referral with external_id cust_8842 was created on 2026-09-20 as ref_01K5X3K7Q2.",
"instance": "/partner/v0/referrals",
"param": "<string>"
}{
"type": "https://api.meet-oj.com/problems/duplicate-external-id",
"title": "Referral already exists",
"status": 409,
"code": "invalid_request",
"request_id": "req_01K5X4A9M2",
"detail": "A referral with external_id cust_8842 was created on 2026-09-20 as ref_01K5X3K7Q2.",
"instance": "/partner/v0/referrals",
"param": "<string>"
}{
"type": "https://api.meet-oj.com/problems/duplicate-external-id",
"title": "Referral already exists",
"status": 409,
"code": "invalid_request",
"request_id": "req_01K5X4A9M2",
"detail": "A referral with external_id cust_8842 was created on 2026-09-20 as ref_01K5X3K7Q2.",
"instance": "/partner/v0/referrals",
"param": "<string>"
}Run a match check
Returns the lenders a business would match, from numbers only, without creating a referral. This is how a processor or a bank screens its customer base before approaching anyone.
Send structured data under a reference of your own, such as a hashed customer id. Do not send a name or an
EIN. O.J. stores only an audit line keyed by your reference. No deal is opened, nobody is contacted, and no
credit is pulled, so matches that depend on credit use the credit_band you send, if any.
This endpoint is rate-limited per partner.
curl --request POST \
--url https://sandbox.api.meet-oj.com/partner/v0/match_checks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"reference": "<string>",
"context": {
"ledger": [
{
"month": "<string>",
"sales_deposits": 123,
"total_inflows": 123,
"total_outflows": 123,
"average_daily_balance": 123,
"ending_balance": 123,
"nsf_count": 1,
"chargeback_count": 1,
"transaction_count": 1
}
],
"listing": {
"listing_id": "<string>",
"asking_price": 123,
"sde_trailing_12": 123,
"ebitda_trailing_12": 123,
"revenue_trailing_12": 123,
"includes_real_estate": true,
"real_estate_value": 123,
"buyer_equity_injection_pct": 50,
"seller_note_pct": 50,
"buyer_industry_experience_years": 1,
"financials_available": []
},
"relationship": {
"customer_since": "2023-12-25",
"products_used": [
"<string>"
],
"monthly_processing_volume": 123
},
"notes": "<string>"
},
"business": {
"state": "<string>",
"naics": "<string>",
"industry": "<string>",
"formation_date": "2023-12-25"
},
"contacts": [
{
"first_name": "<string>",
"last_name": "<string>",
"title": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"ownership_pct": 50,
"is_primary": true
}
],
"requested_amount": 123
}
'import requests
url = "https://sandbox.api.meet-oj.com/partner/v0/match_checks"
payload = {
"reference": "<string>",
"context": {
"ledger": [
{
"month": "<string>",
"sales_deposits": 123,
"total_inflows": 123,
"total_outflows": 123,
"average_daily_balance": 123,
"ending_balance": 123,
"nsf_count": 1,
"chargeback_count": 1,
"transaction_count": 1
}
],
"listing": {
"listing_id": "<string>",
"asking_price": 123,
"sde_trailing_12": 123,
"ebitda_trailing_12": 123,
"revenue_trailing_12": 123,
"includes_real_estate": True,
"real_estate_value": 123,
"buyer_equity_injection_pct": 50,
"seller_note_pct": 50,
"buyer_industry_experience_years": 1,
"financials_available": []
},
"relationship": {
"customer_since": "2023-12-25",
"products_used": ["<string>"],
"monthly_processing_volume": 123
},
"notes": "<string>"
},
"business": {
"state": "<string>",
"naics": "<string>",
"industry": "<string>",
"formation_date": "2023-12-25"
},
"contacts": [
{
"first_name": "<string>",
"last_name": "<string>",
"title": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"ownership_pct": 50,
"is_primary": True
}
],
"requested_amount": 123
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
reference: '<string>',
context: {
ledger: [
{
month: '<string>',
sales_deposits: 123,
total_inflows: 123,
total_outflows: 123,
average_daily_balance: 123,
ending_balance: 123,
nsf_count: 1,
chargeback_count: 1,
transaction_count: 1
}
],
listing: {
listing_id: '<string>',
asking_price: 123,
sde_trailing_12: 123,
ebitda_trailing_12: 123,
revenue_trailing_12: 123,
includes_real_estate: true,
real_estate_value: 123,
buyer_equity_injection_pct: 50,
seller_note_pct: 50,
buyer_industry_experience_years: 1,
financials_available: []
},
relationship: {
customer_since: '2023-12-25',
products_used: ['<string>'],
monthly_processing_volume: 123
},
notes: '<string>'
},
business: {
state: '<string>',
naics: '<string>',
industry: '<string>',
formation_date: '2023-12-25'
},
contacts: [
{
first_name: '<string>',
last_name: '<string>',
title: '<string>',
email: 'jsmith@example.com',
phone: '<string>',
ownership_pct: 50,
is_primary: true
}
],
requested_amount: 123
})
};
fetch('https://sandbox.api.meet-oj.com/partner/v0/match_checks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.api.meet-oj.com/partner/v0/match_checks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reference' => '<string>',
'context' => [
'ledger' => [
[
'month' => '<string>',
'sales_deposits' => 123,
'total_inflows' => 123,
'total_outflows' => 123,
'average_daily_balance' => 123,
'ending_balance' => 123,
'nsf_count' => 1,
'chargeback_count' => 1,
'transaction_count' => 1
]
],
'listing' => [
'listing_id' => '<string>',
'asking_price' => 123,
'sde_trailing_12' => 123,
'ebitda_trailing_12' => 123,
'revenue_trailing_12' => 123,
'includes_real_estate' => true,
'real_estate_value' => 123,
'buyer_equity_injection_pct' => 50,
'seller_note_pct' => 50,
'buyer_industry_experience_years' => 1,
'financials_available' => [
]
],
'relationship' => [
'customer_since' => '2023-12-25',
'products_used' => [
'<string>'
],
'monthly_processing_volume' => 123
],
'notes' => '<string>'
],
'business' => [
'state' => '<string>',
'naics' => '<string>',
'industry' => '<string>',
'formation_date' => '2023-12-25'
],
'contacts' => [
[
'first_name' => '<string>',
'last_name' => '<string>',
'title' => '<string>',
'email' => 'jsmith@example.com',
'phone' => '<string>',
'ownership_pct' => 50,
'is_primary' => true
]
],
'requested_amount' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.api.meet-oj.com/partner/v0/match_checks"
payload := strings.NewReader("{\n \"reference\": \"<string>\",\n \"context\": {\n \"ledger\": [\n {\n \"month\": \"<string>\",\n \"sales_deposits\": 123,\n \"total_inflows\": 123,\n \"total_outflows\": 123,\n \"average_daily_balance\": 123,\n \"ending_balance\": 123,\n \"nsf_count\": 1,\n \"chargeback_count\": 1,\n \"transaction_count\": 1\n }\n ],\n \"listing\": {\n \"listing_id\": \"<string>\",\n \"asking_price\": 123,\n \"sde_trailing_12\": 123,\n \"ebitda_trailing_12\": 123,\n \"revenue_trailing_12\": 123,\n \"includes_real_estate\": true,\n \"real_estate_value\": 123,\n \"buyer_equity_injection_pct\": 50,\n \"seller_note_pct\": 50,\n \"buyer_industry_experience_years\": 1,\n \"financials_available\": []\n },\n \"relationship\": {\n \"customer_since\": \"2023-12-25\",\n \"products_used\": [\n \"<string>\"\n ],\n \"monthly_processing_volume\": 123\n },\n \"notes\": \"<string>\"\n },\n \"business\": {\n \"state\": \"<string>\",\n \"naics\": \"<string>\",\n \"industry\": \"<string>\",\n \"formation_date\": \"2023-12-25\"\n },\n \"contacts\": [\n {\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"title\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"ownership_pct\": 50,\n \"is_primary\": true\n }\n ],\n \"requested_amount\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.api.meet-oj.com/partner/v0/match_checks")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reference\": \"<string>\",\n \"context\": {\n \"ledger\": [\n {\n \"month\": \"<string>\",\n \"sales_deposits\": 123,\n \"total_inflows\": 123,\n \"total_outflows\": 123,\n \"average_daily_balance\": 123,\n \"ending_balance\": 123,\n \"nsf_count\": 1,\n \"chargeback_count\": 1,\n \"transaction_count\": 1\n }\n ],\n \"listing\": {\n \"listing_id\": \"<string>\",\n \"asking_price\": 123,\n \"sde_trailing_12\": 123,\n \"ebitda_trailing_12\": 123,\n \"revenue_trailing_12\": 123,\n \"includes_real_estate\": true,\n \"real_estate_value\": 123,\n \"buyer_equity_injection_pct\": 50,\n \"seller_note_pct\": 50,\n \"buyer_industry_experience_years\": 1,\n \"financials_available\": []\n },\n \"relationship\": {\n \"customer_since\": \"2023-12-25\",\n \"products_used\": [\n \"<string>\"\n ],\n \"monthly_processing_volume\": 123\n },\n \"notes\": \"<string>\"\n },\n \"business\": {\n \"state\": \"<string>\",\n \"naics\": \"<string>\",\n \"industry\": \"<string>\",\n \"formation_date\": \"2023-12-25\"\n },\n \"contacts\": [\n {\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"title\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"ownership_pct\": 50,\n \"is_primary\": true\n }\n ],\n \"requested_amount\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.meet-oj.com/partner/v0/match_checks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reference\": \"<string>\",\n \"context\": {\n \"ledger\": [\n {\n \"month\": \"<string>\",\n \"sales_deposits\": 123,\n \"total_inflows\": 123,\n \"total_outflows\": 123,\n \"average_daily_balance\": 123,\n \"ending_balance\": 123,\n \"nsf_count\": 1,\n \"chargeback_count\": 1,\n \"transaction_count\": 1\n }\n ],\n \"listing\": {\n \"listing_id\": \"<string>\",\n \"asking_price\": 123,\n \"sde_trailing_12\": 123,\n \"ebitda_trailing_12\": 123,\n \"revenue_trailing_12\": 123,\n \"includes_real_estate\": true,\n \"real_estate_value\": 123,\n \"buyer_equity_injection_pct\": 50,\n \"seller_note_pct\": 50,\n \"buyer_industry_experience_years\": 1,\n \"financials_available\": []\n },\n \"relationship\": {\n \"customer_since\": \"2023-12-25\",\n \"products_used\": [\n \"<string>\"\n ],\n \"monthly_processing_volume\": 123\n },\n \"notes\": \"<string>\"\n },\n \"business\": {\n \"state\": \"<string>\",\n \"naics\": \"<string>\",\n \"industry\": \"<string>\",\n \"formation_date\": \"2023-12-25\"\n },\n \"contacts\": [\n {\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"title\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"ownership_pct\": 50,\n \"is_primary\": true\n }\n ],\n \"requested_amount\": 123\n}"
response = http.request(request)
puts response.read_body{
"reference": "<string>",
"matches": [
{
"id": "mat_01K5X3M1A4",
"lender": "Example Capital",
"product": "revenue_based_financing",
"state": "matched",
"program": "Revenue-based financing",
"amount_max": 123,
"term_months": [
6,
12
],
"speed": "1–2 business days"
}
],
"checked_at": "2023-11-07T05:31:56Z"
}{
"type": "https://api.meet-oj.com/problems/duplicate-external-id",
"title": "Referral already exists",
"status": 409,
"code": "invalid_request",
"request_id": "req_01K5X4A9M2",
"detail": "A referral with external_id cust_8842 was created on 2026-09-20 as ref_01K5X3K7Q2.",
"instance": "/partner/v0/referrals",
"param": "<string>"
}{
"type": "https://api.meet-oj.com/problems/duplicate-external-id",
"title": "Referral already exists",
"status": 409,
"code": "invalid_request",
"request_id": "req_01K5X4A9M2",
"detail": "A referral with external_id cust_8842 was created on 2026-09-20 as ref_01K5X3K7Q2.",
"instance": "/partner/v0/referrals",
"param": "<string>"
}{
"type": "https://api.meet-oj.com/problems/duplicate-external-id",
"title": "Referral already exists",
"status": 409,
"code": "invalid_request",
"request_id": "req_01K5X4A9M2",
"detail": "A referral with external_id cust_8842 was created on 2026-09-20 as ref_01K5X3K7Q2.",
"instance": "/partner/v0/referrals",
"param": "<string>"
}Authorizations
One client per partner per environment. Access tokens expire after 15 minutes. Scopes are granted per client. Sandbox clients use https://sandbox.api.meet-oj.com/oauth/token.
Headers
IETF Idempotency-Key semantics (draft-ietf-httpapi-idempotency-key-header). Send a fresh unique value
(a UUID) with every new request. A retry with the same key and the same payload returns the original
response with the header Idempotent-Replayed: true. The same key with a different payload is rejected with
422 and code idempotency_key_reused. Keys are kept for 24 hours.
255Body
The body for a match check, which screens a business without identifying it. Instead of a name and EIN you send
a reference — your own merchant id, or a hash of it — that O.J. echoes back and never tries to resolve.
Add the ledger months and, if you have them, the state and industry. O.J. learns who the business is only if you refer it with consent.
Opaque partner-side id or hash. Echoed back; never resolved by O.J.
128Everything you already know about the business, in whatever combination you have. The more you send, the more of the matching O.J. can do immediately, before any documents arrive. Figures you report are later checked against the borrower's bank data; if they disagree by more than a small tolerance, an O.J. reviewer looks at the file before it goes to lenders.
Show child attributes
Show child attributes
Optional, identity-free attributes that affect which lenders match.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
A dollar amount expressed in whole US cents, so $85,000.00 is 8500000. Cents avoid rounding errors that decimals cause in some languages.
A kind of financing. When you pass one as product_hint, O.J. still checks every product it can place, but
lists the hinted one first. revenue_based_financing is repaid as a share of sales; term_loan is a fixed
amount repaid over a fixed period; business_line_of_credit can be drawn and repaid repeatedly; sba_7a is a
government-guaranteed bank loan; invoice_factoring advances money against unpaid invoices;
asset_based_lending is secured by inventory or equipment; hard_money_lending is secured by real estate.
revenue_based_financing, term_loan, business_line_of_credit, sba_7a, invoice_factoring, asset_based_lending, hard_money_lending 
