EPIS API Document (1.0.0)

Download OpenAPI specification:Download

Environments

  • Development
    https://store-hub-api-develop.myepis.cloud
    (Testing and staging)

  • Production
    https://store-hub-api.myepis.cloud
    (Live traffic)

Authentication

Required Headers

Header Description
x-api-key Merchant API key
x-request-id Unique request identifier
x-api-signature Generated HMAC-SHA256 signature
x-timestamp Current UTC timestamp

๐Ÿ”‘ API Key Usage

  • Include x-api-key in all requests
  • Obtain from Merchant Dashboard
  • Example: x-api-key: ak_1234567890abcdef

๐Ÿ”’ Signature Requirements

x-api-signature = HMAC-SHA256(secretKey, x-request-id + "." + x-timestamp)

โš ๏ธ Important Notes

  1. Never share your secretKey - it's only shown once during API key creation
  2. Requests must include a timestamp (UTC milliseconds) in the payload
  3. Requests older than 5 minutes will be rejected (prevent replay attacks)
  4. Test credentials available in Sandbox environment

Rate Limits

โšก API Throttling

  • 60 requests per 30 seconds per API key
  • Applies to all endpoints

Response Convention

All API responses:

  • Return HTTP 200 status code
  • Follow format:
    {
      "errorCode": "SUCCESS|ERROR_CODE",
      "data": { ... },  // or null
      "message": "Optional description"
    }
    

Interpret results using errorCode not HTTP status

Error Codes

Code Name Description
0 SUCCESS Operation completed successfully
4000 BAD_PAYLOAD Invalid request parameters/body
4100 UNAUTHORIZED Authentication credentials invalid
4101 INACTIVE API key/account inactive
5000 NOT_AVAILABLE Service temporarily unavailable

Always check the errorCode field rather than HTTP status codes

Transactions

Group of transaction-related endpoints

Create a new transaction

Request Body schema: application/json
timestamp
required
integer <int64> >= 0

Current UTC timestamp (milliseconds)
Used for:

  • Signature generation
  • Request expiration (5 minutes validity)

Example value:
1693324800000 = 2023-08-30T00:00:00Z

transactionId
required
string

Unique identifier for the store request.
โš ๏ธ Must be unique per store transaction (duplicates will be rejected)

currency
required
string
Default: "AUD"
Enum: "AUD" "EUR" "USD"

Transaction currency.
Supported values:

  • AUD (Australian Dollar)
  • EUR (Euro)
  • USD (United States Dollar) Defaults to AUD if not provided
required
Array of objects (TransactionItemModel) non-empty

Transaction items

  • At least 1 item required
  • Total calculated from sum of (item.amount ร— item.quantity)
required
object (StoreModel)

Merchant details

  • Name will be shown in payment link in billing info
required
object (PayerModel)

Customer information

  • Email will be shown in payment link in billing info
discount
number >= 0

Optional discount amount

returnUrl
string <uri>
  • After payment is successfully, page will redirect to this url
cancelUrl
string <uri>
  • When user cancel payment, page will redirect to this url

Responses

Request samples

Content type
application/json
{
  • "timestamp": 1693324800000,
  • "transactionId": "txn_12345",
  • "currency": "AUD",
  • "items": [
    ],
  • "store": {
    },
  • "payer": {
    },
  • "discount": 5.99,
}

Response samples

Content type
application/json
{
  • "errorCode": 0,
  • "data": {
    },
  • "message": "Transaction created successfully"
}

Get a transaction by ID

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "errorCode": 100,
  • "data": {
    }
}

Payment

Group of payment-related endpoints

Create a new payment

Request Body schema: application/json
timestamp
required
integer <int64> >= 0

Current UTC timestamp (milliseconds)
Used for:

  • Signature generation
  • Request expiration (5 minutes validity)

Example value:
1693324800000 = 2023-08-30T00:00:00Z

transactionId
required
string

Unique identifier for the store request.
โš ๏ธ Must be unique per store transaction (duplicates will be rejected)

method
required
string
Value: "CARD"
currency
required
string
Default: "AUD"
Enum: "AUD" "EUR" "USD"

Transaction currency.
Supported values:

  • AUD (Australian Dollar)
  • EUR (Euro)
  • USD (United States Dollar) Defaults to AUD if not provided
required
Array of objects (TransactionItemModel) non-empty

Transaction items

  • At least 1 item required
  • Total calculated from sum of (item.amount ร— item.quantity)
required
object (StoreModel)

Merchant details

  • Name will be shown in payment link in billing info
required
object (PayerModel)

Customer information

  • Email will be shown in payment link in billing info
discount
number >= 0

Optional discount amount

returnUrl
string <uri>
  • After payment is successfully, page will redirect to this url
cancelUrl
string <uri>
  • When user cancel payment, page will redirect to this url

Responses

Request samples

Content type
application/json
{
  • "timestamp": 1693324800000,
  • "transactionId": "txn_12345",
  • "method": "CARD",
  • "currency": "AUD",
  • "items": [
    ],
  • "store": {
    },
  • "payer": {
    },
  • "discount": 5.99,
}

Response samples

Content type
application/json
{
  • "errorCode": 0,
  • "data": {
    },
  • "message": "Transaction created successfully"
}

Get Payment Methods

Responses

Response samples

Content type
application/json
{
  • "errorCode": 0,
  • "data": [
    ]
}

Store

Group of store-related endpoints

Get store detail

Responses

Response samples

Content type
application/json
{
  • "errorCode": 100,
  • "data": {
    }
}