# Get current merchant status

## Get Current Merchant Status

Retrieves the current status of a merchant application in the payment processing system. The response includes the status label, the date the status was last updated, an optional comment explaining the status change, and the merchant's MID (Merchant Identification Number) if the account has been approved and assigned one. This is the primary polling endpoint for tracking a merchant's progress through the boarding lifecycle.

### Endpoint

`GET /api/v1/merchant/status`

### 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 to check where a merchant application stands in the boarding workflow — from initial submission through underwriting, approval, and activation. Poll this endpoint periodically after submitting a merchant to detect status transitions such as "Pending" to "Approved" or "RequestChanges". For a richer status object with a full enum of possible states, see `GET /api/v1/merchant/status2`.

### Query Parameters

| Parameter | Type            | Required | Description                                        |
| --------- | --------------- | -------- | -------------------------------------------------- |
| id        | integer (int32) | Yes      | The unique internal ID of the merchant application |

### Response

**200 OK**

The `data` object is of type `StatusResponse`.

| Field             | Type               | Description                                                                                                    |
| ----------------- | ------------------ | -------------------------------------------------------------------------------------------------------------- |
| data              | object             | Wrapper for the status payload                                                                                 |
| data.status       | string             | Current status of the merchant application (e.g., `"Pending"`, `"Approved"`, `"Declined"`, `"RequestChanges"`) |
| data.statusDate   | string (date-time) | ISO 8601 timestamp of when this status was last set                                                            |
| data.comment      | string             | Human-readable explanation for the current status (may be null)                                                |
| data.mid          | string             | Merchant Identification Number assigned by the processor (present only when approved and boarded)              |
| status            | string             | HTTP status string (e.g., `"OK"`)                                                                              |
| error             | string             | Error message if the request failed                                                                            |
| warning           | string             | Non-fatal warning message                                                                                      |
| validationResults | array              | List of validation errors, each with `memberNames` and `errorMessage`                                          |
| requestId         | integer (int32)    | Internal request tracking ID                                                                                   |

```json
{
  "data": {
    "status": "Approved",
    "statusDate": "2026-05-15T09:30:00Z",
    "comment": "Application approved. MID assigned and terminal staging in progress.",
    "mid": "4280001234567"
  },
  "status": "OK",
  "error": null,
  "warning": null,
  "validationResults": [],
  "requestId": 103847
}
```

**Example — Pending with comment:**

```json
{
  "data": {
    "status": "RequestChanges",
    "statusDate": "2026-05-14T16:45:00Z",
    "comment": "Please provide a copy of the voided check and update the bank routing number.",
    "mid": null
  },
  "status": "OK",
  "error": null,
  "warning": null,
  "validationResults": [],
  "requestId": 103201
}
```

### Error Codes

| Code | When it happens                                            |
| ---- | ---------------------------------------------------------- |
| 400  | The `id` query parameter is missing or not a valid integer |
| 401  | Invalid or missing Basic Auth credentials                  |
| 403  | User does not have permission for this operation           |
| 404  | No merchant application found for the given `id`           |
| 500  | Internal server error                                      |

### Common Mistakes

* Polling too frequently — status changes are not real-time; implement exponential backoff or reasonable polling intervals.
* Assuming `data.mid` will always be populated — the MID is only assigned after the merchant is fully approved and boarded by the processor; it will be `null` in earlier states.
* Not checking `data.comment` — when status is `"RequestChanges"`, the comment field typically explains what needs to be corrected.
* Confusing this endpoint with `GET /api/v1/merchant/status2` — `status2` returns a richer response object with a broader enum of status values and explicit success/error fields.

### Related Endpoints

* `GET /api/v1/merchant/status2` — alternative status endpoint with a richer enum of status values
* `POST /api/v1/merchant/submit` — submit the merchant application for processing
* `POST /api/v1/merchant/updateStatus` — update a merchant's status (admin use)

### Example

```bash
curl -X GET "https://hq.staging.netevia.dev/api/v1/merchant/status?id=10045" \
  -H "Authorization: Basic $(echo -n 'username:password' | base64)" \
  -H "Accept: application/json"
```

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "version": "v1",
    "title": "Netevia HQ | API Documentation",
    "description": "Netevia HQ | API Documentation"
  },
  "paths": {
    "/api/v1/merchant/status": {
      "get": {
        "tags": [
          "Merchant applications/Merchants status management"
        ],
        "summary": "Get current merchant status",
        "operationId": "Boarding_GetStatus",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse1_StatusResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse1_StatusResponse"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse1_StatusResponse"
                }
              },
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse1_StatusResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "Basic": []
    }
  ],
  "servers": [
    {
      "url": "https://hq.staging.netevia.dev"
    }
  ],
  "components": {
    "securitySchemes": {
      "Basic": {
        "type": "http",
        "description": "Basic HTTP Authentication",
        "scheme": "basic"
      }
    },
    "schemas": {
      "ValidationResult": {
        "type": "object",
        "properties": {
          "memberNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "readOnly": true
          },
          "errorMessage": {
            "type": "string"
          }
        }
      },
      "ApiResponse1_StatusResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/StatusResponse"
          },
          "status": {
            "enum": [
              "Continue",
              "SwitchingProtocols",
              "OK",
              "Created",
              "Accepted",
              "NonAuthoritativeInformation",
              "NoContent",
              "ResetContent",
              "PartialContent",
              "MultipleChoices",
              "Ambiguous",
              "MovedPermanently",
              "Moved",
              "Found",
              "Redirect",
              "SeeOther",
              "RedirectMethod",
              "NotModified",
              "UseProxy",
              "Unused",
              "TemporaryRedirect",
              "RedirectKeepVerb",
              "BadRequest",
              "Unauthorized",
              "PaymentRequired",
              "Forbidden",
              "NotFound",
              "MethodNotAllowed",
              "NotAcceptable",
              "ProxyAuthenticationRequired",
              "RequestTimeout",
              "Conflict",
              "Gone",
              "LengthRequired",
              "PreconditionFailed",
              "RequestEntityTooLarge",
              "RequestUriTooLong",
              "UnsupportedMediaType",
              "RequestedRangeNotSatisfiable",
              "ExpectationFailed",
              "UpgradeRequired",
              "InternalServerError",
              "NotImplemented",
              "BadGateway",
              "ServiceUnavailable",
              "GatewayTimeout",
              "HttpVersionNotSupported"
            ],
            "type": "string"
          },
          "error": {
            "type": "string"
          },
          "warning": {
            "type": "string"
          },
          "validationResults": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValidationResult"
            }
          },
          "requestId": {
            "format": "int32",
            "type": "integer"
          }
        }
      },
      "StatusResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "statusDate": {
            "format": "date-time",
            "type": "string"
          },
          "comment": {
            "type": "string"
          },
          "mid": {
            "type": "string"
          }
        }
      }
    }
  }
}
```