curl --request POST \
--url https://api.nextlevelmca.com/v1/deals \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"business_id": "<string>",
"requested_amount": 1,
"use_of_funds": "<string>",
"annual_revenue": 1,
"product_type": "mca",
"desired_term_months": 60.5,
"paper_grade": "<string>",
"originator_id": "<string>",
"closer_id": "<string>",
"lead_source": "<string>",
"state_incorporated": "<string>",
"risk_flags": {},
"form_data": {},
"ghl_contact_id": "<string>"
}
'import requests
url = "https://api.nextlevelmca.com/v1/deals"
payload = {
"business_id": "<string>",
"requested_amount": 1,
"use_of_funds": "<string>",
"annual_revenue": 1,
"product_type": "mca",
"desired_term_months": 60.5,
"paper_grade": "<string>",
"originator_id": "<string>",
"closer_id": "<string>",
"lead_source": "<string>",
"state_incorporated": "<string>",
"risk_flags": {},
"form_data": {},
"ghl_contact_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
business_id: '<string>',
requested_amount: 1,
use_of_funds: '<string>',
annual_revenue: 1,
product_type: 'mca',
desired_term_months: 60.5,
paper_grade: '<string>',
originator_id: '<string>',
closer_id: '<string>',
lead_source: '<string>',
state_incorporated: '<string>',
risk_flags: {},
form_data: {},
ghl_contact_id: '<string>'
})
};
fetch('https://api.nextlevelmca.com/v1/deals', 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://api.nextlevelmca.com/v1/deals",
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([
'business_id' => '<string>',
'requested_amount' => 1,
'use_of_funds' => '<string>',
'annual_revenue' => 1,
'product_type' => 'mca',
'desired_term_months' => 60.5,
'paper_grade' => '<string>',
'originator_id' => '<string>',
'closer_id' => '<string>',
'lead_source' => '<string>',
'state_incorporated' => '<string>',
'risk_flags' => [
],
'form_data' => [
],
'ghl_contact_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://api.nextlevelmca.com/v1/deals"
payload := strings.NewReader("{\n \"business_id\": \"<string>\",\n \"requested_amount\": 1,\n \"use_of_funds\": \"<string>\",\n \"annual_revenue\": 1,\n \"product_type\": \"mca\",\n \"desired_term_months\": 60.5,\n \"paper_grade\": \"<string>\",\n \"originator_id\": \"<string>\",\n \"closer_id\": \"<string>\",\n \"lead_source\": \"<string>\",\n \"state_incorporated\": \"<string>\",\n \"risk_flags\": {},\n \"form_data\": {},\n \"ghl_contact_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://api.nextlevelmca.com/v1/deals")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"business_id\": \"<string>\",\n \"requested_amount\": 1,\n \"use_of_funds\": \"<string>\",\n \"annual_revenue\": 1,\n \"product_type\": \"mca\",\n \"desired_term_months\": 60.5,\n \"paper_grade\": \"<string>\",\n \"originator_id\": \"<string>\",\n \"closer_id\": \"<string>\",\n \"lead_source\": \"<string>\",\n \"state_incorporated\": \"<string>\",\n \"risk_flags\": {},\n \"form_data\": {},\n \"ghl_contact_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nextlevelmca.com/v1/deals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"business_id\": \"<string>\",\n \"requested_amount\": 1,\n \"use_of_funds\": \"<string>\",\n \"annual_revenue\": 1,\n \"product_type\": \"mca\",\n \"desired_term_months\": 60.5,\n \"paper_grade\": \"<string>\",\n \"originator_id\": \"<string>\",\n \"closer_id\": \"<string>\",\n \"lead_source\": \"<string>\",\n \"state_incorporated\": \"<string>\",\n \"risk_flags\": {},\n \"form_data\": {},\n \"ghl_contact_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>",
"business_id": "<string>",
"business": {
"id": "<string>",
"legal_name": "<string>",
"dba": "<string>"
},
"business_name": "<string>",
"dba": "<string>",
"entity_type": "<string>",
"industry": "<string>",
"business_address": "<string>",
"business_city": "<string>",
"business_state": "<string>",
"business_zip": "<string>",
"business_phone": "<string>",
"business_start_date": "<string>",
"state_incorporated": "<string>",
"owner": {
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"phone": "<string>"
},
"requested_amount": 123,
"annual_revenue": 123,
"use_of_funds": "<string>",
"product_type": "mca",
"desired_term_months": 123,
"desired_frequency": "daily",
"paper_grade": "<string>",
"paper_grade_source": "<string>",
"risk_flags": {},
"status": "<string>",
"stage": {
"id": "<string>",
"label": "<string>",
"phase": "preoffer",
"sort_order": 123,
"event": "first_submission_sent"
},
"stage_entered_at": "<string>",
"days_in_stage": 123,
"primary_offer": {
"id": "<string>",
"lender_id": "<string>",
"lender_name": "<string>",
"amount": 123,
"factor_rate": 123,
"status": "<string>"
},
"originator": {
"id": "<string>",
"name": "<string>"
},
"closer": {
"id": "<string>",
"name": "<string>"
},
"source": "<string>",
"lead_source": "<string>",
"form_data": {},
"submissions_count": 123,
"offers_count": 123,
"renewal_of_deal_id": "<string>",
"renewal_of_advance_id": "<string>",
"manually_closed": true,
"closed_at": "<string>",
"closed_reason": "<string>",
"ghl_contact_id": "<string>",
"ghl_opportunity_id": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
},
"meta": {}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}Create a deal
Opens a deal on a business: pass business_id, or an inline business that is matched by EIN / legal name + state and created when new. The optional owner is matched to an existing person by email / phone or created and linked to the business. The deal lands in the first pre-offer stage and fires deal.created. Send Idempotency-Key to make retries safe.
curl --request POST \
--url https://api.nextlevelmca.com/v1/deals \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"business_id": "<string>",
"requested_amount": 1,
"use_of_funds": "<string>",
"annual_revenue": 1,
"product_type": "mca",
"desired_term_months": 60.5,
"paper_grade": "<string>",
"originator_id": "<string>",
"closer_id": "<string>",
"lead_source": "<string>",
"state_incorporated": "<string>",
"risk_flags": {},
"form_data": {},
"ghl_contact_id": "<string>"
}
'import requests
url = "https://api.nextlevelmca.com/v1/deals"
payload = {
"business_id": "<string>",
"requested_amount": 1,
"use_of_funds": "<string>",
"annual_revenue": 1,
"product_type": "mca",
"desired_term_months": 60.5,
"paper_grade": "<string>",
"originator_id": "<string>",
"closer_id": "<string>",
"lead_source": "<string>",
"state_incorporated": "<string>",
"risk_flags": {},
"form_data": {},
"ghl_contact_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
business_id: '<string>',
requested_amount: 1,
use_of_funds: '<string>',
annual_revenue: 1,
product_type: 'mca',
desired_term_months: 60.5,
paper_grade: '<string>',
originator_id: '<string>',
closer_id: '<string>',
lead_source: '<string>',
state_incorporated: '<string>',
risk_flags: {},
form_data: {},
ghl_contact_id: '<string>'
})
};
fetch('https://api.nextlevelmca.com/v1/deals', 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://api.nextlevelmca.com/v1/deals",
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([
'business_id' => '<string>',
'requested_amount' => 1,
'use_of_funds' => '<string>',
'annual_revenue' => 1,
'product_type' => 'mca',
'desired_term_months' => 60.5,
'paper_grade' => '<string>',
'originator_id' => '<string>',
'closer_id' => '<string>',
'lead_source' => '<string>',
'state_incorporated' => '<string>',
'risk_flags' => [
],
'form_data' => [
],
'ghl_contact_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://api.nextlevelmca.com/v1/deals"
payload := strings.NewReader("{\n \"business_id\": \"<string>\",\n \"requested_amount\": 1,\n \"use_of_funds\": \"<string>\",\n \"annual_revenue\": 1,\n \"product_type\": \"mca\",\n \"desired_term_months\": 60.5,\n \"paper_grade\": \"<string>\",\n \"originator_id\": \"<string>\",\n \"closer_id\": \"<string>\",\n \"lead_source\": \"<string>\",\n \"state_incorporated\": \"<string>\",\n \"risk_flags\": {},\n \"form_data\": {},\n \"ghl_contact_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://api.nextlevelmca.com/v1/deals")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"business_id\": \"<string>\",\n \"requested_amount\": 1,\n \"use_of_funds\": \"<string>\",\n \"annual_revenue\": 1,\n \"product_type\": \"mca\",\n \"desired_term_months\": 60.5,\n \"paper_grade\": \"<string>\",\n \"originator_id\": \"<string>\",\n \"closer_id\": \"<string>\",\n \"lead_source\": \"<string>\",\n \"state_incorporated\": \"<string>\",\n \"risk_flags\": {},\n \"form_data\": {},\n \"ghl_contact_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nextlevelmca.com/v1/deals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"business_id\": \"<string>\",\n \"requested_amount\": 1,\n \"use_of_funds\": \"<string>\",\n \"annual_revenue\": 1,\n \"product_type\": \"mca\",\n \"desired_term_months\": 60.5,\n \"paper_grade\": \"<string>\",\n \"originator_id\": \"<string>\",\n \"closer_id\": \"<string>\",\n \"lead_source\": \"<string>\",\n \"state_incorporated\": \"<string>\",\n \"risk_flags\": {},\n \"form_data\": {},\n \"ghl_contact_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>",
"business_id": "<string>",
"business": {
"id": "<string>",
"legal_name": "<string>",
"dba": "<string>"
},
"business_name": "<string>",
"dba": "<string>",
"entity_type": "<string>",
"industry": "<string>",
"business_address": "<string>",
"business_city": "<string>",
"business_state": "<string>",
"business_zip": "<string>",
"business_phone": "<string>",
"business_start_date": "<string>",
"state_incorporated": "<string>",
"owner": {
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"phone": "<string>"
},
"requested_amount": 123,
"annual_revenue": 123,
"use_of_funds": "<string>",
"product_type": "mca",
"desired_term_months": 123,
"desired_frequency": "daily",
"paper_grade": "<string>",
"paper_grade_source": "<string>",
"risk_flags": {},
"status": "<string>",
"stage": {
"id": "<string>",
"label": "<string>",
"phase": "preoffer",
"sort_order": 123,
"event": "first_submission_sent"
},
"stage_entered_at": "<string>",
"days_in_stage": 123,
"primary_offer": {
"id": "<string>",
"lender_id": "<string>",
"lender_name": "<string>",
"amount": 123,
"factor_rate": 123,
"status": "<string>"
},
"originator": {
"id": "<string>",
"name": "<string>"
},
"closer": {
"id": "<string>",
"name": "<string>"
},
"source": "<string>",
"lead_source": "<string>",
"form_data": {},
"submissions_count": 123,
"offers_count": 123,
"renewal_of_deal_id": "<string>",
"renewal_of_advance_id": "<string>",
"manually_closed": true,
"closed_at": "<string>",
"closed_reason": "<string>",
"ghl_contact_id": "<string>",
"ghl_opportunity_id": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
},
"meta": {}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "validation_error",
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>"
}
}Authorizations
API key (nlmca_live_…) or OAuth access token
Body
Existing business to open the deal on. Provide this or business.
Inline business details when you do not have a business id. Matched by EIN, else by normalised legal name + state; a new business is created when nothing matches.
Show child attributes
Show child attributes
Primary owner. Matched to an existing person by email / phone, otherwise a person is created and linked to the business. SSNs are set through PATCH /v1/people/{id}.
Show child attributes
Show child attributes
Requested funding amount in dollars.
x >= 0What the funds are for.
2000Stated annual revenue in dollars. Bank-verified revenue from statement analysis takes precedence in lender matching.
x >= 0Product requested.
mca, term_loan, loc, equipment, factoring Desired term in months.
1 <= x <= 120Desired payment frequency.
daily, weekly, bi-weekly, monthly Paper grade override (A–D). Setting it marks paper_grade_source as manual; omit to let the platform compute it from bank data.
10Originator (user id). Defaults to the credential’s creator.
Closer (user id).
Where the lead came from, free text (e.g. website, referral:acme).
100State of incorporation.
50Rep-entered risk facts used by lender matching: { prior_default, reversals, bankruptcy_months, seasonal, franchise_years }.
Application form data keyed by field key (standard and custom fields). Stored as given.
CRM contact id to link the primary owner to, when the lead already exists in the CRM.
255Was this page helpful?