API Reference

Status

this API allows you to check the current status of a payment initiated through the EdfaPay platform.


Endpoint

POST https://api.edfapay.com/payment/post

Content-Type: application/x-www-form-urlencoded


Example cURL Request

curl --location 'https://api.edfapay.com/payment/post' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'action=GET_TRANS_STATUS' \
--data-urlencode 'client_key=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
--data-urlencode 'trans_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
--data-urlencode 'hash=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

Request Parameters

FieldTypeRequiredDescription
actionstringYesAPI action type. For status checking, this must be GET_TRANS_STATUS.
client_keystringYesYour EdfaPay merchant identifier (UUID format).
trans_idstringYesUnique transaction ID from EdfaPay.
hashstringYesHashed string to authenticate the request.
🚧

Important Note

You can get the trans_id from Dashboard in the transaction page with name Payment ID. Webhook(callback) response with value of parameter trans_id and also in the Successful Response


Hash Generation (Request Authentication)

To ensure the request is secure, you must generate a hash using the following logic:

Formula

hash = MD5(UPPERCASE(Reverse(email) + password + trans_id + Reverse(cardBIN + cardLast4)))

JavaScript Example (Postman)

var payment_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx";
var merchant_pass = "xxxxxxxx-xxxx-xxxx-xxxx-x";
 
//formula:
var to_md5 = payment_id + merchant_pass;
// Use the CryptoJS
 
var hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString());
var result = CryptoJS.enc.Hex.stringify(hash);
// Set the new environment variable
postman.setEnvironmentVariable('operation_hash', result);
console.log(hash);
📘

Notes

  • Payment_id → Unique payment identifier returned by the Webhook.
  • Password → Merchant’s backend password (secure, not public).
  • Final output hash must be a lowercase hexadecimal string (e.g., a1b2c3...).

Successful Response (Example)

{
    "date": "01-01-2025 00:00",
    "status": "settled",
    "brand": "MADA",
    "order": {
        "number": "0000",
        "amount": "1.00",
        "currency": "SAR",
        "description": "Payment Order # 0000"
    },
    "customer": {
        "name": "Customer",
        "email": "[email protected]"
    },
    "rrn": "xxxxxxxxxxxx",
    "payment_id": "xxxxxxxxxxxxxxxxxxx"
}

Failed Response (Example)

{
    "date": "01-01-2025 00:00",
    "status": "TXN_FAILURE",
    "brand": "MADA",
    "reason": "Not sufficient funds",
    "order": {
        "number": "xxxxx",
        "amount": "10.00",
        "currency": "SAR",
        "description": "Payment Order # 32157"
    },
    "customer": {
        "name": "Customer",
        "email": "[email protected]"
    },
    "rrn": "xxxxxxxxxxxx",
    "payment_id": "xxxxxxxxxxxxxxxxxxx"
}

Notes

  • The transactions array may include multiple steps like REDIRECT, SALE, or REFUND, depending on the flow.
  • If no matching transaction ID is found, you will receive Request data is invalid error.

Language
Click Try It! to start a request and see the response here!