Stable Updated regularly

Postback Notifications

Whenever a user completes an offer, AdJoyOffers will call the Postback URL configured in your app, attaching all the information required to credit your users.

1. How Postback Works

Our server will make an HTTP GET request to your server including the parameters below.

2. Postback Parameters

Parameter Description
subIdUnique identifier of the user who completed the action.
transIdUnique transaction ID generated by EliteWall.
rewardAmount of virtual currency to be credited.
payoutPayout value in USD.
signatureMD5 hash to verify the request origin.
status“1” = credit; “2” = revoke/chargeback.
userIpIP address of the user who completed the offer.
campaign_idID of the offer completed.
offer_typeOffer type (short | surf | offer).
countryCountry (ISO2 code) where the lead originated.
uuidUnique click ID of the user’s action.

Note: reward and payout are absolute values. Use the status parameter to decide if you should credit or revoke.

3. Custom Parameters

You can receive custom parameter names in your postbacks by specifying them in your URL:

http://postback.example.com/?custom={subId2}&nameOfCampaign={campaign_name}

Wrap parameter names in { } using any of the parameters from the table above.

4. Security

Verify the signature received to ensure the call originates from AdJoyOffers servers. The signature must match the MD5 of:

  • SUBID
  • TRANSACTIONID
  • REWARD + SECRET

You can find your secret key in your app dashboard.

<?php
$secret = ""; // check your app info

$subId     = $_GET['subId'] ?? null;
$transId   = $_GET['transId'] ?? null;
$reward    = $_GET['reward'] ?? null;
$signature = $_GET['signature'] ?? null;

// validate signature
if(md5($subId.$transId.$reward.$secret) != $signature) {
    echo "ERROR: Signature doesn't match";
    return;
}
?>

5. Responding to Postback

Our server expects one of the following responses:

  • OK → new transaction accepted.
  • DUP → duplicate transaction, no further attempts will be made.

Any other response may cause retries (up to 5 attempts over several hours).

6. Full Example

<?php
$secret        = ""; // check your app info
$userId        = $_GET['subId'] ?? null;
$transactionId = $_GET['transId'] ?? null;
$points        = $_GET['reward'] ?? null;
$signature     = $_GET['signature'] ?? null;
$action        = $_GET['status'] ?? null;
$ipuser        = $_GET['userIp'] ?? "0.0.0.0";

// validate signature
if(md5($userId.$transactionId.$points.$secret) != $signature) {
    echo "ERROR: Signature doesn't match";
    return;
}

if($action == 2) { // 1 = CREDITED, 2 = REVOKED
    $points = -abs($points);
}

if(isNewTransaction($transactionId)) {
    processTransaction($userId, $points, $transactionId);
    echo "OK";
} else {
    echo "DUP";
}
?>

7. Whitelisted IPs

Postbacks may come from any of the following IPs. Please whitelist them if required:

162.0.217.91
← Previous: HTML Integration Back to Introduction →
© 2025 EliteWall Last updated: Sep 22, 2025