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>",
"originator_email": "<string>",
"closer_id": "<string>",
"closer_email": "<string>",
"lead_source": "<string>",
"state_incorporated": "<string>",
"risk_flags": {},
"form_data": {},
"ghl_contact_id": "<string>"
}
'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>',
originator_email: '<string>',
closer_id: '<string>',
closer_email: '<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));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>",
"originator_email": "<string>",
"closer_id": "<string>",
"closer_email": "<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){
"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>",
"originator_email": "<string>",
"closer_id": "<string>",
"closer_email": "<string>",
"lead_source": "<string>",
"state_incorporated": "<string>",
"risk_flags": {},
"form_data": {},
"ghl_contact_id": "<string>"
}
'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>',
originator_email: '<string>',
closer_id: '<string>',
closer_email: '<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));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>",
"originator_email": "<string>",
"closer_id": "<string>",
"closer_email": "<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){
"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 name match with a different EIN is a different business); 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, reverse_consolidation 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, from GET /v1/users). With an API key the deal is unassigned unless you set this or originator_email; a signed-in connection defaults to its user.
Originator by email, instead of originator_id. Must be an active team member.
Closer (user id, from GET /v1/users).
Closer by email, instead of closer_id. Must be an active team member.
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?