Skip to main content

Getting Started With Webhooks

Integrate PayPro Global webhooks with your backend or 3rd party systems via a dedicated URL for tracking events related to your orders and transactions.

Webhook Overview

A webhook is a messaging service that automatically sends you alerts for specific events regarding your transactions. These events include charges, refund, and other event types in your product order database.

Our webhooks create a connection between our backend and yours. They are simple to integrate and enable you to receive the exact transaction data and order purchasing information from PayPro Global, and respond accordingly on your end.

Webhook Usage

The PayPro Global Platform performs webhook transmissions using the POST method. We send POST requests via HTTPS to the different endpoints you have set.

Webhook Request

We use an HTTP 200 status code to indicate a successful request. All other response codes indicate some kind of failure.

For keygen (key generator), we expect the response to be a license in any format. Everything you return to us for this request will be delivered to the customer as the license key.

The Content-Type header of the request is application/x-www-form-urlencoded.

Webhook Failure

When the initial attempt to deliver the Instant Payment Notification (IPN) fails, we will retry the call to your webhook URL every 30 minutes for a maximum of 3 attempts. After the last failed attempt, we will send an email notification to the 'contact' email on record. Alternatively, you can configure a dedicated email in Notifications -> Failed IPNs.

If the keygen (LicenseRequested) fails, we will do the same scheme of retries. Additionally, the system will notify you via email after each failed attempt, indicating that we were unable to deliver the license key to the customer. If your key generator is up and running again during the timeframe of retries, there is no need to send the key to the customer manually or generate it on your side. Our system will automatically request the license again and deliver it to the customer promptly.

Webhook History

In the dashboard, navigate to Reports -> Others -> IPN to see the logs of all webhook events we sent, filtered by successful or failed results, product, and date. Selecting the corresponding events and clicking on the Letter icon or Bulk actions -> Resend menu options, will create another attempt to deliver the webhook data to your endpoint.

Webhooks for Multiple Product Orders

If all of the products in an order have a dedicated webhook URL set up, the vendor will receive a webhook for each product after the order is placed.

Webhook Security

To ensure you receive the webhooks that are sent by PayPro Global we offer three levels of protection:

  1. Permanent IP addresses from which we send a request:
IPv4

198.199.123.239

157.230.8.40

IPv6

2604:a880:400:d0::1843:7001

2604:a880:400:d1::b6c:c001

  1. A hash parameter. Its value is encoded using a secret key known only between you and PayPro Global. Moreover, it can always be changed regularly.

  2. A verification signature. Its value is SHA256 encoded using a validation key known only between you and PayPro Global. Additionally, it can be regenerated from your PayPro Global vendor account at any time.

note

If the server you are using to host the IPN script is configured to block IP address, please make sure that you add the PayPro Global IP address to the whitelisted IPs. This is essential for the IPN service to run smoothly.

Webhook Setup

Ensure you set up a dedicated URL to which we will send the HTTP POST requests.

To set up webhooks:

  1. Navigate to Store settings -> Product setup in your PayPro Global account.
  2. Create a new product using the Add product option, or click Edit on the existing product.
  3. Enter a URL in the 1.Product in the IPN URL field. You may apply it to all products at ones.
  4. Click the Save button to confirm your changes.

Webhook Event Setup

Additional setup steps are required for the events of LicenseRequested and InstantLeadNotification.

License Requested

To enable the LicenseRequested event:

  1. Navigate to Store settings -> License management in your PayPro Global account.
  2. Create a new license provider using the Add license or click the Edit button on the existing license provider. In both cases, the type should be External License Generator.
  3. Enter a URL in the URL field.
  4. Click the Save button to confirm your setup.

After saving, you will also be able to test the keygen with the dedicated Test button.

Instant Lead Notification

To enable the InstantLeadNotification event:

  1. Navigate to Marketing -> Lead management in the PayPro Global account menu.
  2. Create a new lead group using the Add lead group option or click Edit on the existing custom lead group.
  3. Enter a URL in the ILN field.
  4. Click the Save button to confirm your changes.

Please contact your account manager for more details on the Instant Lead Notification (ILN).

Webhook Types

Work seamlessly with PayPro Global by integrating our webhook events.

We have broken down our webhook events into three categories:

  1. Order-related
  2. Subscription-related
  3. Others

Order-related

Type idType nameDescription
1OrderChargedTriggered when an order has been successfully processed for a one-time fee product or for the initial order of the subscription.
2OrderRefundedTriggered when an order has been fully refunded.
3OrderChargedBackTriggered when we have received a chargeback for the order.
4OrderDeclined

Triggered in three cases:

  1. When an order has been declined manually by our Risk & Support Team, indicating the reason for the decline.
  2. When an order has been declined automatically by customer's bank, indicating the reason for the decline (only for extended webhooks).
  3. When a recurring subscription payment has been declined (only for extended webhooks).
5OrderPartiallyRefundedTriggered when an order has been partially refunded.
14OrderChargebackIsWonTriggered when a dispute over the chargeback is won in our favor.
17OrderOnWaitingTriggered when an order has been moved to our manual review process or a customer used a non-instant payment method, and we are waiting for the payment to process the order.

Subscription-related

Type idType nameDescription
6SubscriptionChargeSucceedTriggered when a recurring payment (order) has been successfully processed.
7SubscriptionChargeFailedTriggered when a recurring payment (order) has failed.
8SubscriptionSuspendedTriggered when a subscription has been suspended by the customer, vendor, or our Support Team (as per the customer's or vendor's request).
9SubscriptionRenewedTriggered when a subscription has been successfully renewed either by the customer or our Support Team (per the customer's or vendor's request).
10SubscriptionTerminatedTriggered when a subscription has been terminated.
11SubscriptionFinishedTriggered when a subscription has ended.
13TrialChargeTriggered when a trial order has been processed.
21SubscriptionPaymentInfoChanged

Triggered under two conditions:

  1. The customer updates his payment credit card details in the PayPro Global customer account.
  2. The customer switches the payment method from PayPal to credit card in the PayPro Global customer account.

Others

Type idType nameDescription
12LicenseRequestedTriggered when a request for a license key is made.
15OrderCustomerInformationChangedTriggered when the customer's billing email is changed either by our Support Team (as per the customer's or vendor's request) or from the vendor's control panel.
16InstantLeadNotificationTriggered when we have sent all of the follow-up emails from the lead management campaign.
note
  • For events such as OrderRefunded, OrderChargeback, and OrderDecline, you will see a parameter called ACTION_REASON containing the reason for a refund, chargeback, or declined transaction.

  • Events such as InstantLeadNotification, OrderOnWaiting, and SubscriptionPaymentInfoChanged are fired when you have access to the extended webhooks. For more information, please contact our team at [email protected].

  • The data from the InstantLeadNotification event is sent to a URL provided in the following section of the PayPro Global account menu: Marketing -> Lead management -> custom lead group -> ILN.

Cross-reference:

  1. For detailed information about subscription statuses, please visit the link here.
  2. For detailed information about event 12. LicenseRequested, please visit the link here.

Webhook Parameters

Key/ValueDescription
IPN_TYPE_ID
  1. 1. OrderCharged
  2. 2. OrderRefunded
  3. 3. OrderChargedBack
  4. 4. OrderDeclined
  5. 5. OrderPartiallyRefunded
  6. 6. SubscriptionChargeSucceed
  7. 7. SubscriptionChargeFailed
  8. 8. SubscriptionSuspended
  9. 9. SubscriptionRenewed
  10. 10. SubscriptionTerminated
  11. 11. SubscriptionFinished
  12. 12. LicenseRequested
  13. 13. TrialCharge
  14. 14. OrderChargebackIsWon
  15. 15. OrderCustomerInformationChanged
  16. 16. InstantLeadNotification
  17. 17. OrderOnWaiting
  18. 21. SubscriptionPaymentInfoChanged
IPN_TYPE_NAMEText representation of IPN_TYPE_ID.
ORDER_IDInteger order ID.
ORDER_STATUS_ID
  1. Waiting
  2. Canceled
  3. Refunded
  4. Chargeback
  5. Processed
ORDER_STATUSText representation of ORDER_STATUS_ID.
PRODUCT_IDInteger product ID.
PRODUCT_QUANTITYProduct items quantity.
ORDER_ITEM_IDInteger order item (product in the order) ID.
ORDER_ITEM_NAMEOrder item (product in the order) name.
ORDER_ITEM_TYPE_ID
  1. 1. Product
  2. 2. BackupMedia
  3. 3. DownloadWarranty
  4. 5. BundledProduct
  5. 7. ProductSelection
  6. 8. ManualProcessingFee
ORDER_ITEM_TYPE_NAMEText representation of ORDER_ITEM_TYPE_ID.
VENDOR_BALANCE_CURRENCY_CODEBalance currency of a vendor account. The balance currency can differ from the currency the customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_TOTAL_AMOUNTOrder item price converted into the balance currency of a vendor account. The balance currency can differ from the currency the customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_VENDOR_AMOUNTThe order item amount transferred to the vendor balance. It can be positive or negative.
ORDER_ITEM_BALANCE_CURRENCY_AFFILIATE_AMOUNTAffiliate’s share of the order item converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_PARTNERS_AMOUNTPartner’s share of the order item converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_PAYPRO_EXPENSES_AMOUNTPayPro Global commission for the order item converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_REFUNDEDThe order item refunded amount converted into the vendor balance currency. The balance currency can be different from the currency the customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_VENDOR_REFUNDEDVendor’s share of the refunded order item amount converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_AFFILIATE_REFUNDEDAffiliate’s share of the refunded order item amount converted into the balance currency of the affiliate account. The balance currency can differ from the currency the customer has been charged in.
ORDER_ITEM_BALANCE_CURRENCY_PARTNERS_REFUNDEDPartner’s share of the refunded order item amount converted into the balance currency of the partner account. The balance currency can differ from the currency the customer has been charged in.
ORDER_TOTAL_BALANCE_CURRENCY_AMOUNTTotal order value, including all order items and tax fees converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in.
ORDER_BALANCE_CURRENCY_VENDOR_AMOUNTVendor balance amount from the order in the balance currency.
ORDER_TAXES_BALANCE_CURRENCY_AMOUNTTotal tax fees of all order items converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in.
ORDER_BALANCE_CURRENCY_REFUNDEDRefunded order amount converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in.
ORDER_BALANCE_CURRENCY_VENDOR_REFUNDEDVendor’s share of the refunded order amount converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in.
ORDER_BALANCE_CURRENCY_AFFILIATE_REFUNDEDAffiliate’s share of the refunded order amount converted into the affiliate balance currency. The balance currency can differ from the currency the customer has been charged in.
ORDER_BALANCE_CURRENCY_PARTNERS_REFUNDEDPartner’s share of the refunded order amount converted into the partner balance currency. The balance currency can differ from the currency the customer has been charged in.
ORDER_ITEM_LICENSESProduct license keys. If more than one license key is issued for an order item (product), they are separated with “,\t” (comma and tab).
PAYMENT_METHOD_ID
  • 1. Credit Card
  • 2. Visa
  • 3. MasterCard
  • 4. American Express
  • 5. Diners
  • 6. Discover
  • 7. JCB
  • 8. Solo
  • 9. Maestro
  • 14. PayPal
  • 15. Wire Transfer
  • 16. iDEAL
  • 17. Giropay
  • 18. Raiffeisen
  • 19. Volksbanken Gruppe
  • 21. Vorarlberger 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
  • 33. Boleto Bancario
  • 34. Alipay
  • 37. Real-time Bank Transfer
  • 44. CarteBleue
  • 45. Sofort
  • 46. MrCash
  • 47. EPS
  • 48. UseMyFunds
  • 49. Przelewy24
  • 52. POLi
  • 53. Multibanco-SIBS
  • 55. Paysera
  • 56. Abaqoos
  • 57. ePlatby for eKonto
  • 58. Trustly
  • 59. PaysBuy
  • 60. eNETS Debit
  • 61. MercadoPago
  • 62. ToditoCash
  • 63. PayWithMyBank
  • 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
  • 77. XLTunai
  • 78. Cash Options Thailand
  • 79. Online Banking Thailand
  • 80. PaysBuy Wallet
  • 81. OP-Pohjola
  • 82. Nordea
  • 83. Danske
  • 84. Globe GCash
  • 86. UnionPay
  • 95. WeChat
  • 101. Pix
  • 102. Mach Pay
  • 103. OXXO
  • 104. PagoEfectivo
PAYMENT_METHOD_NAMEText representation of PAYMENT_METHOD_ID.
ORDER_CURRENCY_CODEThe currency in which the customer has been charged for the order.
ORDER_PLACED_TIME_CUSTOMER_TIMEZONEOrder placement time using the customer's time zone (taken from the customer’s browser/operating system).
CUSTOMER_TIMEZONECustomer’s time zone from browser/operating system.
ORDER_PLACED_TIME_UTCOrder placement time in UTC.
ORDER_REFERRER_URLThe webpage from where the customer came to the checkout page.
ORDER_ITEM_SKUThe product SKU if it has been set up.
ORDER_ITEMS_COUNTThe total number of the order items.
ORDER_ITEM_UNIT_PRICEThe initial item value before any discounts were applied.
ORDER_ITEM_TOTAL_AMOUNTOrder item price in the order currency.
ORDER_ITEM_VENDOR_AMOUNTVendor’s share of the order item in the order currency. The funds transferred to the vendor balance are specified by ORDER_ITEM_BALANCE_CURRENCY_VENDOR_AMOUNT and VENDOR_BALANCE_CURRENCY_CODE.
ORDER_ITEM_AFFILIATE_AMOUNTAffiliate’s share of the order item in the order currency.
ORDER_ITEM_PARTNERS_AMOUNTPartner’s share of the order item in the order currency.
ORDER_ITEM_REFUNDEDOrder item refunded amount.
ORDER_ITEM_VENDOR_REFUNDEDVendor’s share of the order item refunded amount.
ORDER_ITEM_AFFILIATE_REFUNDEDAffiliate’s share of the order item refunded amount.
ORDER_ITEM_PARTNERS_REFUNDEDPartner’s share of the order item refunded amount.
ORDER_ITEM_COUPON_DISCOUNTDiscount for the order item generated by a coupon in the order billing currency chosen by the customer on the checkout page.
ORDER_ITEM_DYNAMIC_DISCOUNTDiscount for the order item generated by the dynamic settings in the order billing currency chosen by the customer on the checkout page.
ORDER_ITEM_LEAD_DISCOUNTDiscount for the order item generated by the lead management offer in the order billing currency chosen by the customer on the checkout page.
ORDER_ITEM_PROMO_DISCOUNTDiscount for the order item generated by cross-sell/up-sell promotions in the order billing currency chosen by the customer on the checkout page.
ORDER_ITEM_VOLUME_DISCOUNTDiscount for the order item generated by the volume range discount in the order billing currency chosen by the customer on the checkout page.
ORDER_ITEM_API_DISCOUNTDiscount for the order item generated by a dedicated API method in the order billing currency chosen by the customer on the checkout page.
ORDER_ITEM_TOTAL_DISCOUNTTotal order item discount in the order billing currency.
ORDER_TOTAL_AMOUNTThe total order value of all transactions including tax fees in the order billing currency. The result is 0 if no real transaction takes place.
ORDER_TOTAL_AMOUNT_SHOWNThe total order value without tax fees in the order billing currency.
ORDER_TOTAL_AMOUNT_WITH_TAXES_SHOWNThe total order value including tax fees in the order billing currency.
ORDER_TAXES_AMOUNTThe total tax amount for all order items.
ORDER_ITEM_TAX_NAMETax name of the order item. It is sent only if taxes are applied to the order. If a few tax categories are applied to the same order item, the parameter will be numbered ORDER_ITEM_TAX_NAME_1, ORDER_ITEM_TAX_NAME_2, etc.
ORDER_ITEM_TAX_RATETax rate from the order item. It is sent only if taxes are applied to the order. If a few tax categories are applied to the same order item, the parameter will be numbered ORDER_ITEM_TAX_RATE_1, ORDER_ITEM_TAX_RATE_2, etc.
ORDER_REFUNDEDRefunded order amount.
ORDER_VENDOR_REFUNDEDVendor’s share of the refunded order amount.
ORDER_AFFILIATE_REFUNDEDAffiliate’s share of the refunded order amount.
ORDER_PARTNERS_REFUNDEDPartner’s share of the refunded order amount.
ORDER_CUSTOM_FIELDSCustom fields used in the order.
CUSTOMER_IDInteger customer ID.
CUSTOMER_FIRST_NAMEThe customer's first name.
CUSTOMER_FIRST_NAME_ASCIIThe customer's first name converted into ASCII if you are collecting data in ASCII only.
CUSTOMER_LAST_NAMEThe customer's last name.
CUSTOMER_LAST_NAME_ASCIIThe customer's last name converted into ASCII if you are collecting data in ASCII only.
CUSTOMER_NAMEThe customer's first and last name.
CUSTOMER_NAME_ASCIIThe customer's first and last name converted into ASCII if you are collecting data in ASCII only.
CUSTOMER_EMAILThe customer's email address.
CUSTOMER_IPThe customer's IP address.
CUSTOMER_COUNTRY_CODEThe customer's country specified on the checkout page.
CUSTOMER_COUNTRY_NAMEThe customer's country name chosen on the checkout page.
CUSTOMER_COUNTRY_CODE_BY_IPThe customer's country name detected by the customer's IP address if the detection process succeeds.
CUSTOMER_COUNTRY_NAME_BY_IPThe customer's country name detected by the customer's IP address if the detection process succeeds.
CUSTOMER_STATE_CODEThe customer's state code, if applicable.
CUSTOMER_STATE_NAMEThe customer's state name, if applicable.
CUSTOMER_CITYThe customer's city.
CUSTOMER_STREET_ADDRESSThe customer's street address.
CUSTOMER_STREET_NUMBERThe customer's street number. This field is only available if the chosen billing country is Mexico, Brazil, Chile.
CUSTOMER_ZIPCODEThe customer's ZIP/postal code.
CUSTOMER_PHONEThe customer's phone number.
CUSTOMER_FISCAL_NUMBER_PERSONALThe customer's personal fiscal number. Available if the billing country is Brazil.
CUSTOMER_FISCAL_NUMBER_CORPORATEThe customer's corporate fiscal number. Available if the billing country is Brazil.
CORPORATE_PURCHASEAllowed values are True or False.
COMPANY_NAMEThe company name, if provided.
LICENSED_TO_NAMEThe licensee's name if the license was sent to another person.
LICENSED_TO_NAME_ASCIIThe licensee's name converted into ASCII if you collect data in ASCII only, and the license was sent to another person.
LICENSED_TO_EMAILThe licensee's email address if the license was sent to another person.
ACTION_REASONThe action reason, if available, in case of decline, refund, chargeback, or subscription cancellation.
AFFILIATE_AGREEMENT_IDThe integer affiliate agreement ID if the order item has an affiliate commission.
AFFILIATE_NETWORK_IDThe integer affiliate network ID if the order item has an affiliate commission.
AFFILIATE_VENDOR_ACCOUNT_IDThe integer affiliate vendor account ID if the order item has an affiliate commission.
COUPON_CODEThe coupon code used in the order.
COUPON_IDThe coupon ID if a coupon has been applied.
COUPON_NAMEThe used coupon name if a coupon has been applied.
CREDIT_CARD_BINThe bank identification number (BIN).
CREDIT_CARD_BIN_RESULTThe bank branch information.
CREDIT_CARD_LAST4The last 4 digits of the credit card used by the customer during the payment process.
CREDIT_CARD_EXPIRATION_DATEThe credit card expiration date if paid using a credit card.
MAXMIND_RESULTThe MaxMind result.
CUSTOM_LICENSE_INFOThe custom license information specified in the external license generator pool in case of a LicenseRequested IPN type.
HASH

The IPN verification signature hash is MD5(“1”) for test orders or MD5 (OrderId+SecretKey) in case of real orders. Example: MD5(456346wErt6HmQ). The secret key can be specified in Store Settings –> General settings -> Integration tab in the PayPro Global Control Panel.

The IPN hash computes in the following manner:

  • For test orders, it's always MD5("1") where MD5("1") = "c4ca4238a0b923820dcc509a6f75849b".
  • For real orders, it's MD5 of the concatenated order ID and secret key where MD5("456346wErt6HmQ") = "cdcca12c15a93df32818e463af053fbc".
SIGNATURE

The IPN verification signature hash is SHA256({ORDER_ID}+{ORDER_STATUS}+{ORDER_TOTAL_AMOUNT}+{CUSTOMER_EMAIL}+{VALIDATION_KEY}+{TEST_MODE}+{IPN_TYPE_NAME}). The "+" character here is not a part of the input string but a sign of concatenation.

Example:
sha256("12345Processed9.99test@payproglobal.comqwerty1OrderCharged").

The validation key can be found in Store Settings –> General settings -> Integration tab in the PayPro Global Control Panel.

PAYPAL_ACCOUNTThe customer's PayPal account if used.
SHIPPING_COUNTRY_CODEThe code of the country where the product should be delivered to.
SHIPPING_COUNTRY_NAMEThe name of the country where the product should be delivered to.
SHIPPING_STATE_CODEThe state code (if applicable) where the product should be delivered to.
SHIPPING_STATE_NAMEThe state name (if applicable) where the product should be delivered to.
SHIPPING_CITYThe name of the city where the product should be delivered to.
SHIPPING_FIRST_NAMEThe first name of the recipient.
SHIPPING_FIRST_NAME_ASCIIThe first name of the recipient converted into ASCII.
SHIPPING_LAST_NAMEThe last name of the recipient.
SHIPPING_LAST_NAME_ASCIIThe last name of the recipient converted into ASCII.
SHIPPING_STREET_ADDRESSThe street address of where the product should be delivered to.
SHIPPING_ZIPCODEThe ZIP or postal code of where the product should be delivered to.
SUBSCRIPTION_IDInteger subscription ID.
SUBSCRIPTION_NEXT_CHARGE_DATESubscription next charge date.
SUBSCRIPTION_NEXT_CHARGE_AMOUNTThe reference next charge amount or the billing next charge amount depends on the product pricing configuration.
SUBSCRIPTION_NEXT_CHARGE_CURRENCY_CODEThe reference currency code or the billing currency code depends on the product pricing configuration.
SUBSCRIPTION_NEXT_CHARGE_CURRENCY

Allowed values are 0 or 1.

  • 0 - SUBSCRIPTION_NEXT_CHARGE_CURRENCY_CODE is billing currency code
  • 1 - SUBSCRIPTION_NEXT_CHARGE_CURRENCY_CODE is reference currency code
SUBSCRIPTION_STATUS_ID
  1. Active
  2. Suspended
  3. Terminated
  4. Finished
SUBSCRIPTION_STATUS_NAMEText representation of SUBSCRIPTION_STATUS_ID.
SUBSCRIPTION_INITIAL_ORDER_IDThe order ID number for the subscription initial charge.
SUBSCRIPTION_RENEWAL_TYPEThe subscription renewal type. Allowed values are Manual or Auto.
SUBSCRIPTION_NUMBER_OF_BILLING_CYCLESThe billing cycle the customer is currently on.
SUBSCRIPTION_NUMBER_OF_FAILED_ATTEMPTSThe number of failed attempts to charge a subscription.
SUBSCRIPTION_CANCELLATION_REASON_ID
  • 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

It is sent only in cases where the subscription has been manually canceled by the customer, a PayPro Global representative, or the vendor.

SUBSCRIPTION_FINISH_DATEThe subscription expiration date. It is sent only in IPN type 11. SubscriptionFinished.
IS_ON_TRIAL_PERIODAllowed values are 0 or 1. The value is 1 if a product has a trial period, 0 otherwise.
TRIAL_PERIOD_TILLThe trial period end date if the product has a trial period.
OPTION_GROUP_IDSList of group IDs from the combination items if the product has the multiple options pricing variations enabled.
OPTION_GROUP_ITEM_IDSList of group item IDs from the combination items if the product has the multiple options pricing variations enabled.
PRODUCT_COMBINATION_IDThe combination value ID of the combination group item if the product has the multiple options pricing variations enabled.
PRODUCT_COMBINATION_NAMEThe combination value name of the combination group item if the product has the multiple options pricing variations enabled.
SELECTION_GROUP_ITEM_IDSThe list of group item IDs for the product selection if the product has the multiple options pricing variations enabled.
SELECTION_GROUP_ITEM_NAMESThe list of group item names for the product selection if the product has the multiple options pricing variations enabled.
CUSTOMER_LANGUAGE_CODEThe language selected by a customer during the purchase.
REGIONAL_PRICEAllowed values are True or False.
INVOICE_LINKThe invoice URL.
BUNDLED_ITEMS_COUNTBundled product count.
REFUND_ISSUED_BY

Allowed values are PayPro Global or Vendor. It is sent only in IPN types:

  • 2. OrderRefunded
  • 5. OrderPartiallyRefunded.
TEST_MODEAllowed values are 1 or 0.
CROSS_SELL_MAIN_ITEM_IDOrder item ID of a product that was sold in a cross-sell offer.
CROSS_SELL_ITEM_IDSOrder item IDs of the products that were sold in a cross-sell offer.
IS_CROSS_SELL_ITEMAllowed values are True or False. If True, then the item was sold in a cross-sell offer.
CHECKOUT_QUERY_STRINGCheckout query string.
IS_RESENTAllowed value is 1. It is passed only if webhook/IPN request is resent.
LEAD_TYPE_ID

Lead type ID. Allowed values 1 or 2.

  • 1 - Unfinished orders type.
  • 2 - Abandoned orders type.

It is sent only in IPN type 16. InstantLeadNotification.

LEAD_TYPE_NAMELead type name. It is sent only in IPN type 16. InstantLeadNotification.
LEAD_CAMPAIGN_IDLead campaign ID. It is sent only in IPN type 16. InstantLeadNotification.
LEAD_FOLLOW_UP_IDLead follow up ID. It is sent only in IPN type 16. InstantLeadNotification.

Webhook Testing

Test out your webhook configuration before going live.

We provide 2 options to test webhooks:

  1. IPN simulator
  2. A test order

IPN simulator

To open the simulator, please log into your PayPro Global account, and go to Developer tool -> IPN simulator. This tool instantly sends extensive purchase details directly to the URL you provided and allows you to check if your server has received the webhooks in real-time.

To generate a webhook event, you need to fill in the following information:

  • IPN handler URL – add your IPN/webhook 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 there.

Please note that we have already filled out all the necessary and frequently used fields in the internal statistics with our standard values to free the vendor from constantly filling them out during each test.

A test order

You can also test webhooks by placing a test order. To enable a test mode, add the following URL parameters &use-test-mode=true&secret-key=SECRETKEY. The latter is your unique key which can be found in Store settings -> General settings -> Integration tab.

Please note that all transaction-related parameters will have a 0 value for test orders.

Webhook Type: LicenseRequested

The webhook type of LicenseRequested is an excellent option if:

  • the activation of your products requires a license code
  • you're hosting a license generator on your end and want to return a code in real-time mode when the order is processed

We use the webhook functionality to dynamically receive your license code and pass it to the customer.

To set up the external license generator:

  1. Navigate to Store settings -> License management in your PayPro Global account.
  2. Create a new license provider using the Add license option and choose type: External License Generator.
  3. Enter a webhook URL in the URL field.
  4. Click the Save button to confirm your setup.

When this process has been completed, we will send you a webhook request:

IPN_TYPE_ID=12

IPN_TYPE_NAME=LicenseRequested

In response to our request, your server must send a license key. This generates the license code for the product every time the purchase is successfully completed.

We provide this license key to your customers via the thank you page and in the purchase confirmation email. Our system considers any response from your server as a license key, but it is better if you return the license key as plain text.

You can add Custom license Info which we will send you in the request via the value CUSTOM_LICENSE_INFO.

Separate Webhook Endpoints

Receive webhook notifications to various production environments with PayPro Global.

If you have several production environments and you need to configure a webhook URL for every environment, you can pass the IPN domain via a dedicated URL parameter to the checkout page.

Navigate to Store Settings -> General Settings -> Integration and in IPN URLs section enter a single IPN domain per line. For example: https://some.domain/ipn?p=1.

After this, you need to use an actual domain as the URL parameter &ipn-domain=ipn.example.com on the checkout page to get a post-purchase alert to appear. The value of the ipn-domain is a filter for the IPN URLs list. If you want to invalidate the checkout process without ipn-domain checkout URL parameter, then contact your account manager ([email protected]) to enable this option for your account.