What is the Coris API

One API for merchant risk, from business verification and underwriting to monitoring, alerts and disputes.

The Coris API verifies, underwrites and monitors the businesses you serve. It is built for payment platforms, ISOs, PayFacs, sponsor banks, lenders and marketplaces. You send a business name and address, and you get back a structured profile, risk signals and alerts.

  1. InputBusiness details
  2. Step 1Merchant ProfilerPOST /merchant_profiler/
  3. Returnsestablishment + legal_entity
  4. Step 2Create the accountPOST /accounts/Monitored by default.
  5. ResultsWebhooks and portal

Try it

  1. Create a sandbox API key. See Authenticate your requests.

  2. Set your base URL and key.

export CORIS_BASE_URL="https://sandbox-api.coris.ai/api/v0_2"
export CORIS_API_KEY="YOUR_API_KEY"
import requests

BASE_URL = "https://sandbox-api.coris.ai/api/v0_2"
HEADERS = {"Authorization": "Token YOUR_API_KEY"}
const BASE_URL = "https://sandbox-api.coris.ai/api/v0_2";
const HEADERS = {
  Authorization: "Token YOUR_API_KEY",
  "Content-Type": "application/json",
};
  1. Start a profile for a fictional business.
REQUEST_ID=$(curl -s -X POST "$CORIS_BASE_URL/merchant_profiler/" \
  -H "Authorization: Token $CORIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "business_name": "Acme Plumbing Co.",
    "address": {
      "address_type": "Registration",
      "city": "San Jose",
      "state": "CA",
      "country": "US"
    },
    "phone_number": "408-555-0142",
    "website": "https://www.acmeplumbing.example"
  }' | jq -r '.request_id')

echo "$REQUEST_ID"
response = requests.post(
    f"{BASE_URL}/merchant_profiler/",
    headers=HEADERS,
    json={
        "business_name": "Acme Plumbing Co.",
        "address": {
            "address_type": "Registration",
            "city": "San Jose",
            "state": "CA",
            "country": "US",
        },
        "phone_number": "408-555-0142",
        "website": "https://www.acmeplumbing.example",
    },
)
response.raise_for_status()
request_id = response.json()["request_id"]
print(request_id)
const created = await fetch(`${BASE_URL}/merchant_profiler/`, {
  method: "POST",
  headers: HEADERS,
  body: JSON.stringify({
    business_name: "Acme Plumbing Co.",
    address: {
      address_type: "Registration",
      city: "San Jose",
      state: "CA",
      country: "US",
    },
    phone_number: "408-555-0142",
    website: "https://www.acmeplumbing.example",
  }),
});
if (!created.ok) throw new Error(await created.text());
const { request_id: requestId } = await created.json();
console.log(requestId);

Try POST /merchant_profiler/ in the API explorer.

Use the returned request_id to fetch the profile. See the Quickstart.

Choose how you use Coris

Pick the path that matches how merchants reach you.

What you get back

What Coris returnsStart here
Registration data, OFAC and AML screening, a 0–100 risk scoreVerify a business at onboarding
Profile, website, reviews, industry, licenses, personnel, a 0–100 risk scoreUnderwrite a merchant
Alerts when a monitored account changesMonitor your portfolio
Payment alerts your team works in the portalTriage transaction alerts
One place to work disputes in the portalRespond to disputes

What to do next

If you want toDo this
Make your first complete callFollow the Quickstart.
Understand the objectsRead Core concepts.
Plan an integrationRead the path for your business model.

FAQ

Is the Coris API a data provider or a decision engine?

It is both. You can read structured data and scores, or let Coris monitor accounts and raise alerts. You keep the final decision.

Do I need the portal?

Business data calls need the portal only for your API key. Monitoring, alert review and dispute work use the portal day to day.

Can I test without production data?

Yes. The sandbox returns mocked results for most data. See Test in the sandbox.

Next: Quickstart


Did this page help you?