Payvo Payment Gateway

Core endpoints and ready HTML snippets.

Quick setup: Direct payment-check requests need your store_id and one store api_key. Save your callback URL in the store settings once; Payvo calls it automatically after a match. The callback uses that same API key, so there is no second callback key.

Payment Check

Verify a transfer.

POST
HTTP MethodPOST
API Urlhttps://payvo.site/api/deposits/check
ResponseJSON

Request Parameters

ParameterDescriptionRequired
store_idYour Payvo store ID.Required
api_keyServer-side only. Never expose in browser code.Required
phoneCustomer wallet number. Alias: sender_number.Wallet only
amountPaid amount in EGP.Required
user_nameCustomer username or email.Required
payment_methodUse instapay for InstaPay payments.InstaPay only
referenceInstaPay reference number.InstaPay only
invoice_idYour invoice or order number.Optional
Wallet Request Example
curl -X POST "https://payvo.site/api/deposits/check" \
  -H "Content-Type: application/json" \
  -d '{
    "store_id": "YOUR_STORE_ID",
    "api_key": "STORE_API_KEY_SERVER_ONLY",
    "phone": "01XXXXXXXXX",
    "amount": 100,
    "user_name": "CUSTOMER_ACCOUNT_USERNAME",
    "invoice_id": "INV-1001",
    "reference": "checkout"
  }'
Success Example
{
  "status": "success",
  "data": {
    "message": "Successful Transaction, Added 100.00 Balance",
    "status": "success",
    "code": 200,
    "trans_id": "TXN_FROM_PROVIDER",
    "transaction_number": "PROVIDER_REFERENCE",
    "sender": "01XXXXXXXXX",
    "amount": "100.00",
    "currency": "EGP",
    "time": "2026-09-02 11:16:13"
  }
}
Not Found Example
{
  "status": "error",
  "error": "TRANSACTION_NOT_FOUND",
  "message": "No matching transaction found"
}

Store Callback

Payvo sends this to your configured callback URL after a successful match.

The callback is sent as application/x-www-form-urlencoded. The key is the same API key assigned to this store. Your endpoint should return HTTP 2xx and {"status":"success"} (or plain text success) after adding the payment.

Callback fieldDescription
platformAlways payvo.
keyThe same API key assigned to this store; validate it server-side.
actionaddPayment
store_idThe Payvo store ID.
usernameThe customer's account username, copied from the request's user_name.
amountCredit amount after conversion
paid_amountPaid amount in EGP
fromWallet number or InstaPay reference
trans_idProvider transaction ID
transaction_numberProvider operation/reference number
invoice_idYour invoice ID
referenceYour reference
affiliate_commission0
What you provide and what Payvo sends
Your direct payment-check request to Payvo:
  store_id + api_key + payment details (including user_name)

Payvo's automatic callback to your configured URL:
  store_id + key (the same api_key) + customer and store account details
Confirm Success
{
  "status": "success"
}
Confirm Fail
{
  "status": "fail",
  "error": "your reason"
}

Payment Info

Wallets, rate, currencies, and InstaPay info.

GET
HTTP MethodGET
API Urlhttps://payvo.site/api/deposits/payment-info
ResponseJSON

Request Parameters

ParameterDescription
store_idYour public Payvo store ID. Required.
amountOptional; used to calculate extotal. No API key is needed for this public, read-only endpoint.
Success Example
{
  "status": "success",
  "data": {
    "number": "01XXXXXXXXX, 01YYYYYYYYY",
    "rate": "50.42",
    "extotal": 252.10,
    "storecurrency": {
      "code": "USD",
      "name_en": "US Dollar",
      "name_ar": "US Dollar",
      "symbol": "$",
      "symbol_ar": "$"
    },
    "yourcurrency": {
      "code": "EGP",
      "name_en": "Egyptian Pound",
      "name_ar": "Egyptian Pound",
      "symbol": "EGP",
      "symbol_ar": "EGP"
    },
    "instapay": {
      "enabled": true,
      "payment_link": "https://ipn.eg/..."
    }
  }
}

Payment HTML Code

Paste into your payment page. The snippet needs your store_id only; keep the API key on your server.

Wallet Code

Wallet HTML
<div id="message"></div>
<p style=""><img src="https://payvo.site/assest/logo.jpg" style="display: inline-block; width: 170px; max-width: 100%;" class="img-responsive"></p>
<p style=""><font color="#008000">Today deposit rate</font><br></p>
<p style=""><b><font color="#008000">( 1 <span id="storecurrencyname_en"></span> = <span id="rate"></span> <span id="yourcurrencyname_en"></span> )</font></b></p>
<br>
<p style="">Our wallet numbers:<br></p>
<span id="storenumbers"></span>

<hr>
<p style="">Example: if you want to deposit 5 USD<br>send <span id="extotal"></span> EGP<br><br></p>
<p style="">1. Send the amount to one of the wallet numbers above</p>
<p style="">2. Enter the wallet number you sent from</p>
<p style="">3. Enter the amount you sent in EGP</p>
<p style=""><font color="#008000">4. Click Pay</font><br><br></p>
<p style=""><font color="#ff9c00">If the payment fails, wait 5 minutes then try again</font><br></p>
<div>If you have any issue, <a href="/tickets" target="_blank"><font color="#ff9c00">open a support ticket</font></a><br><br></div>

<form onsubmit="event.preventDefault(); PaymentCheck();">
    <div class="form-group" style="display: block;text-align: right">
        <label><span>Your wallet number</span></label>
        <input class="form-control" value="" placeholder="01xxxxxxxxx" type="text" id="walletphone" oninput="this.value = this.value.replace(/[^0-9]/g, '')" inputmode="numeric" autocomplete="off" required="">
    </div>

    <div class="form-group" style="display: block;text-align: right">
        <label><span>Amount sent in EGP</span></label>
        <input class="form-control" value="" type="number" id="walletamount" autocomplete="off" step="0.01" required="">
    </div>
<br>

<button type="submit" id="payButton" class="btn btn-block btn-big-primary">Pay</button>
</form>

<script data-store-id="YOUR_STORE_ID" data-payment-type="wallet" src="https://payvo.site/js/payvo_wallet_app.js"></script>

InstaPay Code

InstaPay HTML
<div id="message"></div>
<center>
    <p style=""><img src="https://payvo.site/assest/logo.jpg" style="display: inline-block; width: 170px; max-width: 100%;" class="img-responsive"></p>
    <p style=""><b>Pay with InstaPay</b></p>
    <p style="">Payment number or link:</p>
    <p id="payvo-instapay-target">Loading...</p>
    <p style=""><font color="#ff9c00">After sending, enter the reference number and amount then click Pay</font></p>
</center>

<form onsubmit="event.preventDefault(); PaymentCheck();">
    <div class="form-group" style="display: block;text-align: right">
        <label><span>Reference number</span></label>
        <input class="form-control" value="" type="text" id="instapayreference" autocomplete="off" required="">
    </div>

    <div class="form-group" style="display: block;text-align: right">
        <label><span>Amount sent in EGP</span></label>
        <input class="form-control" value="" type="number" id="instapayamount" autocomplete="off" step="0.01" required="">
    </div>
<br>

<button type="submit" id="payButton" class="btn btn-block btn-big-primary">Pay</button>
</form>

<script data-store-id="YOUR_STORE_ID" data-payment-type="instapay" src="https://payvo.site/js/payvo_wallet_app.js"></script>

Error Messages

Common responses.

ErrorMeaning
MISSING_FIELDA required parameter was not submitted.
INVALID_PHONEInvalid wallet number.
INVALID_AMOUNTInvalid amount.
STORE_DISABLEDStore is not active.
SUBSCRIPTION_EXPIREDStore subscription is expired or inactive.
STORE_MISMATCHAPI key does not belong to store_id.
DUPLICATE_TRANSACTIONinvoice_id used with different details.
TRANSACTION_NOT_FOUNDNo matching transaction was found yet.
Fail Example
{
  "status": "error",
  "error": "MISSING_FIELD",
  "message": "Missing required field: phone",
  "field": "phone"
}
Not Found Example
{
  "status": "error",
  "error": "TRANSACTION_NOT_FOUND",
  "message": "No matching transaction found"
}