[POST] Send Webhooks
Request description
The webhooks are sent when triggered by the events available for a product in an order.
NOTE: If there are several products in one order, you receive an individual webhook for each of the products.
Request contains:
- Webhook signature
- Order data
- Customer data
- Product data
- Payment data
- (Optional) Installment data
- (Optional) Subscription data
- (Optional) Order additional parameters
- (Optional) Refund data
Request Specification:
- Request Method: POST
- Data Transfer Format: JSON
- Encoding: UTF-8
Webhook signature
Webhook signature verification allows you to rest assured that the webhooks received are from Noventiq.
Format: hash, generated with algorithm SHA-512, from string:
Webhook signature verification allows you to rest assured that the webhooks received are from Noventiq.
Format: hash, generated with algorithm SHA-512, from string:
[secret key];[event];[order_id];[create_date];[payment_method];[currency];[customer.email]where:
- secret key - when setting up webhooks
- event; order_id; create_date; payment_method; currency; customer.email - the values coincide with the values of the corresponding webhook fields
Notification-triggering event
For the value options, see the reference guide.
For the value options, see the reference guide.
Date and time of event
The system send a webhook on this event.
Format: YYYY-MM-DDThh:mm:ss±hh:mm.
The system send a webhook on this event.
Format: YYYY-MM-DDThh:mm:ss±hh:mm.
Extended order identifier
In such a format prefixes can be added to identifiers. This is the way order numbers are viewed by customers.
In such a format prefixes can be added to identifiers. This is the way order numbers are viewed by customers.
Order status.
Value options:
Value options:
- not paid
- paid
- deleted
The status is also used if a full refund has been made.
Checkout page identifier
It is used if an order for a product with dynamic characteristics has been placed. You receive this identifier in response to the request used for generating a buy link to purchase a product with dynamic characteristics (buy_link).
Otherwise, the parameter is transferred having an empty value ("").
It is used if an order for a product with dynamic characteristics has been placed. You receive this identifier in response to the request used for generating a buy link to purchase a product with dynamic characteristics (buy_link).
Otherwise, the parameter is transferred having an empty value ("").
Date and time of creation for order
If a webhook is sent on the order.created event, the date and time values in this parameter will be equal to the values transferred in event_date.
Format: YYYY-MM-DDThh:mm:ss±hh:mm.
If a webhook is sent on the order.created event, the date and time values in this parameter will be equal to the values transferred in event_date.
Format: YYYY-MM-DDThh:mm:ss±hh:mm.
Date and time of successful order payment completion
If a webhook is sent on the order.payment.succeeded event, the date and time values in this parameter will be equal to the values transferred in event_date.
If a webhook is sent on the order.payment.succeeded event, the date and time values in this parameter will be equal to the values transferred in event_date.
- Format: YYYY-MM-DDThh:mm:ss±hh:mm
- If no payment has been made, the parameter is transferred having an empty value ("")
Currency code of order
- Format: ISO 4217 alpha-3, 3 characters
- For the value options, see the reference guide
Link leading to the order page
When receiving webhooks in the test environment - links will be intended for the test environment (links will have the .demoslweb.com suffix added).
When receiving webhooks in the test environment - links will be intended for the test environment (links will have the .demoslweb.com suffix added).
Customer's country code
- Format: ISO 3166-1 alpha-2
- For the value options, see the reference guide
Customer type
Value options:
Value options:
- physical - individuals
- juridical - companies
Customer's phone number
If the parameter contains no value on our end, it is transferred empty ("").
If the parameter contains no value on our end, it is transferred empty ("").
Taxpayer identification number
E.g., it is used to transfer:
E.g., it is used to transfer:
- DNI/CUIL/CUIT when payments are made in Argentine pesos.
Company name
If the parameter contains no value on our end, it is transferred empty ("").
If the parameter contains no value on our end, it is transferred empty ("").
Company's registered office address
If the parameter contains no value on our end, it is transferred empty ("").
If the parameter contains no value on our end, it is transferred empty ("").
Company’s physical address
If the parameter contains no value on our end, it is transferred empty ("").
If the parameter contains no value on our end, it is transferred empty ("").
Your product identifiers
If the parameter contains no value on our end, it is transferred empty ("").
If the parameter contains no value on our end, it is transferred empty ("").
Your product SKU
If the parameter contains no value on our end, it is transferred empty ("").
If the parameter contains no value on our end, it is transferred empty ("").
Product sales business segment
Value options:
Value options:
- b2c - product is intended for individuals
- b2b - product is intended for legal entities
- mobile - mobile app
Price per product unit
- It is transferred in order currency
- Price excluding discount and excluding VAT
- Format: String contains numerals; value separating by point, with two decimal places.
Product discount percentage
It is transferred if a discount is applied to a product in an order at checkout. Otherwise, the parameter is transferred having an empty value ("").
It is transferred if a discount is applied to a product in an order at checkout. Otherwise, the parameter is transferred having an empty value ("").
Product discount amount
It is transferred if a discount is applied to a product in an order at checkout. Otherwise, the parameter is transferred having an empty value ("").
It is transferred if a discount is applied to a product in an order at checkout. Otherwise, the parameter is transferred having an empty value ("").
- It is transferred in order currency
- Format: String contains numerals; value separating by point, with two decimal places
VAT amount
Product quantity in an order and a discount are taken into account.
Product quantity in an order and a discount are taken into account.
- It is transferred in order currency
- Format: String contains numerals; value separating by point, with two decimal places
Product total price
- It is transferred in order currency
- Price including product quantities, VAT and discounts
- Format: String contains numerals; value separating by point, with two decimal places
Your profit margin from sales
- It is transferred in order currency
- Format: String contains numerals; value separating by point, with two decimal places
Product license information sent to customers.
The parameter is transferred if a product exploits the Noventiq automatic fulfillment tools (electronic delivery option) to send its license information, or the license information of the product has already been sent and the data has been saved in Noventiq.
The parameter is transferred if a product exploits the Noventiq automatic fulfillment tools (electronic delivery option) to send its license information, or the license information of the product has already been sent and the data has been saved in Noventiq.
Payment method code
For the value options, see the reference guide.
For the value options, see the reference guide.
Payment method name
This name is seen by customers on the checkout page when they place an order.
This name is seen by customers on the checkout page when they place an order.
Payment error code
* - Required, if an error occurs during payment.
* - Required, if an error occurs during payment.
Payment error description
* - Required, if an error occurs during payment.
* - Required, if an error occurs during payment.
Сard type
Example: Visa, MASTERCARD.
The value can be transferred if:
Example: Visa, MASTERCARD.
The value can be transferred if:
- The customer has paid for their order with a card
- The order was created to renew an AR subscription (child) but the customer has not paid for it yet. In this case, the parameter value is taken from the parent order if it was paid with a card
Last 4 digits of card number
The value can be transferred if:
The value can be transferred if:
- The customer has paid for their order with a card
- The order was created to renew an AR subscription (child) but the customer has not paid for it yet. In this case, the parameter value is taken from the parent order if it was paid with a card
Card expiration date
The value can be transferred if:
The value can be transferred if:
- The customer has paid for their order with a card
- The order was created to renew an AR subscription (child) but the customer has not paid for it yet. In this case, the parameter value is taken from the parent order if it was paid with a card
- Format: MM/YYYY. Example: 12/2026
Attribute indicating whether card expires before subscription expiration date.
The value can be transferred if:
Value options:
The value can be transferred if:
- The order contains a subscription (AR or PMR).
- A card is used for payment and its expiration date is set (the payment.card_expiration_date parameter was transferred). If the order was created to renew a subscription (child order) and the customer has not paid for it yet, the parameter value is taken from the parent order.
Value options:
- true - bank card expires before subscription does (payment.card_expiration_date < subscription.expiration_date).
For example:- Card expiration date (payment.card_expiration_date) = 09.2026 (i.e. card is valid until 30.09.2026)
- Subscription expiration date (subscription.expiration_date) = 15.10.2026
- Since Card expiration date < Subscription expiration date, then subscription.is_card_expired transfers true
- false - bank card expires after subscription does (payment.card_expiration_date ≥ subscription.expiration_date)
For example:- Card expiration date (payment.card_expiration_date) = 10.2026 (i.e. card is valid until 31.10.2026)
- Subscription expiration date (subscription.expiration_date) = 15.10.2026
- Since Card expiration date > Subscription expiration date, then subscription.is_card_expired transfers false
Installment payment availability
More details on payment in installments. This parameter and all the other ones concerning installment payment include only the installments of Noventiq Checkout (installments of PSP are not included).
Value options:
More details on payment in installments. This parameter and all the other ones concerning installment payment include only the installments of Noventiq Checkout (installments of PSP are not included).
Value options:
- true - no installments (one-time payment)
- false - installments
One installment amount
- * - Required, if payment.is_installment_payment is true, otherwise, it is not transferred
- Format: Numeral with 2 decimal places, separator - point. Transferred as a string
- The amount of the last installment may slightly differ from the remaining installment amounts
Currency code of one installment payment amount
- * - Required, if payment.is_installment_payment is true, otherwise, it is not transferred
- Always equals the value of the currency parameter
Number of installments
* - Required, if payment.is_installment_payment is true, otherwise, it is not transferred.
* - Required, if payment.is_installment_payment is true, otherwise, it is not transferred.
Subscription data
It is transferred if an auto-renewable subscription (AR / AR Trial) or a pre-filled manual renewal (PMR) is issued for a product.
Note: A subscription is created after the initiating order has been paid for. Therefore, for such an order parameter subscription is generally not transferred in event order.created since no subscription has been created yet. Parameter subscription is transferred for event order.created in two cases:
It is transferred if an auto-renewable subscription (AR / AR Trial) or a pre-filled manual renewal (PMR) is issued for a product.
Note: A subscription is created after the initiating order has been paid for. Therefore, for such an order parameter subscription is generally not transferred in event order.created since no subscription has been created yet. Parameter subscription is transferred for event order.created in two cases:
- An order has been created to renew a subscription (child order)
- An order initiates a subscription (parent order) and payment has already been completed successfully by the time the order creation notification is sent, i.e. the subscription has already been created.
Subscription identifier
- * - Required, if the subscription parameter is transferred
- Format: NN_MM, where NN is an identifier of the order that initiates subscriptions (parent order)
ID of previous order within subscription
Example:
If a subscription included orders 0001 (subscription initiator), 0002 (1st subscription renewal), 0003 (2nd subscription renewal), and a webhook is sent upon the event that has happened to:
- If a current order is a parent one and initiates a subscription, the parameter is transferred having value "null"
- If a current order is a child one, this parameter transfers the identifier of a previous child order (or the identifier of a parent order in case it is the first renewal)
Example:
If a subscription included orders 0001 (subscription initiator), 0002 (1st subscription renewal), 0003 (2nd subscription renewal), and a webhook is sent upon the event that has happened to:
- Order 0001, then "order_id":0001, "subscription.previous_order_id":null
- Order 0002, then "order_id":0002, "subscription.previous_order_id":0001
- Order 0003, then "order_id":0003, "subscription.previous_order_id":0002
Order item ID of previous order within subscription
Order item ID is an additional internal ID that is assigned to a product within an order.
Example:
Order item ID is an additional internal ID that is assigned to a product within an order.
- If the current order is a parent order (initiates the subscription), the parameter is transferred having an empty value (null)
- If the current order is a child order, the parameter transfers the order item ID assigned to the product of the previous order created within the subscription
Example:
- A product being from a parent order triggers creation of a subscription. This product ID is 11111:
- Order item ID 12345 gets assigned to the product within the order
- The webhook sent on the order event contains the following: "subscription.previous_order_item_id":null
- During the first subscription renewal, a renewal order is created:
- Product having ID 22222 is used to renew the subscription
- Order item ID 54321 gets assigned to the product within this
- The webhook sent on the order event contains the following: "subscription.previous_order_item_id":12345
Subscription type
* - Required, if the subscription parameter is transferred.
Value options:
* - Required, if the subscription parameter is transferred.
Value options:
- AR - auto-renewable subscription (including AR Trial)
- PMR - pre-filled manual renewal
Attribute indicating first renewal after free trial period
It indicates whether the order on which you received a webhook had been created or not to renew a subscription immediately after its free trial period expiration.
* - Required, if the subscription parameter is transferred.
Value options:
It indicates whether the order on which you received a webhook had been created or not to renew a subscription immediately after its free trial period expiration.
* - Required, if the subscription parameter is transferred.
Value options:
- true - if all the conditions are met:
- The order renews an AR subscription. (The order is a child order. The subscription.type parameter equals AR)
- This is the first child order of this subscription
- The subscription has a free trial period. (The customer purchased the parent product free of charge)
- false - if the conditions for transferring true are not met
Subscription status
* - Required, if the subscription parameter is transferred.
Value options:
* - Required, if the subscription parameter is transferred.
Value options:
- active - subscription is in progress and requires no payment
- not paid - subscription is payment pending
- cancelled - renewal is cancelled
Product term within current subscription period
This is the validity period of the product from the last paid order created as part of the subscription. Please note that this period applies to the subscription as the whole and may not coincide with the term of the product in the order for which the webhook is sent.
Example:
This is the validity period of the product from the last paid order created as part of the subscription. Please note that this period applies to the subscription as the whole and may not coincide with the term of the product in the order for which the webhook is sent.
Example:
- A subscription for the product having a 7-day term has been created:
- subscription.period = P7D is transferred in the webhook.
- A child order for the product having a 1-month term has been created:
- subscription.period = P7D is transferred in the webhook on the event; since the child order has not yet been paid for and the subscription has not yet been renewed, the term from the current subscription period is transferred.
- A payment for the child order has been made:
- subscription.period = P1M is transferred in the webhook on the event; since the child order has been paid for, the subscription has been extended and the current subscription period has been updated.
- * - Required, if the subscription parameter is transferred
- ISO 8601 code: P[number][unit of measurement]
- Supported units: Y - year, M - month, D - day
- Example: "P1Y" matches "1 year"
Subscription expiration date
- * - Required, if the subscription parameter is transferred
- Format: YYYY-MM-DDThh:mm:ss±hh:mm
Date of next attempt to pay for AR subscription
Only the date of the first payment attempt is transferred. The system ignores additional attempts in case of unsuccessful payment. If the date comes but the attempt is unsuccessful, or the system runs out of all the attempts to pay for a subscription (the subscription has not been renewed), the data transferred does not change. The system calculates a new date to pay for the next renewal after successful payment.
Only the date of the first payment attempt is transferred. The system ignores additional attempts in case of unsuccessful payment. If the date comes but the attempt is unsuccessful, or the system runs out of all the attempts to pay for a subscription (the subscription has not been renewed), the data transferred does not change. The system calculates a new date to pay for the next renewal after successful payment.
- * - Required, if the subscription parameter was transferred and the subscription.type parameter equals AR
- Format: YYYY-MM-DDThh:mm:ss±hh:mm
Link to manage auto-renewable subscriptions (AR, AR Trial)
This anchor link leads to the subscription section within the subscription order initiator page.
* - Required, if the subscription parameter is transferred, and the subscription.type parameter is equal to AR. Otherwise, the parameter is not transferred.
Note:
This anchor link leads to the subscription section within the subscription order initiator page.
* - Required, if the subscription parameter is transferred, and the subscription.type parameter is equal to AR. Otherwise, the parameter is not transferred.
Note:
- If a webhook notifies of a subscription order initiator (parent), the order_detail_url parameter and the subscription.detail_url parameter contain a link to the same page
- If a webhook notifies of a renewal order (child), these parameters have different values: order_detail_url - leads to the renewal order page, а subscription.detail_url – leads to the subscription order initiator page
- When receiving webhooks in the test environment - links will be intended for the test environment (links will have the .demoslweb.com suffix added)
Additional parameters of order
More details on additional parameters. Please note that the time for storing additional parameters in orders is limited.
More details on additional parameters. Please note that the time for storing additional parameters in orders is limited.
Parameter name
* - Required, if the additional_data parameter is transferred.
* - Required, if the additional_data parameter is transferred.
Parameter value
* - Required, if the additional_data parameter is transferred.
* - Required, if the additional_data parameter is transferred.
Refund / return data
It is transferred if a webhook is sent on the product.returned event. Otherwise, it is not transferred.
It is transferred if a webhook is sent on the product.returned event. Otherwise, it is not transferred.
Action type
* - Required, if the return parameter is transferred.
Value options:
* - Required, if the return parameter is transferred.
Value options:
- returned - refund or replacement of license information
- removed - removal of incorrect license information, e.g., when the customer receives invalid data instead of license information because of technical issues
Date and time of event
If a webhook is sent on the product.returned event, the date and time values in this parameter will be equal to the values transferred in event_date.
If a webhook is sent on the product.returned event, the date and time values in this parameter will be equal to the values transferred in event_date.
- * - Required, if the return parameter is transferred
- Format: YYYY-MM-DDThh:mm:ss±hh:mm
Reason description for event
* - Required, if the return parameter is transferred.
* - Required, if the return parameter is transferred.
Response
If a webhook is successfully received, your web service should return a response to the received webhook. Response time: 1 minute.
Possible responses:
- HTTP/1.1 200 OK - webhook successfully received
- Any other response or no response - webhook not received
If no webhook has been received, then:
- Sending is repeated according to the following schedule: once every 20 minutes
- Retries continue until the HTTP/1.1 200 OK response code is received or 10 attempts are made
- When re-sending, webhook data is not updated. If an order/payment object changes when a webhook is being sent, the contents of the webhook are not changed