Groove Restricted

Resolve this before you come in.

This desk keeps a single admission problem. It is exact. Rounding commentary, spaces, and separators are refused.

Ramanujan noticed that this value misses an integer by less than one part in a trillion. Write that integer.

Back to docs
API reference

Merchants

30 methods. Request fields, an example response, and notes on what comes back in data.

Base https://api.groove.com.na Updated October 2026
GET /api/merchant-activation/:token

Fetch one resource by id or token.

Public

Request

ParameterInReq.Description
tokenpathYOpaque session or activation token.
namebodyYDisplay name (min 2, max 80).
passwordbodyYAccount password (min 8, max 128).
confirmPasswordbodyYText field (min 8, max 128).
messagebodyYHuman-readable text body.
pathbodyYRequest field. See Zod schema in the route module for constraints.

Example body

{
  "name": "\u2026",
  "password": "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
  "confirmPassword": "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
  "message": "\u2026",
  "path": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchant-activation/:token

Create a resource or run this action.

Public

Request

ParameterInReq.Description
tokenpathYOpaque session or activation token.
namebodyYDisplay name (min 2, max 80).
passwordbodyYAccount password (min 8, max 128).
confirmPasswordbodyYText field (min 8, max 128).
messagebodyYHuman-readable text body.
pathbodyYRequest field. See Zod schema in the route module for constraints.

Example body

{
  "name": "\u2026",
  "password": "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
  "confirmPassword": "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
  "message": "\u2026",
  "path": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

GET /api/merchant-applications

List or read resources for this path.

Bearer token

Request

ParameterInReq.Description
decisionbodyYOne of: "approved", "declined".
declineReasonbodyNText field (max 1000).
reviewerNotesbodyNText field (max 2000).
riskLevelbodyNOne of: "low", "medium", "high".

Example body

{
  "decision": "\u2026",
  "declineReason": "\u2026",
  "reviewerNotes": "\u2026",
  "riskLevel": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchant-applications

Create a resource or run this action.

Public

Request

ParameterInReq.Description
amountMinorbodyYAmount in the smallest currency unit (NAD cents).
destinationbodyYEnumerated string.
modebodyYOne of: "now", "schedule".
scheduledForbodyNText field (min 8, max 40).
marisMsisdnbodyNText field (min 8, max 20).
idempotencyKeybodyNText field (min 8, max 80).

Example body

{
  "amountMinor": 0,
  "destination": "\u2026",
  "mode": "\u2026",
  "scheduledFor": "\u2026",
  "marisMsisdn": "\u2026",
  "idempotencyKey": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

PATCH /api/merchant-applications/:id

Update selected fields on this resource.

Bearer token

Request

ParameterInReq.Description
idpathYPath parameter identifying the resource.
decisionbodyYOne of: "approved", "declined".
declineReasonbodyNText field (max 1000).
reviewerNotesbodyNText field (max 2000).
riskLevelbodyNOne of: "low", "medium", "high".

Example body

{
  "decision": "\u2026",
  "declineReason": "\u2026",
  "reviewerNotes": "\u2026",
  "riskLevel": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

GET /api/merchant-applications/docs/:token

Fetch one resource by id or token.

Public

Request

ParameterInReq.Description
tokenpathYOpaque session or activation token.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchant-applications/docs/:token

Create a resource or run this action.

Public

Request

ParameterInReq.Description
tokenpathYOpaque session or activation token.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

GET /api/merchant-applications/pay/:token

Fetch one resource by id or token.

Public

Request

ParameterInReq.Description
tokenpathYOpaque session or activation token.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchant-applications/pay/:token

Create a resource or run this action.

Public

Request

ParameterInReq.Description
tokenpathYOpaque session or activation token.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchant-applications/pay/:token/maris/verify-otp

Confirm a Maris one-time password.

Public

Request

ParameterInReq.Description
tokenpathYOpaque session or activation token.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchants/change-password

Create a resource or run this action.

Bearer token

Request

ParameterInReq.Description
currentPasswordbodyYText field (min 1, max 128).
newPasswordbodyYText field (min 8, max 128).

Example body

{
  "currentPassword": "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
  "newPassword": "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

GET /api/merchants/me

List or read resources for this path.

Bearer token

Request

No body or query parameters. Path values above, if any, are enough.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {
    "id": "66f0a1b2c3d4e5f678901234",
    "name": "Pat Fan",
    "email": "pat@example.com",
    "roles": [
      "customer"
    ],
    "phone": "+264811234567"
  }
}

Response data

Wrapped in the standard envelope (status, success, data, …). See the introduction for envelope fields.

FieldDescription
data.idResource identifier (Mongo ObjectId string).
data.nameHuman-readable name.
data.emailEmail address.
data.rolesArray. Element shape shown when sample includes objects.
data.phonePhone number when present on the profile.
PATCH /api/merchants/me

Update selected fields on this resource.

Bearer token

Request

ParameterInReq.Description
namebodyNDisplay name (min 2, max 120).
phonebodyNContact mobile number in international or local form (min 4, max 32).
businessNamebodyNMerchant business / trading name (min 2, max 200).
stallNamebodyNStall label shown on the floor and in reports (max 100).
payoutDetailsbodyYRequest field. See Zod schema in the route module for constraints.
settingsbodyYRequest field. See Zod schema in the route module for constraints.

Example body

{
  "name": "\u2026",
  "phone": "\u2026",
  "businessName": "\u2026",
  "stallName": "\u2026",
  "payoutDetails": "\u2026",
  "settings": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchants/me/delete

Create a resource or run this action.

Bearer token

Request

ParameterInReq.Description
currentPasswordbodyYText field (min 1).
confirmationbodyYRequest field. See Zod schema in the route module for constraints.

Example body

{
  "currentPassword": "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
  "confirmation": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

GET /api/merchants/me/event-invites

List or read resources for this path.

Bearer token

Request

No body or query parameters. Path values above, if any, are enough.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

GET /api/merchants/me/event-invites/:inviteId

Fetch one resource by id or token.

Bearer token

Request

ParameterInReq.Description
inviteIdpathYPath parameter identifying the resource.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

PATCH /api/merchants/me/event-invites/:inviteId

Update selected fields on this resource.

Bearer token

Request

ParameterInReq.Description
inviteIdpathYPath parameter identifying the resource.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

GET /api/merchants/me/events

List or read resources for this path.

Bearer token

Request

No body or query parameters. Path values above, if any, are enough.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

GET /api/merchants/me/events/:eventId/crew

List or read resources for this path.

Bearer token

Request

ParameterInReq.Description
eventIdpathYMongo ObjectId of the event.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

PUT /api/merchants/me/events/:eventId/crew

Replace or upsert this resource.

Bearer token

Request

ParameterInReq.Description
eventIdpathYMongo ObjectId of the event.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

GET /api/merchants/me/events/:eventId/crew/:crewMemberId/stats

List or read resources for this path.

Bearer token

Request

ParameterInReq.Description
eventIdpathYMongo ObjectId of the event.
crewMemberIdpathYPath parameter identifying the resource.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchants/me/events/:eventId/crew/shift-checkout

Create a resource or run this action.

Bearer token

Request

ParameterInReq.Description
eventIdpathYMongo ObjectId of the event.
statusbodyYLifecycle status for the resource.

Example body

{
  "status": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchants/me/events/:eventId/crew/shift-verify

Create a resource or run this action.

Bearer token

Request

ParameterInReq.Description
eventIdpathYMongo ObjectId of the event.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchants/me/pause

Create a resource or run this action.

Bearer token

Request

No body or query parameters. Path values above, if any, are enough.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

GET /api/merchants/me/payout-requests

List or read resources for this path.

Bearer token

Request

ParameterInReq.Description
amountMinorbodyYAmount in the smallest currency unit (NAD cents).
destinationbodyYEnumerated string.
modebodyYOne of: "now", "schedule".
scheduledForbodyNText field (min 8, max 40).
marisMsisdnbodyNText field (min 8, max 20).
idempotencyKeybodyNText field (min 8, max 80).

Example body

{
  "amountMinor": 0,
  "destination": "\u2026",
  "mode": "\u2026",
  "scheduledFor": "\u2026",
  "marisMsisdn": "\u2026",
  "idempotencyKey": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchants/me/payout-requests

Request a merchant payout.

Public

Request

ParameterInReq.Description
amountMinorbodyYAmount in the smallest currency unit (NAD cents).
destinationbodyYEnumerated string.
modebodyYOne of: "now", "schedule".
scheduledForbodyNText field (min 8, max 40).
marisMsisdnbodyNText field (min 8, max 20).
idempotencyKeybodyNText field (min 8, max 80).

Example body

{
  "amountMinor": 0,
  "destination": "\u2026",
  "mode": "\u2026",
  "scheduledFor": "\u2026",
  "marisMsisdn": "\u2026",
  "idempotencyKey": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchants/me/payout-requests/:id/cancel

Request a merchant payout.

Public

Request

ParameterInReq.Description
idpathYPath parameter identifying the resource.

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

GET /api/merchants/me/payout-requests/availability

List or read resources for this path.

Bearer token

Request

ParameterInReq.Description
amountMinorbodyYAmount in the smallest currency unit (NAD cents).
destinationbodyYEnumerated string.
modebodyYOne of: "now", "schedule".
scheduledForbodyNText field (min 8, max 40).
marisMsisdnbodyNText field (min 8, max 20).
idempotencyKeybodyNText field (min 8, max 80).

Example body

{
  "amountMinor": 0,
  "destination": "\u2026",
  "mode": "\u2026",
  "scheduledFor": "\u2026",
  "marisMsisdn": "\u2026",
  "idempotencyKey": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

PATCH /api/merchants/me/pos-floor-status

Update selected fields on this resource.

Bearer token

Request

ParameterInReq.Description
statusbodyYLifecycle status for the resource.

Example body

{
  "status": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

POST /api/merchants/me/resume

Create a resource or run this action.

Bearer token

Request

ParameterInReq.Description
currentPasswordbodyYText field (min 1).
confirmationbodyYRequest field. See Zod schema in the route module for constraints.

Example body

{
  "currentPassword": "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
  "confirmation": "\u2026"
}

Example response

{
  "status": "success",
  "success": true,
  "statusCode": "00000",
  "message": "OK",
  "shortMessage": "SUCCESS",
  "timestamp": "2026-10-10T21:00:00.000Z",
  "requestId": "a1b2c3d4e5f6g7h8",
  "data": {}
}

Response data

Success returns the standard envelope. data holds the payload for this method — confirm the shape in your client when integrating.

Lock this page again

Merchants · 30 methods · October 2026