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 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 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_REFUNDED_IN_USD=0.00
    Refunded amount of order item converted into USD.
    ORDER_ITEM_VENDOR_REFUNDED_IN_USD=0.00
    Vendor share of refunded amount for order item converted into USD.
    ORDER_ITEM_AFFILIATE_REFUNDED_IN_USD=0.00
    Affiliate share of refunded amount for order item converted into USD.
    ORDER_ITEM_PARTNERS_REFUNDED_IN_USD=0.00
    Partner share of refunded amount for order item converted into USD.
    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.
    CLOUD_COMMERCE=1
    Always 1. Indicates that the IPN comes from PayPro CloudCommerce platform not from PayPro Classic.
    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. SecretKey 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.
    PAYPRO_GLOBAL=1
    Always 1. Indicates that IPN comes from PayPro Global.
    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.
    EC_PRODUCT_ID=
    Product ID from EasyCommerce system.
    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.
    EC_SUBSCRIPTION_ID=
    Subscription ID from EasyCommerce system.
    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.
    SUBSCRIPTION_INITIAL_EC_ORDER_ID
    EasyCommerce order ID number of the subscription.

    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); } %>