Smile logo
← Use cases / Digital banking & lending

Automate origination without adding fraud exposure.

One API call verifies identity and income, scores fraud and credit risk, and screens against watchlists — so account opening and loan origination move at the speed of the applicant, not the back office.

The shape · Three intersecting orbits — identity, income and risk checked together, each on its own axis.

The problem

Manual origination reviews are slow and inconsistent — a human underwriter re-keys applicant data across three or four vendor dashboards, and every extra minute in the queue costs conversion. Meanwhile, the fraud that does get through is exactly the kind manual review misses: synthetic identities and coordinated device rings that look fine one application at a time.

The solution

Smile returns one risk profile per applicant — identity, income, device, AML, and loan-stacking signals reconciled into a single API response — so an underwriting system can auto-approve, auto-decline, or route to review without waiting on a person to reconcile five separate vendor reports.

What changes
Reduce integration time from weeks to hours with a single API
Move origination decisions from minutes to milliseconds
Cut manual re-keying between vendor dashboards to zero
How it works

From trigger to decision, in four steps.

STEP 1
Trigger the event
An applicant submits an account-opening or loan application on your frontend, which sends the applicant's identifiers to your backend.
STEP 2
Call the API endpoint
Your backend authenticates and sends a POST request to /v1/signals with the applicant's mobile number, country code, and consent record.
STEP 3
Real-time processing & webhooks
Smile checks identity, income, device, AML, and loan-stacking signals in parallel and returns a synchronous response — with a webhook fired if any check needs asynchronous follow-up.
STEP 4
Deliver the output
Your underwriting engine receives structured signals and risk data, applies your own approve, decline, or review rules, and updates the applicant's status immediately.
The code

Request in, structured data out.

Request — cURL
curl -X POST "https://sandbox.smileapi.io/v1/signals" \
  -u "$SMILE_CLIENT_ID:$SMILE_CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "phone": "+639559991234",
  "templateId": "tpl-sgn003001",
  "countryCode": "PH",
  "consent": {
    "type": "Terms And Conditions",
    "version": "1.0",
    "consentedWith": "I agree to the terms and conditions.",
    "consentedAt": "2021-04-14T09:30:24Z",
    "consentTemplateId": null
  }
}'
Response — 200 OK
{
  "code": "OK",
  "message": "Success!",
  "requestId": "bf218f72-441a-4d68-93da-eec76991bd4f",
  "data": {
    "id": "signal-5ae0c3de714241debb30c9f7b0ec92c9",
    "createdAt": "2026-08-18T06:22:14Z",
    "status": "COMPLETED",
    "resultCode": "SUCCESS",
    "resultMessage": "query success",
    "signalType": "Signal1",
    "requestMeta": { … },
    "items": [
      { "name": "events_application_approval_day30", "value": "0", "valueType": "NUMBER" },
      { "name": "events_loan_disbursement_day30", "value": "0", "valueType": "NUMBER" },
      { "name": "events_successful_repayment_day30", "value": "0", "valueType": "NUMBER" },
      { "name": "events_overdue_day30", "value": "0", "valueType": "NUMBER" },
      { "name": "events_overdue_day90_amount", "value": null, "valueType": "NUMBER" },
      …
    ]
  }
}
templateIdSelects the signal set. tpl-sgn003001 returns lending-activity counts across applications, disbursements, repayments, and overdue events.
itemsEach signal is a name, a string value, and a valueType. Windows run 30, 90, and 180 days, with counts of institutions involved. A null value means no data for that signal.
resultCodeSUCCESS when data was found. NO_DATA means the number is valid but has no matching activity — treat it as an input to your rules, not an error.
consentThe consent record you captured from the applicant. Required on every request.
Security & reliability

Built to be trusted in production.

Data privacy & compliance

Data is encrypted in transit and at rest, sensitive fields are tokenized rather than stored in the clear, and consent is captured at the point of collection — adapted to the data privacy regulations applicable in each market you operate.

Reliability

Idempotent requests, built-in retry support, and published rate limits mean a dropped connection or a retried request never produces a duplicate check. Each client can make up to 20 requests per second per IP address across all endpoints; anything above that returns HTTP 429.

Graceful failure

Every error returns a descriptive status code and a structured JSON body with a machine-readable code and a request ID — never a bare 500 — so a failed check is something your application can handle, not just log.

AI & data-driven decisions

How does Smile API power AI and data-driven decisions?

Smile API gives digital lenders a verified, machine-readable borrower profile. Underwriting models and AI loan assistants can use it to make fast, data-driven credit decisions and explain them.

Data-driven decisions

Underwrite with verified income and employment instead of stated figures, and keep monitoring the borrower after disbursement.

Features for your models

Clean, labelled and consented attributes — identity, income, device and watchlist outcomes — ready to use as inputs for credit and fraud scoring models.

Context for AI agents

An AI loan assistant can pull the borrower's profile, check affordability against verified income and route edge cases to a credit officer.

How can an AI agent support loan decisions with Smile API?

The agent requests the applicant's risk profile, compares verified income and fraud signals with your credit policy, then recommends approve, refer or decline — leaving the final call to your rules or your team.

Is Smile API data structured for machine use?

Yes. Results come back as consistent, typed JSON fields — verification statuses, scores and flags — so rules engines, machine learning models and large language model agents can read them without manual cleanup.

How is consent handled when AI uses Smile API data?

Every request carries the consent record captured from the end user, and Smile returns only the signals that consent covers. Your models and agents work with permissioned data, never scraped or self-reported guesses.
Example profile an agent receives
{
  "profile": "prf_8f21",
  "identity": "verified",
  "income": { "status": "verified", "source": "payroll" },
  "device": "trusted",
  "fraudScore": 0.07,
  "watchlists": "cleared",
  "affordability": "within_policy",
  "suggestedAction": "approve_with_limit"
}
Get connected

Ready to get connected?

Start with one capability or deploy the full lifecycle — Smile plugs into your existing onboarding and underwriting flows either way.

Contact sales