API Reference

MCA Disclosure API

Two endpoints: authenticate once to get a bearer token, then post a deal's figures to receive the state-specific MCA disclosure.

Base URLhttps://mcadisclosure-live.iocod.com/api

Introduction

The MCA Disclosure API generates a compliant merchant cash advance disclosure for a funding deal. Every request and response is JSON. The flow is two calls:

  1. 1POST /login - exchange your credentials for a bearer token.
  2. 2POST /calculate - send the deal's figures and receive the disclosure.

A helper endpoint, GET /get-states, lists the states the calculator supports.

Authentication

The API uses bearer tokens. Call /login to obtain a token, then send it on every subsequent request in the Authorization header:

bash
Authorization: Bearer <token>

/get-states is public and needs no token; /calculate returns 401 without one. Responses carry x-ratelimit-limit and x-ratelimit-remaining headers; the advertised limit is 60 requests per minute.

POST

Login

https://mcadisclosure-live.iocod.com/api/login

Authenticates with email and password and returns a bearer token.

Body parameters

FieldTypeRequiredDescription
emailstringYes

Account email address.

passwordstringYes

Account password.

methodenumYes

Required enum with three values:

  • normal — email + password. This is the supported path for API access.
  • apple — backs the first-party Firebase Apple sign-in; not intended for direct API use.
  • google — backs the first-party Firebase Google sign-in; not intended for direct API use.

Example

curl -X POST "https://mcadisclosure-live.iocod.com/api/login" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"email":"you@example.com","password":"your_password","method":"normal"}'

data.token is the field you pass to /calculate. userData returns the full user record; the fields shown above are an excerpt.

GET

States

https://mcadisclosure-live.iocod.com/api/get-states

Returns the states the calculator supports, each as a display name and abbreviation. No authentication required.

Note: for the state value sent to Calculate, use the name above lowercased with spaces removed (e.g. New Yorknewyork). The value is case-sensitive and the display name itself is not accepted. The abbreviation (e.g. NY) is also accepted, but always send the lowercased name: for Virginia, Connecticut and New York the state-specific required fields (per-state field rules) are only enforced for the name form.

Example

curl "https://mcadisclosure-live.iocod.com/api/get-states" \
  -H "Accept: application/json"
POST

Calculate

https://mcadisclosure-live.iocod.com/api/calculate

Requires a bearer token. Returns the disclosure figures for the requested state. The exact response keys vary by state - each state's disclosure law mandates different figures and labels.

Core fields

FieldTypeRequiredDescription
purchase_pricenumberYes

Amount funded to the merchant.

revenue_purchasednumberYes

Total receivables purchased (purchase_price × factor_rate).

factor_ratenumberYes

Factor rate, e.g. 1.4.

stateenumYes

Either the lowercased, space-stripped name (e.g. "New York" → newyork) or the uppercase abbreviation (NY). Both are accepted and behave identically, including the per-state required fields below. The display name with a space ("New York") is rejected — the 422 lists every accepted value.

frequencyenumYes

Payment frequency: daily or weekly. The response message reflects it ("Daily Calculation Completed" / "Weekly Calculation Completed").

disbursement_datedateYes

Funding date (YYYY-MM-DD).

first_payment_datedateYes

First payment date (YYYY-MM-DD).

number_of_payments_weeksnumberYes

Number of payments in weeks, e.g. 21.

number_of_payments_daysnumberYes

Number of payments in days, e.g. 105.

origination_feenumberYes

Origination fee amount.

month1numberYes

Revenue, month 1.

month2numberYes

Revenue, month 2.

month3numberYes

Revenue, month 3.

month4numberNo

Revenue, month 4 (optional).

funder_namestringYes

Name of the funder.

business_namestringYes

Merchant business name.

Conditional fields

Required only for certain states - see per-state field rules.

FieldTypeRequiredDescription
funder_emailstringVirginia, Connecticut

Required when state is virginia or connecticut. Must be a valid email address.

funder_addressstringVirginia, Connecticut

Required when state is virginia or connecticut.

funder_phone_numberstringVirginia, Connecticut

Required when state is virginia or connecticut. US phone format, max 20 characters.

merchant_addressstringConnecticut

Required when state is connecticut. Not required for virginia, despite the other three funder fields being so.

is_refinance_fundingenumNew York, Connecticut

yes or no. Required when state is newyork or connecticut.

Optional fields

FieldTypeRequiredDescription
previous_funding_chargenumberNo

Prior funding charge, for a refinance. Accepted but not enforced — the API does not require it even when is_refinance_funding is yes, and it does not change the returned figures.

percent_previous_fundingnumberNo

Percent of the prior funding, for a refinance. Same as above: accepted, never required, and does not change the returned figures.

amount_paid_mca_fundingnumberNo

Amount paid to a prior MCA funding.

third_party_payoffnumberNo

Third-party payoff amount.

name_of_third_party_payoffstringNo

Name of the third-party payoff.

broker_feenumberNo

Broker fee amount.

crm_lead_idnumberNo

External CRM lead id, e.g. 123.

one_mail_idstringNo

Owner 1 email address.

one_namestringNo

Owner 1 name.

two_mail_idstringNo

Owner 2 email address.

two_namestringNo

Owner 2 name.

iso_mail_idstringNo

ISO or broker email address.

send_emailnumberNo

1 to email the disclosure, 0 to skip.

Example

Each state returns a different set of disclosure figures - the example below is a real request and response for the selected state.

curl -X POST "https://mcadisclosure-live.iocod.com/api/calculate" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
  "purchase_price": 100000,
  "revenue_purchased": 140000,
  "factor_rate": 1.4,
  "frequency": "daily",
  "disbursement_date": "2026-09-01",
  "first_payment_date": "2026-09-08",
  "month1": 90000,
  "month2": 85000,
  "month3": 88000,
  "number_of_payments_weeks": 21,
  "number_of_payments_days": 105,
  "origination_fee": 2500,
  "funder_name": "Example Funder",
  "business_name": "Example Merchant LLC",
  "send_email": 0,
  "state": "california"
}'

Per-state field rules

The state value determines which conditional fields are required, on top of the core fields.

StateAdditional required fields
Virginia
  • funder_email
  • funder_address
  • funder_phone_number
Connecticut
  • funder_email
  • funder_address
  • funder_phone_number
  • merchant_addressConnecticut only - Virginia does not require this.
  • is_refinance_fundingyes or no.
New York
  • is_refinance_fundingyes or no.
California, Florida, Georgia, Kansas, Louisiana, Missouri, Texas, UtahNone — core fields only

Errors

Errors return a JSON body with a message, and validation errors include a per-field errors object.

401Unauthenticated- Missing or invalid bearer token on a protected endpoint.
json
{ "message": "Unauthenticated." }
422Validation error- A required field is missing or has an invalid value. Every failing field is listed under errors.
json
{
  "message": "The email field is required. (and 2 more errors)",
  "errors": {
    "email": ["The email field is required."],
    "password": ["The password field is required."],
    "method": ["The method field is required."]
  }
}
422Invalid credentials- POST /login with an email/password that don't match. Note the different shape - no errors object.
json
{
  "success": false,
  "message": "Invalid credentials"
}

Initiate Compliance Today

Reach out to discover how our MCA disclosure solutions can elevate transparency and trust for your business

Explore our MCA disclosure solutions for the enhanced
transparency and trust in your business.

Copyright © 2026 Easify. All rights reserved.