Search TSYS Direct merchants

All supplied filters are combined (AND) and applied before pagination; totalCount reflects every applied filter.
Date/time filter values are ISO 8601 (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss, optionally with an offset); a value
without an offset is interpreted in the HQ server's local time (US Eastern). Every date in the result carries
the server's offset (e.g. 2026-09-22T11:55:04-04:00), so it can be passed back as a boundary unchanged. The status date
window is half-open: statusDateFrom <= status date < statusDateTo, so a whole day is
statusDateFrom=2026-09-22&statusDateTo=2026-09-23 and a polling client passes its previous poll time as
statusDateFrom and the current one as statusDateTo. Each row returns that status date as statusDate
(null when unknown), the profile creation date as createdDate, and the latest submit and approval as
submitDate and approveDate (null when not yet submitted/approved), plus the merchant's mcc.

Examples:
GET /api/v1/merchants/tsys-direct/search?merchantProfileId=168171
GET /api/v1/merchants/tsys-direct/search?statusDateFrom=2026-09-22
GET /api/v1/merchants/tsys-direct/search?statusDateTo=2026-09-22T12:00:00
GET /api/v1/merchants/tsys-direct/search?statusDateFrom=2026-09-22&statusDateTo=2026-09-23
GET /api/v1/merchants/tsys-direct/search?status=Underwriting&statusDateFrom=2026-09-22T11:50:00&statusDateTo=2026-09-22T11:55:00&pageSize=500&pageNumber=1
GET /api/v1/merchants/tsys-direct/search?merchantProfileId=168171&statusDateFrom=2026-09-01

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

Search TSYS Direct merchants

All supplied filters are combined (AND) and applied before pagination; totalCount reflects every applied filter.

The mid filter is an exact match on the complete MID. Partial MID matching is no longer supported.
The merchantProfileId filter is also an exact match.

Date/time filter values are ISO 8601 (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss, optionally with an offset); a value
without an offset is interpreted in the HQ server's local time (US Eastern). Every date in the result carries
the server's offset (e.g. 2026-09-22T11:55:04-04:00), so it can be passed back as a boundary unchanged. The status date
window is half-open: statusDateFrom <= status date < statusDateTo, so a whole day is
statusDateFrom=2026-09-22&statusDateTo=2026-09-23 and a polling client passes its previous poll time as
statusDateFrom and the current one as statusDateTo. If statusDateFrom is later than statusDateTo, or either
date value is invalid, the API returns HTTP 400 with modelState validation for the corresponding parameter.

Each row returns that status date as statusDate (null when unknown), the profile creation date as createdDate,
and the latest submit and approval as submitDate and approveDate (null when not yet submitted/approved), plus
the merchant's mcc.

Examples:
GET /api/v1/merchants/tsys-direct/search?merchantProfileId=168171
GET /api/v1/merchants/tsys-direct/search?statusDateFrom=2026-09-22
GET /api/v1/merchants/tsys-direct/search?statusDateTo=2026-09-22T12:00:00
GET /api/v1/merchants/tsys-direct/search?statusDateFrom=2026-09-22&statusDateTo=2026-09-23
GET /api/v1/merchants/tsys-direct/search?status=Underwriting&statusDateFrom=2026-09-22T11:50:00&statusDateTo=2026-09-22T11:55:00&pageSize=500&pageNumber=1
GET /api/v1/merchants/tsys-direct/search?merchantProfileId=168171&statusDateFrom=2026-09-01

Search Merchants

Searches the TSYS Direct merchant database using one or more filter criteria and returns a paginated list of matching merchant records. All query parameters are optional — providing more filters narrows results. Each result includes the merchant's internal profile ID, assigned MID, DBA name, current boarding status, and office affiliation. Use this endpoint for operational management, customer support lookups, and compliance monitoring.

Endpoint

GET /api/v1/merchants/tsys-direct/search

Authentication

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

Authorization: Basic {base64(username:password)}

When to use

Use this endpoint when you need to find a specific merchant by MID, DBA, email, or phone, or when building dashboards that list merchants filtered by status or MCC. It supports pagination for large result sets. ISO administrators and support teams use this to look up merchant records before performing actions like boarding status checks, underwriting reviews, or account updates.

Query Parameters

ParameterTypeRequiredDescription
midstringNoComplete Merchant Identification Number. Exact match only. Partial MID matching is not supported.
merchantProfileIdinteger (int32)NoInternal Netevia HQ merchant profile ID. Exact match.
dbastringNoDoing Business As name (partial match supported)
emailstringNoEmail address associated with the merchant account
zipCodestringNoZIP code of the merchant's business location
phonestringNoContact phone number of the merchant
statusstring (enum)NoFilter by boarding/processing status — see full enum list below
statusDateFromstring (ISO 8601)NoInclusive lower boundary for the merchant's statusDate. If no offset is supplied, the value is interpreted as US Eastern time.
statusDateTostring (ISO 8601)NoExclusive upper boundary for the merchant's statusDate. If no offset is supplied, the value is interpreted as US Eastern time.
mccstringNoMerchant Category Code (SIC code)
pageNumberinteger (int32)NoPage number for paginated results (default: 1)
pageSizeinteger (int32)NoNumber of records per page (default: 10)

Date Range Filtering

statusDateFrom is inclusive and statusDateTo is exclusive:

statusDateFrom <= statusDate < statusDateTo

For a complete calendar day, use the start of the requested day as statusDateFrom and the start of the next day as
statusDateTo. For example:

statusDateFrom=2026-09-24&statusDateTo=2026-09-25

If a date/time value does not include an offset, it is interpreted as US Eastern time.

If statusDateFrom is later than statusDate, or an invalid date is supplied, the API returns 400 Bad Request with
modelState validation for the corresponding parameter.

Breaking Change: MID Matching

Breaking change: The mid parameter now requires an exact match on the full MID. Existing clients that relied
on partial MID matching must be updated to send the complete MID.

status enum values: NotSubmitted, Approved, PreApproved, Declined, Deactivated, WithDrawn, Closed, Pending, PendingPreUw, InCredit, ConditionallyApproved, RequestChanges, PreUnderwriting, Prospect, Draft, Received, UnderReview, PendingReview, PendingReviewPreUw, Cancelled, T2UnderReview, T2Approved, T2Declined, T2Any, T2Closed, T2Cancelled, Underwriting, MPAInProcess, MPACancelled, MPADeclined, MPADeleted, MPAError, MPABoarded, CRPOSEquipment, New, ElavonSigned, ElavonSubmitted, ElavonProcessorReceived

Response

200 OK

FieldTypeDescription
pageNumberintegerCurrent page number returned
pageSizeintegerNumber of records per page
totalCountintegerTotal number of merchants matching the search criteria
itemsarray of MerchantSearchResultList of merchant records for the current page
items[].merchantProfileIdintegerInternal Netevia HQ merchant profile ID
items[].midstringAssigned Merchant Identification Number (null if not yet boarded)
items[].dbastringDoing Business As name
items[].statusstring (enum)Current boarding/processing status
items[].statusDatestring (ISO 8601 with offset)Date and time when the merchant's current status was set; null when unknown
items[].createdDatestring (ISO 8601 with offset)Date and time when the merchant profile was created
items[].submitDatestring (ISO 8601 with offset)Date and time of the latest submission; null when not yet submitted
items[].approveDatestring (ISO 8601 with offset)Date and time of the latest approval; null when not yet approved
items[].mccintegerMerchant Category Code
items[].officeTitlestringName of the ISO office or branch managing this merchant
requestIdintegerEcho of the internal request ID
successbooleantrue if the call succeeded
errorstringError message if success is false
validationErrorsarrayField-level validation errors if any
{
  "pageNumber": 1,
  "pageSize": 20,
  "totalCount": 3,
  "items": [
    {
      "merchantProfileId": 30912,
      "mid": "450001234567",
      "dba": "The Corner Bakery",
      "status": "Approved",
      "officeTitle": "Phoenix Regional Office"
    },
    {
      "merchantProfileId": 30944,
      "mid": null,
      "dba": "Corner Bakery Downtown",
      "status": "UnderReview",
      "officeTitle": "Phoenix Regional Office"
    },
    {
      "merchantProfileId": 31002,
      "mid": null,
      "dba": "Cornerstone Catering",
      "status": "Draft",
      "officeTitle": "Scottsdale Branch"
    }
  ],
  "requestId": 87450,
  "success": true,
  "error": null,
  "validationErrors": []
}

Error Codes

CodeWhen it happens
400A query parameter has an invalid format (e.g., non-integer merchantProfileId, unrecognized status enum value)
401Invalid or missing Basic Auth credentials
403User does not have permission to search merchants in the requested scope
500Internal server error

Common Mistakes

  • Providing no filter parameters at all — the endpoint will return all merchants accessible to the authenticated user, which may be a very large dataset and slow to return. Always supply at least one filter.
  • Using a partial MID string — mid requires an exact match on the full MID.
  • Treating merchantProfileId as a partial match — merchantProfileId is an exact match.
  • Using an inclusive upper date boundary — statusDateTo is exclusive. For a whole day, use the next calendar day as statusDateTo.
  • Sending statusDateFrom later than statusDateTo or an invalid date — the request returns HTTP 400 with modelState validation for the corresponding parameter.
  • Sending abbreviated state names or free-text in the status field — it must exactly match one of the documented enum values, including capitalization.
  • Not accounting for pagination — if totalCount exceeds pageSize, increment pageNumber to retrieve subsequent pages.
  • Confusing merchantProfileId (internal Netevia ID) with mid (processor-assigned MID) — they are different identifiers.

Related Endpoints

  • GET /api/v1/merchant/status — Retrieve the detailed boarding status for a specific merchant by profile ID
  • GET /api/v2/merchant/info — Get full merchant profile configuration data
  • GET /api/v2/merchant/fees — Retrieve the fee schedule for a specific merchant

Example

curl -X GET "https://hq.staging.netevia.dev/api/v1/merchants/tsys-direct/search?dba=Corner+Bakery&status=Approved&pageNumber=1&pageSize=20" \
  -H "Authorization: Basic $(echo -n 'username:password' | base64)" \
  -H "Accept: application/json"

OpenAPI definition

{
  "openapi": "3.0.0",
  "info": {
    "version": "v1",
    "title": "Netevia HQ | API Documentation",
    "description": "Netevia HQ | API Documentation"
  },
  "paths": {
    "/api/v1/merchants/tsys-direct/search": {
      "get": {
        "tags": [
          "Search merchants"
        ],
        "summary": "Search TSYS Direct merchants",
        "description": "All supplied filters are combined (AND) and applied before pagination; totalCount reflects every applied filter.\r\nDate/time filter values are ISO 8601 (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss, optionally with an offset); a value\r\nwithout an offset is interpreted in the HQ server's local time (US Eastern). Every date in the result carries\r\nthe server's offset (e.g. 2026-09-22T11:55:04-04:00), so it can be passed back as a boundary unchanged. The status date\r\nwindow is half-open: statusDateFrom &lt;= status date &lt; statusDateTo, so a whole day is\r\nstatusDateFrom=2026-09-22&amp;statusDateTo=2026-09-23 and a polling client passes its previous poll time as\r\nstatusDateFrom and the current one as statusDateTo. Each row returns that status date as statusDate\r\n(null when unknown), the profile creation date as createdDate, and the latest submit and approval as\r\nsubmitDate and approveDate (null when not yet submitted/approved), plus the merchant's mcc.\r\n\r\nExamples:\r\nGET /api/v1/merchants/tsys-direct/search?merchantProfileId=168171\r\nGET /api/v1/merchants/tsys-direct/search?statusDateFrom=2026-09-22\r\nGET /api/v1/merchants/tsys-direct/search?statusDateTo=2026-09-22T12:00:00\r\nGET /api/v1/merchants/tsys-direct/search?statusDateFrom=2026-09-22&amp;statusDateTo=2026-09-23\r\nGET /api/v1/merchants/tsys-direct/search?status=Underwriting&amp;statusDateFrom=2026-09-22T11:50:00&amp;statusDateTo=2026-09-22T11:55:00&amp;pageSize=500&amp;pageNumber=1\r\nGET /api/v1/merchants/tsys-direct/search?merchantProfileId=168171&amp;statusDateFrom=2026-09-01",
        "operationId": "Search_SearchMerchants",
        "parameters": [
          {
            "name": "mid",
            "in": "query",
            "description": "Complete MID, exact match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "merchantProfileId",
            "in": "query",
            "description": "Merchant profile ID, exact match (integer). A valid id with no matching merchant returns an empty successful result.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "dba",
            "in": "query",
            "description": "DBA, partial match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "Merchant or primary owner email, partial match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zipCode",
            "in": "query",
            "description": "Any owner, legal or DBA address ZIP, partial match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "phone",
            "in": "query",
            "description": "Any merchant/owner phone, partial match; must not start with 1",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Merchant status",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "NotSubmitted",
                "Approved",
                "PreApproved",
                "Declined",
                "Deactivated",
                "WithDrawn",
                "Closed",
                "Pending",
                "PendingPreUw",
                "InCredit",
                "ConditionallyApproved",
                "RequestChanges",
                "PreUnderwriting",
                "Prospect",
                "Draft",
                "Received",
                "UnderReview",
                "PendingReview",
                "PendingReviewPreUw",
                "Cancelled",
                "T2UnderReview",
                "T2Approved",
                "T2Declined",
                "T2Any",
                "T2Closed",
                "T2Cancelled",
                "Underwriting",
                "MPAInProcess",
                "MPACancelled",
                "MPADeclined",
                "MPADeleted",
                "MPAError",
                "MPABoarded",
                "CRPOSEquipment",
                "New",
                "SubmittedForReview",
                "PendingAfterSubmit"
              ]
            }
          },
          {
            "name": "statusDateFrom",
            "in": "query",
            "description": "Inclusive lower boundary (statusDateFrom &lt;= status date) of the date and time when the merchant's current status was set (ISO 8601; server local time when no offset is given). Merchants with an unknown status date are excluded when this or statusDateTo is supplied.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "statusDateTo",
            "in": "query",
            "description": "Exclusive upper boundary (status date &lt; statusDateTo) of the status date (ISO 8601; server local time when no offset is given). Must not be earlier than statusDateFrom, otherwise HTTP 400.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "mcc",
            "in": "query",
            "description": "MCC (SIC code), partial match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "1-based page number, default 1",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Page size 1..1000, default 20",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiPagedResult1_MerchantSearchResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiPagedResult1_MerchantSearchResult"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ApiPagedResult1_MerchantSearchResult"
                }
              },
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ApiPagedResult1_MerchantSearchResult"
                }
              },
              "pageNumber": {
                "examples": {
                  "response": {
                    "value": 1
                  }
                }
              },
              "pageSize": {
                "examples": {
                  "response": {
                    "value": 20
                  }
                }
              },
              "totalCount": {
                "examples": {
                  "response": {
                    "value": 20
                  }
                }
              },
              "items": {
                "examples": {
                  "response": {
                    "value": [
                      {
                        "merchantProfileId": 1,
                        "mid": "MID",
                        "dba": "123",
                        "status": 1,
                        "statusDate": "2026-09-22T11:55:04-04:00",
                        "createdDate": "2026-09-20T09:30:00-04:00",
                        "submitDate": "2026-09-21T10:15:00-04:00",
                        "approveDate": "2026-09-22T11:55:04-04:00",
                        "mcc": 5812,
                        "officeTitle": "Netevia"
                      }
                    ]
                  }
                }
              },
              "success": {
                "examples": {
                  "response": {
                    "value": true
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "Basic": []
    }
  ],
  "servers": [
    {
      "url": "https://hq.staging.netevia.dev"
    }
  ],
  "components": {
    "securitySchemes": {
      "Basic": {
        "type": "http",
        "description": "Basic HTTP Authentication",
        "scheme": "basic"
      }
    },
    "schemas": {
      "ValidationError": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "error": {
            "type": "string"
          }
        }
      },
      "ApiPagedResult1_MerchantSearchResult": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "format": "int32",
            "type": "integer"
          },
          "totalCount": {
            "format": "int32",
            "type": "integer"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MerchantSearchResult"
            }
          },
          "data": {
            "$ref": "#/components/schemas/MerchantSearchResult"
          },
          "requestId": {
            "format": "int32",
            "type": "integer"
          },
          "success": {
            "type": "boolean"
          },
          "error": {
            "type": "string"
          },
          "validationErrors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            }
          }
        }
      },
      "MerchantSearchResult": {
        "type": "object",
        "properties": {
          "merchantProfileId": {
            "format": "int32",
            "type": "integer"
          },
          "mid": {
            "type": "string"
          },
          "dba": {
            "type": "string"
          },
          "status": {
            "enum": [
              "NotSubmitted",
              "Approved",
              "PreApproved",
              "Declined",
              "Deactivated",
              "WithDrawn",
              "Closed",
              "Pending",
              "PendingPreUw",
              "InCredit",
              "ConditionallyApproved",
              "RequestChanges",
              "PreUnderwriting",
              "Prospect",
              "Draft",
              "Received",
              "UnderReview",
              "PendingReview",
              "PendingReviewPreUw",
              "Cancelled",
              "T2UnderReview",
              "T2Approved",
              "T2Declined",
              "T2Any",
              "T2Closed",
              "T2Cancelled",
              "Underwriting",
              "MPAInProcess",
              "MPACancelled",
              "MPADeclined",
              "MPADeleted",
              "MPAError",
              "MPABoarded",
              "CRPOSEquipment",
              "New",
              "SubmittedForReview",
              "PendingAfterSubmit"
            ],
            "type": "string"
          },
          "statusDate": {
            "format": "date-time",
            "description": "Date and time when the merchant's current status was set (ISO 8601 with the server's offset); the value statusDateFrom/statusDateTo compare against. Null when unknown.",
            "type": "string"
          },
          "createdDate": {
            "format": "date-time",
            "description": "Date and time the merchant profile was created (ISO 8601 with offset).",
            "type": "string"
          },
          "submitDate": {
            "format": "date-time",
            "description": "Date and time of the latest submit (ISO 8601 with the server's offset); null when never submitted.",
            "type": "string"
          },
          "approveDate": {
            "format": "date-time",
            "description": "Date and time of the latest approval (ISO 8601 with the server's offset); null when never approved.",
            "type": "string"
          },
          "mcc": {
            "format": "int32",
            "description": "MCC (SIC code) of the merchant (integer), the value the mcc filter matches against; null when not set.",
            "type": "integer"
          },
          "officeTitle": {
            "type": "string"
          }
        }
      }
    }
  }
}
Query Params
string

Complete MID, exact match

int32

Merchant profile ID, exact match (integer). A valid id with no matching merchant returns an empty successful result.

string

DBA, partial match

string

Merchant or primary owner email, partial match

string

Any owner, legal or DBA address ZIP, partial match

string

Any merchant/owner phone, partial match; must not start with 1

string
enum

Merchant status

date-time

Inclusive lower boundary (statusDateFrom <= status date) of the date and time when the merchant's current status was set (ISO 8601; server local time when no offset is given). Merchants with an unknown status date are excluded when this or statusDateTo is supplied.

date-time

Exclusive upper boundary (status date < statusDateTo) of the status date (ISO 8601; server local time when no offset is given). Must not be earlier than statusDateFrom, otherwise HTTP 400.

string

MCC (SIC code), partial match

int32

1-based page number, default 1

int32

Page size 1..1000, default 20

Headers
string
enum
Defaults to application/json

Generated from available response content types

Response

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
pageNumber
pageSize
totalCount
items
success