Developer Tools

Instant Payment Notification (IPN)

The Instant Payment Notification (IPN) is a messaging service which automatically sends you alerts for specific events regarding your transactions – authorization hold, subscription charge, refund and many more, detailed in the table below, under the tag “IPN_TYPE_ID=1” – along with full purchase details related to your products’ order database via a dedicated URL.

Important: Please note the following facts:

  • An IPN will be generated for every product purchased. If a customer purchases multiple, distinct products within the same order, you will receive a separate alert (with purchasing details) for each of these products via the dedicated URL.
  • The PayPro Global Platform performs IPN transmissions using the POST method.
  • If the server you are using to host the IPN script is set to block IPs, please make sure that you add the PayPro Global IP address to the whitelisted IPs. This is essential to ensure a smooth performance of the IPN service. Please contact our Support Team for any questions or requests for assistance in setting up the IPN service.

In order to generate a new IPN simulator you will be asked to fill in the following information:

  • IPN handler URL – add your IPN server’s URL to ensure the communication between PayPro Global’s notification system and your database
  • Transaction type – select the transaction for which you wish to receive our instant notifications, from the dropdown list available here

The full list of IPN variables supported by PayPro Global’s IPN service includes the following:

Key/Value
Description
IPN_TYPE_ID=1
  1. OrderCharged
  2. OrderRefunded
  3. OrderChargedBack
  4. OrderDeclined
  5. OrderPartiallyRefunded
  6. SubscriptionChargeSucceed
  7. SubscriptionChargeFailed
  8. SubscriptionSuspended
  9. SubscriptionRenewed
  10. SubscriptionTerminated
  11. SubscriptionFinished
  12. LicenseRequested
  13. TrialCharge
  14. Order chargeback is won
  15. Order customer information changed
  16. Instant lead notification
  17. Order on waiting
IPN_TYPE_NAME=OrderCharged
Text representation of IPN_TYPE_ID.
ORDER_ID=5300000
Integer order ID.
ORDER_STATUS_ID=5
  1. Waiting
  2. Canceled
  3. Refunded
  4. Chargeback
  5. Processed
ORDER_STATUS=Processed
Text representation of ORDER_STATUS_ID.
TEST_MODE=0
1 or 0.
VENDOR_BALANCE_CURRENCY_CODE=USD
Vendor balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_TOTAL_AMOUNT=99.97
Order item price converted into vendor balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_VENDOR_AMOUNT=91.50
Amount transferred to vendor balance. Can be positive or negative.
ORDER_ITEM_BALANCE_CURRENCY_AFFILIATE_AMOUNT=0.00
Affiliate share of order item total converted into vendor balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_PARTNER_AMOUNT=0.00
Partners share of order item total converted into vendor balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_PAYPRO_EXPENSES_AMOUNT=8.47
PayPro expenses (commission) for order item converted to vendor balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_REFUNDED=0.00
Refunded amount of order item converted into vendor balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_VENDOR_REFUNDED=
Vendor share of refunded amount for order item converted into vendor balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_AFFILIATE_REFUNDED=
Affiliate share of refunded amount for order item converted into affiliate balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_PARTNERS_REFUNDED=
Partner share of refunded amount for order item converted into partner balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_TOTAL_BALANCE_CURRENCY_AMOUNT=150.97
Order total (all order items) with tax fees converted into vendor balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_TAXES_BALANCE_CURRENCY_AMOUNT=0.00
Order tax fees of all order items converted into vendor balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_BALANCE_CURRENCY_REFUNDED=0.00
Refunded order amount converted into vendor balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_BALANCE_CURRENCY_VENDOR_REFUNDED=0.00
Vendor share of refunded order amount converted into vendor balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_BALANCE_CURRENCY_AFFILIATE_REFUNDED=0.00
Affiliate share of refunded order amount converted into affiliate balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_BALANCE_CURRENCY_PARTNERS_REFUNDED=0.00
Partner share of refunded order amount converted into partner balance currency. Balance currency can be different from the currency customer has been charged in.
ORDER_ITEM_LICENSES=xxx, yyy
Product license keys. If there are more than one license keys issued for an order item (product), they are separated with “,\t” (comma and tab).
PRODUCT_ID=409
Integer product ID.
PRODUCT_QUANTITY=1
Quantity of product items.
PRODUCT_COMBINATION_ID=
If a product has “multiple options” pricing scheme, it contains unique product combination groups ID.
PAYMENT_METHOD_ID=2
  • 1. Credit Card
  • 2. Visa
  • 3. MasterCard
  • 4. American Express
  • 5. Diners
  • 6. Discover
  • 7. JCB
  • 8. Solo
  • 9. Maestro
  • 10. Phone Order
  • 11. Fax Order
  • 13. Check / Cash
  • 14. PayPal
  • 15. Wire Transfer
  • 16. iDEAL
  • 17. Giropay
  • 18. Raifeissen
  • 19. Volksbanken Gruppe
  • 21. Voralberger HYPO
  • 22. Bankhaus Spängler
  • 23. Hypo Tirol Bank
  • 24. Erste Bank und Sparkassen
  • 25. P.S.K.
  • 27. Sparda-Bank
  • 30. Purchase Order
  • 31. WebMoney
  • 32. Yandex.Money
  • 33. Boleto Bancario
  • 34. Alipay
  • 36. QIWI
  • 37. Real-time Bank Transfer
  • 44. CarteBleue
  • 45. Sofort
  • 46. MrCash
  • 47. EPS
  • 48. UseMyFunds
  • 49. Przelewy24
  • 50. OneCard
  • 51. CashU
  • 52. POLi
  • 53. Multibanco-SIBS
  • 54. Moneta Wallet
  • 55. Paysera
  • 56. Abaqoos
  • 57. ePlatby for eKonto
  • 58. Trustly
  • 59. PaysBuy
  • 60. eNETS Debit
  • 61. MercadoPago
  • 62. ToditoCash
  • 63. PayWithMyBank
  • 64. Tenpay
  • 65. TrustPay
  • 66. MangirKart
  • 67. Finnish Banks
  • 68. MTCPay
  • 69. DragonPay
  • 70. MyBank
  • 71. AmBank
  • 72. CIMB Clicks
  • 73. FPX
  • 74. Hong Leong Bank Transfer
  • 75. Maybank2U
  • 76. Mandiri
  • 77. XLTunai
  • 78. Cash Options Thailand
  • 79. Online Banking Thailand
  • 80. PaysBuy Wallet
  • 81. OP-Pohjola
  • 82. Nordea
  • 83. Danske
  • 84. Globe GCash
PAYMENT_METHOD_NAME=Visa
Text representation of PAYMENT_METHOD_ID=2.
ORDER_CURRENCY_CODE=USD
Order currency, in which customer has been charged.
ORDER_PLACED_TIME_CUSTOMER_TIMEZONE=02/02/2015 14:02:54
Order placement time using customer time zone (is taken from customer’s browser / operating system).
CUSTOMER_TIMEZONE=UTC+0200
Customer time zone from browser / operating system.
ORDER_PLACED_TIME_UTC=02/02/201512:02:55
Order placement time in UTC.
ORDER_REFERRER_URL=
Webpage from where customer came to the checkout page.
ORDER_ITEM_ID=6362512
Integer order item (product in the order) ID.
ORDER_ITEM_NAME=Product X
Name of the product in the order.
ORDER_ITEM_TYPE_ID=1
  1. Product
  2. BackupMedia
  3. DownloadWarranty
  4. PhysicalShipment
  5. BundledProduct
  6. RecurringPrice
  7. ProductSelection
  8. ManualProcessingFee
ORDER_ITEM_TYPE_NAME=Product
Text representation of ORDER_ITEM_TYPE_ID.
ORDER_ITEM_TOTAL_AMOUNT=99.00
Original order item price in order currency.
ORDER_ITEM_VENDOR_AMOUNT=94.00
Vendor share of order item for current transaction in order currency. Please note that funds transferred to vendor balance are specified by ORDER_ITEM_BALANCE_CURRENCY_VENDOR_AMOUNT and VENDOR_BALANCE_CURRENCY_CODE.
ORDER_ITEM_AFFILIATE_AMOUNT=0.00
Affiliate share of order item in order currency.
ORDER_ITEM_PARTNERS_AMOUNT=0.00
Partners share of order item in order currency.
ORDER_ITEM_PAYPRO_EXPENSES_AMOUNT=5.00
PayPro expenses (commission) for current order item. For example, order item physical shipment.
ORDER_ITEM_REFUNDED=0.00
Refunded amount of order item.
ORDER_ITEM_VENDOR_REFUNDED=0.00
Vendor share of refunded amount for order item.
ORDER_ITEM_AFFILIATE_REFUNDED=0.00
Affiliate share of refunded amount for order item.
ORDER_ITEM_PARTNERS_REFUNDED=0.00
Partner share of refunded amount for order item.
ORDER_ITEM_COUPON_DISCOUNT=
Discount caused by coupon in order billing currency.
ORDER_ITEM_DYNAMIC_DISCOUNT=
Discount caused by dynamic settings in order billing currency.
ORDER_ITEM_LEAD_DISCOUNT=
Discount caused by lead management offer in order billing currency.
ORDER_ITEM_PROMO_DISCOUNT=
Discount caused by cross-sell / up-sell promotions in order billing currency.
ORDER_ITEM_VOLUME_DISCOUNT=
Discount caused by volume range in order billing currency.
ORDER_ITEM_TOTAL_DISCOUNT=
Total discount in order billing currency.
ORDER_TOTAL_AMOUNT=150.97
Order total (all order items) with tax fees.
ORDER_TOTAL_AMOUNT_SHOWN=150.97
Order total (all order items) with tax fees shown on checkout page.
ORDER_TAXES_AMOUNT=0.00
Order tax fees of all items in order.
ORDER_REFUNDED=0.00
Refunded order amount.
ORDER_VENDOR_REFUNDED=0.00
Vendor share of refunded order amount.
ORDER_AFFILIATE_REFUNDED=0.00
Affiliate share of refunded order amount.
ORDER_PARTNERS_REFUNDED=0.00
Partner share of refunded order amount.
ORDER_REFUNDED_IN_USD=0.00
Refunded order amount converted into USD.
ORDER_VENDOR_REFUNDED_IN_USD=0.00
Vendor share of refunded order amount converted into USD.
ORDER_AFFILIATE_REFUNDED_IN_USD=0.00
Affiliate share of refunded order amount converted into USD.
ORDER_PARTNERS_REFUNDED_IN_USD=0.00
Partner share of refunded order amount converted into USD.
ORDER_CUSTOM_FIELDS=x-custom-field1=value1,x-custom-field2=value2
Custom fields specified for order.
CUSTOMER_ID=4155
Integer customer ID.
CUSTOMER_FIRST_NAME=John
Customer first name.
CUSTOMER_FIRST_NAME_ASCII=John
Customer first name converted into ASCII in case if you collect data in ASCII only.
CUSTOMER_LAST_NAME=Doe
Customer last name.
CUSTOMER_LAST_NAME_ASCII=Doe
Customer last name converted into ASCII in case if you collect data in ASCII only.
CUSTOMER_NAME=John Doe
Customer first and last name.
CUSTOMER_NAME_ASCII=John Doe
Customer first and last name converted into ASCII in case if you collect data in ASCII only.
CUSTOMER_EMAIL=This email address is being protected from spambots. You need JavaScript enabled to view it.
Customer email address.
CUSTOMER_IP=111.111.111.111
Customer IP address.
CUSTOMER_COUNTRY_CODE=US
Customer country selected on checkout page.
CUSTOMER_COUNTRY_NAME=United States
Customer country name selected on checkout page.
CUSTOMER_COUNTRY_CODE_BY_IP=US
Customer country code detected by IP address if detection succeeds.
CUSTOMER_COUNTRY_NAME_BY_IP=United States
Customer country name detected by IP address if detection succeeds.
CUSTOMER_STATE_CODE=
Customer state code if applicable.
CUSTOMER_STATE_NAME=
Customer state name if applicable.
CUSTOMER_CITY=city
Customer city.
CUSTOMER_STREET_ADDRESS=street
Customer street address.
CUSTOMER_ZIPCODE=12345
Customer ZIP/postal code.
CUSTOMER_PHONE=1234567890
Customer phone.
CUSTOMER_TITLE=
Customer title if provided.
COMPANY_NAME=
Company name if provided.
LICENSED_TO_NAME=
Licensee name, in case if license was sent to another person.
LICENSED_TO_NAME_ASCII=
Licensee name converted into ASCII in case if you collect data in ASCII only and license was sent to another person.
LICENSED_TO_EMAIL=
Licensee email address, in case if license was sent to another person.
ACTION_REASON=Full refund
Action reason, if available, in case of decline, refund, chargeback, subscription cancelation.
AFFILIATE_AGREEMENT_ID=
Integer affiliate agreement ID if order item has affiliate commission.
AFFILIATE_NETWORK_ID=
Integer affiliate network ID if order item has affiliate commission.
AFFILIATE_VENDOR_ACCOUNT_ID=
Integer affiliate vendor account ID if order item has affiliate commission.
COUPON_CODE=
Used coupon code if coupon has been applied.
COUPON_ID=
Coupon ID if coupon has been applied.
COUPON_NAME=
Used coupon name if coupon has been applied.
CREDIT_CARD_BIN=
Bank identification number (BIN).
CREDIT_CARD_BIN_RESULT=
Bank branch information.
CREDIT_CARD_LAST4=1234
Credit card last 4 digits if credit card has been used.
MAXMIND_RESULT=
MaxMind result.
CUSTOM_LICENSE_INFO=
Custom license info specified in external license generator pool in case of LicenseRequested IPN type.
HASH=30cbec16685e7d3c42ff11da86c5046b
IPN verification signature hash that is MD5(“1”) for test orders or MD5(OrderId+SecretKey) in case of real order. Example: MD5(456346wErt6HmQ). SecretKey can be specified in Account Settings – Business Info in PayPro CloudCommerce control panel.
SIGNATURE=de5618173458ee2aaed43d09a4e65e1d0b7c497b27dfab62f27344b9105d24c1
IPN verification signature hash that is SHA256({ORDER_ID}{ORDER_STATUS}{ORDER_TOTAL_AMOUNT}{CUSTOMER_EMAIL}{validation key}{TEST_MODE}{IPN_TYPE_NAME}). Example: sha256(“12345Processed9.99123qwerty1OrderCharged”). Validation key can be specified in Account Settings – Business Info in PayPro CloudCommerce control panel.
IS_DELAYED_PAYMENT=0
Is 1 if order item has delayed payment and is not charged at the moment when order is being placed.
PAYPAL_ACCOUNT=
Customer PayPal account if used.
SHIPPING_COUNTRY_CODE=
SHIPPING_COUNTRY_NAME=
SHIPPING_STATE_CODE=
SHIPPING_STATE_NAME=
SHIPPING_CITY=
SHIPPING_FIRST_NAME=
SHIPPING_FIRST_NAME_ASCII=
SHIPPING_LAST_NAME=
SHIPPING_LAST_NAME_ASCII=
SHIPPING_STREET_ADDRESS=
SHIPPING_ZIPCODE=
SUBSCRIPTION_ID=
Integer subscription ID if order item is a subscription product.
SUBSCRIPTION_NEXT_CHARGE_DATE=
Subscription next charge data.
SUBSCRIPTION_STATUS_ID=
  1. Active
  2. Suspended
  3. Terminated
  4. Finished
SUBSCRIPTION_STATUS_NAME=
Text representation of SUBSCRIPTION_STATUS_ID.
IS_ON_TRIAL_PERIOD=
Returns 1 in case if product has trial period, 0 otherwise.
TRIAL_PERIOD_TILL=
Returns trial period end date in case if product has trial period.
ORDER_ITEM_SKU=
Product SKU if any has been set up.
PRODUCT_COMBINATION_NAME=
Combination name assigned by the vendor in pricing multiple options.
SELECTION_GROUP_ITEM_IDS=
A list of item IDs that are included in the selection group by the vendor (pricing multiple options).
SELECTION_GROUP_ITEM_NAMES=
A list of item names that are included in the selection group by the vendor (pricing multiple options).
ORDER_ITEM_PRICE=253.13
The price of one product copy in order billing currency.
ORDER_ITEM_BALANCE_CURRENCY_PAYPRO_AMOUNT=0.00
PayPro commission amount per order item in balance currency.
CUSTOMER_LANGUAGE_CODE=uk
The language selected by a customer during a purchase.
CREDITCARD_LAST4=1798
Last 4 digits of the credit card used by the customer while purchasing.
ORDER_ITEMS_COUNT=1
Total number of order items.
REGIONAL_PRICE=False
If regional pricing was enabled or disabled (True/False).
INVOICE_LINK=https://store.payproglobal.com/invoice?Id=xxxx-xxxxx-xxxxx-xxxx&Date=XXXXXXXX
Invoice URL.
ORDER_TOTAL_AMOUNT_WITH_TAXES_SHOWN=253.13
Order total amount including tax in order billing currencies.
SUBSCRIPTION_INITIAL_ORDER_ID
Order ID number for the initial charge of the subscription.
CREDIT_CARD_EXPIRATION_DATE
Credit card expiration date if paid by a credit card.
CUSTOMER_STREET_NUMBER
Customer street number. Available if a billing country is Mexico, Brazil, Chile.
SUBSCRIPTION_RENEWAL_TYPE
Subscription renewal type. Variants: 1-Manual 2-Auto
ORDER_ITEM_UNIT_PRICE
Displays the initial item value before any discounts were applied
BUNDLED_ITEMS_COUNT
Bundled products count.
CUSTOMER_FISCAL_NUMBER_PERSONAL
Customer fiscal number personal. Available if a billing country is Brazil.
CUSTOMER_FISCAL_NUMBER_CORPORATE
Customer fiscal number corporate. Available if a billing country is Brazil.
CORPORATE_PURCHASE
Corporate purchase. True or false.
OPTION_GROUP_IDS
List of group ids from combination items.
OPTION_GROUP_ITEM_IDS
List of item ids from combination items.
SUBSCRIPTION_FINISH_DATE
Subscription expiration date. It is sent only in IPN type 11. SubscriptionFinished
SUBSCRIPTION_CANCELLATION_REASON_ID=1
Cancellation reason Id for subscription.
1 – The price is too high
2 – I no longer need this product
3 – I am not satisfied with the product
4 – I switched to another product
5 – It isn’t a priority right now
6 – I subscribed by mistake
7 – Other reason
8 – I am switching to another subscription plan
ORDER_ITEM_TAX_NAME
Tax name from the order item.
ORDER_ITEM_TAX_RATE
Tax rate from the order item.
ORDER_BALANCE_CURRENCY_VENDOR_AMOUNT
Vendor balance from order in balance currency.
REFUND_ISSUED_BY
Options: PayPro or Vendor

IPN Script example :

C# Example

<%@ Page Language="C#" %>
<%
try {
System.Text.StringBuilder bld = new StringBuilder();
bld.Append("<<<start>>>");
for (int i = 0; i < Request.Form.Keys.Count; i++) {
bld.Append(Request.Form.Keys[i].ToString() + "  =   " + Request.Form[i].ToString() + "    ,    ");
}
for (int i = 0; i < Request.QueryString.Keys.Count; i++) {
bld.Append(Request.QueryString.Keys[i].ToString() + "  =   " + Request.QueryString[i].ToString() + "    ,    ");
}
bld.Append("<<<end>>>");
bld.AppendLine();
System.IO.StreamWriter writer = new System.IO.StreamWriter(@"// path to your dump file");
writer.Write(bld.ToString());
writer.Close();
Response.Write(bld.ToString());
}
catch (Exception ex) {
Response.Write(ex.Message);
}
%>

PHP Example

<?php
$customer_email = $_REQUEST['CUSTOMER_EMAIL'];
//output
echo $customer_email;
?>

ASP Example

<%
private void Page_Load(object sender, System.EventArgs e)
{
string customerEmail = Request.QueryString("CUSTOMER_EMAIL");
Response.Write(customerEmail);
}
%>
Thank-you Page Redirect