ZealDeveloper Hub Beta
EN ES
Zeal Acquirer API · v1.0 · REST

Zeal Acquirer API

La referencia de endpoints se mantiene en inglés por coherencia con la especificación OpenAPI. El resto del sitio está disponible en español.

REST endpoints for partners to manage merchants (branches) and payment terminals on Zeal. Every request is authenticated with an API key on the API-KEY header.

Authentication

Send your acquirer API key in the API-KEY header on every request. Obtain your key from the Zeal dashboard. Keys must be kept server-side; never expose them in client code.

curl "https://zms.getzealapi.com/ext/api/v1/merchants" \
  -H "API-KEY: $ZEAL_API_KEY"

Errors

The API uses conventional HTTP status codes. Validation problems return 422 with an errors array.

  • 200 - Request succeeded.
  • 201 - Resource created successfully.
  • 400 - Bad request - invalid input or business rule.
  • 401 - Unauthorized - missing or invalid API-KEY.
  • 404 - Resource not found or not accessible to acquirer.
  • 422 - Validation errors - see errors array.
URL base https://zms.getzealapi.com
Merchants

List merchants (branches)

GET /ext/api/v1/merchants

Returns a paginated list of branches (merchants) accessible to the authenticated acquirer.

Query parameters

sort enum · default desc
Sort order for created_at. Either asc or desc.
per_page integer · default 10
Items per page.
page integer
Page number.

Responses

200 Paginated list of branches
400 Bad request / server error
401 Unauthorized - missing or invalid API-KEY
Merchants

Create a merchant (branch)

POST /ext/api/v1/merchants

Create a new merchant branch. When acquirer type is DISTRIBUTOR, payment_provider is required. Either existing_master_merchant (existing business UUID) or master_merchant_id (new business) is required. Optionally include terminals (array with at least one item).

Body

mid string REQUIRED
Branch MID. UUID or alphanumeric. Must be unique.
branch_name string
Branch display name.
area string
Branch area.
city string
Branch city.
payment_provider uuid
Payment provider acquirer UUID. Required when auth acquirer type is DISTRIBUTOR.
distributor uuid
Distributor acquirer UUID (when called by payment provider).
existing_master_merchant uuid
Existing business UUID. Required when master_merchant_id is not provided.
master_merchant_id string
Master merchant ID; alphanumeric only. Required when existing_master_merchant is not provided.
master_merchant_name string
Display name (when adding new master merchant).
email email
Contact email (new master merchant).
country_code string
Country code (new master merchant).
phone string
Phone with optional + and digits, e.g. +1 234 567 8900.
mcc string
Merchant category code (new master merchant).
country string
Country (new master merchant).
terminals[] array
Optional list of terminals; if present must contain at least one item. Each item requires terminal_id.
terminals[].terminal_id string
terminals[].terminal_model string

Responses

201 Merchant branch created successfully
400 Bad request / server error
401 Unauthorized
422 Validation errors
Merchants

Get merchant by MID

GET /ext/api/v1/merchants/{mid}

Returns a single branch (merchant) by its Merchant ID (MID) if accessible to the authenticated acquirer.

Path parameters

mid string REQUIRED
Merchant ID (branch MID).

Responses

200 Branch details
400 Bad request / server error
401 Unauthorized
404 Branch not found
Merchants

Archive a merchant

PATCH /ext/api/v1/merchants/{mid}/archive

Archives the merchant identified by MID. The branch must belong to the authenticated acquirer. Once archived, the branch and its payment terminals are no longer active. Terminals linked to the branch are also archived.

Path parameters

mid string REQUIRED
Merchant ID (branch MID).

Responses

200 Merchant archived successfully
400 Branch already archived or error archiving
401 Unauthorized
404 MID does not exist or does not belong to acquirer
Terminals

List terminals for a merchant

GET /ext/api/v1/terminals/{mid}

Returns a paginated list of payment terminals for the branch identified by MID. The MID must belong to a merchant accessible by the authenticated acquirer.

Path parameters

mid string REQUIRED
Merchant ID (branch MID).

Query parameters

sort enum · default desc
Sort order for created_at. Either asc or desc.
per_page integer · default 10
Items per page.
page integer
Page number.

Responses

200 Paginated list of terminals
401 Unauthorized
404 Merchant not found
Terminals

Create terminals for a merchant

POST /ext/api/v1/terminals/{mid}

Creates one or more payment terminals for the branch identified by MID. The MID must belong to a merchant accessible by the authenticated acquirer. terminal_id must be unique across payment_terminals.

Path parameters

mid string REQUIRED
Merchant ID (branch MID).

Body

terminals[] array REQUIRED
Array of terminals; min 1 item.
terminals[].terminal_id string REQUIRED
Unique alphanumeric terminal ID.
terminals[].serial_no string
Alphanumeric; unique if provided.
terminals[].terminal_model string
Terminal model.
terminals[].payment_app string
Payment app name for linking.
terminals[].acquirer_name string
Master acquirer name for linking.

Responses

201 Terminal(s) created successfully
400 Merchant archived or server error
401 Unauthorized
404 Merchant not found
422 Validation errors (e.g. duplicate terminal_id)
Terminals

Update a terminal

PATCH /ext/api/v1/terminals/{tid}

Updates the payment terminal identified by TID. The terminal must belong to a branch (MID) accessible by the authenticated acquirer. All request body fields are optional; only provided fields are updated.

Path parameters

tid string REQUIRED
Terminal ID (UUID).

Body

serial_no string
Alphanumeric; unique excluding current terminal.
terminal_model string
Terminal model.
payment_app string
Must exist in payment_apps for this acquirer.
acquirer_name string
Must exist in master_acquirers for this acquirer.

Responses

200 Terminal updated successfully
400 TID not under requesting PSP or error updating
401 Unauthorized
404 Terminal not found
422 Validation error
Terminals

Delete a terminal

DELETE /ext/api/v1/terminals/{tid}

Deletes the payment terminal identified by TID. The terminal must belong to a branch accessible by the authenticated acquirer (distributor or payment provider).

Path parameters

tid string REQUIRED
Terminal ID (UUID).

Responses

200 Terminal deleted successfully
400 Error deleting terminal
401 Unauthorized
404 Terminal not found or not accessible
Terminals

Archive a terminal

PATCH /ext/api/v1/terminals/{tid}/archive

Archives the payment terminal identified by TID. A reason for archiving is required. Once archived, the terminal is no longer active for processing.

Path parameters

tid string REQUIRED
Terminal ID (UUID).

Body

reason string REQUIRED
Reason for archiving (max 255 chars).

Responses

200 Terminal archived successfully
400 Already archived, TID not under requesting PSP, or error archiving
401 Unauthorized
404 Terminal not found
422 Validation error
Terminals

Restore an archived terminal

PATCH /ext/api/v1/terminals/{tid}/restore

Restores a previously archived payment terminal. The terminal must be in archived status. Once restored, the terminal becomes active again for processing.

Path parameters

tid string REQUIRED
Terminal ID (UUID).

Responses

200 Terminal restored successfully
400 Not archived or error restoring
401 Unauthorized
404 Terminal not found
Terminals

Reassign terminal to another MID

POST /ext/api/v1/terminals/{tid}/reassign

Moves a payment terminal (TID) from its current merchant (MID) to a different MID. Both the current terminal's MID and the target MID must belong to the requesting PSP. The terminal must not already be under the target MID.

Path parameters

tid string REQUIRED
Terminal ID (UUID).

Body

mid string REQUIRED
Target Merchant ID (MID) to reassign to.

Responses

200 Terminal reassigned successfully
400 Already under target MID, TID/MID not under requesting PSP
401 Unauthorized
404 Terminal or target MID not found
422 Validation error - mid is required
Lookup

Lookup reference data

GET /ext/api/v1/lookup/{method}

Returns a list of key/text pairs for the given lookup method. Used to populate dropdowns when creating merchants or terminals.

Path parameters

method enum REQUIRED
One of: paymentProviders, distributors, acquirers, paymentApp, masterMerchants.

Query parameters

search string
Optional search filter for name.

Responses

200 List of lookup items
400 Internal error
401 Unauthorized
404 Lookup method not found
Host

Member check

POST /api/v1/host/member-check

Check if the member is identified and has available rewards or not. Authenticated via the `API-KEY` header.

Body

amount number REQUIRED
Transaction amount. Must be 0 or greater.
card_id string REQUIRED
Card identifier.
card_pseudo_token string REQUIRED
Card pseudo token.
currency string REQUIRED
Currency ISO code, e.g. USD.
terminal_id string REQUIRED
Terminal ID.
acquirer_id string REQUIRED
Acquirer ID.

Responses

200 Request processed successfully
400 Invalid request data
401 Unauthorized - missing or invalid API-KEY
422 Validation errors - see `errors` array

Request

GET /ext/api/v1/merchants
curl -X GET "https://zms.getzealapi.com/ext/api/v1/merchants?per_page=10&page=1" \
  -H "API-KEY: $ZEAL_API_KEY"

Response

200
{
  "data": [
    {
      "mid": "BRANCH001",
      "merchant_name": "Downtown Branch",
      "area": "Central",
      "city": "Cairo",
      "master_merchant_name": "Acme Coffee",
      "master_merchant_id": "MERCHANT001",
      "status": "active"
    }
  ],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "per_page": 10, "total": 47 }
}