Trigger a new soft credit pull for a merchant. Idempotent: if a successful or pending soft pull already exists, returns HTTP 200 with alreadyExisted=true. If a new pull is triggered, returns HTTP 202 with alreadyExisted=false.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Trigger Soft Credit Pull

Initiates a new soft credit pull for a merchant through Experian. This endpoint is idempotent: if a successful or pending soft pull already exists for the merchant, it returns HTTP 200 with alreadyExisted=true without triggering a new pull. If no valid pull exists, it triggers a new one and returns HTTP 202 with alreadyExisted=false.

Endpoint

POST /api/v1/merchant/creditProfile/softPull

Authentication

Basic HTTP Authentication required. Encode username:password in Base64 and pass in the Authorization header:

Authorization: Basic {base64(username:password)}

When to use

Call this endpoint at the start of the underwriting process to initiate Experian verification for a merchant. After triggering the pull, poll GET /creditProfile until the report status changes to Completed, then download the report via GET /creditProfile/report. The idempotency behavior means it is safe to call multiple times without creating duplicate pulls.

Request Body

FieldTypeRequiredDescription
merchantProfileIdinteger (int32)YesMerchant profile ID to run the soft pull for
{
  "merchantProfileId": 161787
}

Response

200 OK — soft pull already existed (no new pull triggered)

202 Accepted — new soft pull triggered successfully

FieldTypeDescription
data.reportIdstringID of the soft pull report — use with GET /creditProfile/report
data.statusstringCurrent status: Pending, Completed, Failed
data.alreadyExistedbooleantrue if existing pull was returned, false if new pull was triggered
requestIdintegerUnique request identifier for tracing
successbooleantrue if request succeeded
errorstringError message if success is false
{
  "data": {
    "reportId": "rpt-8f3a2c1d",
    "status": "Pending",
    "alreadyExisted": false
  },
  "requestId": 4188102,
  "success": true,
  "error": null
}

When pull already existed (HTTP 200):

{
  "data": {
    "reportId": "rpt-8f3a2c1d",
    "status": "Completed",
    "alreadyExisted": true
  },
  "requestId": 4188103,
  "success": true,
  "error": null
}

Error Codes

CodeWhen it happens
400merchantProfileId missing or invalid
401Invalid or missing Basic Auth credentials
403User does not have Underwriting access
404Merchant profile not found
500Internal server error or Experian service unavailable

Common Mistakes

  • Treating HTTP 200 and 202 as errors — both are success responses. 200 means idempotent return, 202 means new pull started.
  • Not waiting for status: Completed before downloading the report — the pull is asynchronous. Poll GET /creditProfile until reports show Completed status.
  • Calling this endpoint repeatedly expecting multiple pulls — by design, it returns the existing pull if one is active or completed.

Related Endpoints

Example

curl -X POST "https://hq.staging.netevia.dev/api/v1/merchant/creditProfile/softPull" \
  -H "Authorization: Basic $(echo -n 'username:password' | base64)" \
  -H "Content-Type: application/json" \
  -d '{"merchantProfileId": 161787}'
Body Params
int32
required
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
string
enum
Defaults to application/json

Generated from available request content types

Allowed:
Responses

Language
Credentials
Basic
base64
:
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
text/json