| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Update Merchant Info (V2)
Updates the core configuration of an existing V2 merchant application record. The writable fields cover the fees program, POS system, agent profile association, boarding settings template, MID, and external system identifiers. This endpoint is used to correct or change top-level merchant metadata before or after submission. Only the fields provided in the merchant sub-object are updated.
Endpoint
POST /api/v2/merchant/info
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 when you need to change the agent assignment, fees program, or POS system for a merchant that was already created with POST /api/v2/merchant/create. It is also used to associate external client or chain IDs for multi-system integrations. After updating, verify the changes with GET /api/v2/merchant/info before submitting.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| id | integer (int32) | Yes | Merchant profile ID to update (1–999999) |
| merchant | TsysMerchantV2Edit | No | Merchant configuration fields to update |
| merchant.feesProgram | string (enum) | Yes (if merchant provided) | Pricing program: Traditional, CashDiscount, Surcharge, ServiceFee, DualPricing |
| merchant.agentProfileId | integer (int32) | Yes (if merchant provided) | Agent profile ID from GET /api/v2/agent/profile |
| merchant.pos | string (enum) | Yes (if merchant provided) | POS system type: None, AptitoPalomaPOS, Clover, PalomaPOS, Aldelo, Restoactive, PoyntPOS, CloverGo, UnifiedMpos, CustomPos, RetailCloud, EHopper, FreedomPos, ClubPos, SelfLane, OtfPOS, NProKiosk, GretaPOS |
| merchant.boardingSettingsId | integer (int32) | No | Boarding settings template ID to apply |
| merchant.mid | string | No | Existing MID to associate (for manual MID assignment scenarios) |
| merchant.externalClientID | string | No | External client identifier for cross-system linking |
| merchant.externalChainID | string | No | External chain identifier for multi-location grouping |
{
"id": 30912,
"merchant": {
"feesProgram": "Surcharge",
"agentProfileId": 204,
"pos": "PoyntPOS",
"boardingSettingsId": 22,
"externalClientID": "EXT-CLIENT-8801"
}
}Response
200 OK
| Field | Type | Description |
|---|---|---|
| requestId | integer | Echo of the internal request ID |
| success | boolean | true if the merchant info was updated successfully |
| error | string | Error message if success is false |
| validationErrors | array | Field-level validation errors with field and error properties |
{
"requestId": 71204,
"success": true,
"error": null,
"validationErrors": []
}Error Codes
| Code | When it happens |
|---|---|
| 400 | id is missing, outside 1–999999 range, or merchant sub-object contains invalid enum values |
| 401 | Invalid or missing Basic Auth credentials |
| 403 | User does not have permission to update this merchant |
| 404 | No merchant found with the given id |
| 500 | Internal server error |
Common Mistakes
- Confusing this POST endpoint with the GET endpoint at the same path (
GET /api/v2/merchant/info) — the POST updates while the GET retrieves. - Omitting
feesProgram,agentProfileId, orposfrom themerchantobject — all three are required if themerchantobject is included at all. - Using
CashDiscountLegacyas thefeesProgramvalue — this value appears in GET responses for legacy records but is not accepted as input in update calls. - Not verifying the update with
GET /api/v2/merchant/infobefore calling the submit endpoint — confirms the changes were applied correctly. - Sending
id: 0or negative values — the schema enforcesminimum: 1andmaximum: 999999.
Related Endpoints
GET /api/v2/merchant/info— Retrieve the current merchant profile before or after updatingPOST /api/v2/merchant/fees— Update the merchant's fee schedulePOST /api/v2/merchant/submit— Submit the complete merchant application
Example
curl -X POST https://hq.staging.netevia.dev/api/v2/merchant/info \
-H "Authorization: Basic $(echo -n 'username:password' | base64)" \
-H "Content-Type: application/json" \
-d '{
"id": 30912,
"merchant": {
"feesProgram": "Surcharge",
"agentProfileId": 204,
"pos": "PoyntPOS",
"boardingSettingsId": 22,
"externalClientID": "EXT-CLIENT-8801"
}
}'