Promo Management


What's new

  • Support for all payment methods - now you can create promo for not just card payments, but also for all payment methods supported by Midtrans.
  • SKU based promotion - run promotions that's applicable if your customer purchases a specific item(s) only.


Midtrans Promo Engine is an exclusive feature of hosted checkout page (Snap and Payment Link) integration, where merchant can easily run promotion without any additional code or technical development. From promo campaign creation to implementation in the checkout page can be set via dashboard without any technical capabilities needed.

Promo Engine makes it easy for merchant to perform the following operations :

  • Implement promotion directly in the checkout flow
    If promotion is active and customer is eligible, customer will see a promo sticker next to the payment method selection in Snap's payment list. Customer then can choose which promotion they want to apply to their transaction, and final amount will be deducted before customer clicks pay. Note that user can only choose 1 promotion within a transaction.

  • Budget control
    Set maximum budget (max IDR budget, trx cap, or both) per campaign. Once the budget runs out, campaign will be automatically deactivated, ensuring that merchant will not spend more then the allocated budget.

  • User maximum transaction cap
    Limit the number of time a user (defined by either email, phone number or card number) can transact using a promotion according to the campaign rules to prevent promo abuse or fraud.

  • Implement BIN based campaign
    For card payment specific promotions, limit which card BINs would be eligible to receive promotion, according to partner bank's terms and conditions.

  • Set campaign active period
    Set the time period when the campaign will be active - once campaign has passed the set date, campaign will automatically deactivate.

  • Set campaign recurrence
    Set when campaign will be applicable (certain day of the week, certain date of the month) or the frequency (reset campaign's user cap every day, every week, or every month).

  • Promotion reporting
    Easily download promotion reports for merchant's own recon activities or to be shared with bank/payment's partners, via Midtrans's dashboard or Promo Engine's dashboard.

Activating and Logging in to Promo Engine

To activate Promo Engine on your merchant account, activate first via Midtrans's Dashboard's Payment Methods page for feature activation. Once done, you will be able to see the Promo menu in your Midtrans's dashboard.

Promo Engine is automatically activate in Sandbox. If you didn't see the menu in your dashboard, contact our support team and request for feature activation in Sandbox.

Creating Promo Campaigns


Transaction counted as successful transaction in Promo Engine

Transaction with the status PENDING, CAPTURE, or SETTLEMENT with the promo applied during checkout in Snap's page is counted as a successful transaction and will deduct the allocated budget/user cap set in the campaign. If the transaction's status is CANCEL, EXPIRE, or FAILURE however, the campaign's promo limit from said transactions will be replenished.

Example :
A promo campaign is set with a budget limit of 1,000,000 IDR. If a transaction with a 10,000 IDR discount applied was made by customer and transaction status is CAPTURE, budget will be deducted and 990,000 IDR is left. However if transaction is cancelled later on; 10,000 IDR will be returned back to the budget limit, making the budget limit of said campaign back to 1,000,000 IDR.

Promo campaigns can be created by going to Midtrans Dashboard > Promo > Create Promo. You can save the campaign as draft first by ensuring that the Promo will be automatically active during the promo period tickbox in the Promo Period section is left unticked when clicking the Submit Promo button. It's very important to note that campaigns' budget and terms cannot be modified once set to active.

To deactivate a campaign, go to the Promo List, click the ... menu on the right side of the table, then click Deactivate.

To create a campaign; set your promo details, discount terms, promotion's budget, customer's max transaction limit, and promo period within the promo creation page.

Promo Details

Fill in the following promotion details upon creating a campaign :

  • Name
    Promotion name. This will appear as the promotion name that customer can choose in Snap's checkout page.

  • Sponsor Name
    Input the provider who sponsors this campaign. This will be available as filterable information in the Promo page.

  • Promo code
    Promotion unique code, used as promo identifier within Promo Engine. Promo code needs to be unique for every campaign.

  • Payment method
    Specify the payment methods eligible for this campaign. Multiple selection is supported.

  • Promo period
    Tick the Promo will be automatically active during the promo period checkbox in the Promo Period section if you want to activate the campaign which will run on the defined date, otherwise it will be saved as draft and needs to be activated manually. You will also need to specify at least the promo start date. If no end date is specified, promo will run indefinitely.

Discount Terms

Discount Type

Set the discount type between Fixed Amount, Percentage or Combo (Fixed Amount & Percentage). This section is mandatory to be filled.

  • Fixed

Fixed discount will discount the transaction over a fixed amount. If discount amount exceeds the total transaction amount, final transaction amount will be zero - be careful as this might cause the transaction to fail as some payment method/banks do not support transaction below a certain amount.

Example :
If you set the fixed discount amount to 10,000, and total transaction amount prior to discount is 100,000 - once applied by customer, final transaction amount that will be charged to Midtrans and customer will be 90,000 IDR.

  • Percentage

Percentage discount will discount the transaction based on % set in the Discount Amount field.. If discount IDR amount exceeds the total transaction amount, final transaction amount will be zero, same caution above applies.

Example :
If Discount Percentage is set to 10%, and total transaction amount prior to discount is 100,000 - once applied by customer, final transaction amount that will be charged to Midtrans and customer will be 90,000 IDR.

  • Fixed Amount & Percentage (Combo)

Combo discount will apply % based discounts with maximum IDR amount of discount, whichever IDR discount amount is lower (either the % based discount or maximum IDR amount) will be applied to the transaction.

Example :
If discount percentage is set to 10% and fixed discount amount is set to 10,000 - if a transaction with basket size of 1,000,000 is made by customer and promotion is applied; IDR 10,000 will be discounted from the transaction (making the final amount charged to Midtrans 990,000) as 10% of the transaction amount is greater than the maximum discount amount (IDR 100,000 vs IDR 10,000).

Minimum transaction amount

Set the minimum transaction amount (basket size) eligible to receive promo and discount type in this section.

Tick the Minimum transaction amount in the Advanced Settings section if you want to enable promo for transaction with basket size (before discount is applied) to be at least a certain amount. Customers who makes transactions with gross amount below the set minimum amount will not be shown this promo.

Promo Budget

Promo Budget section in the promo creation page allows you to set a maximum budget for your promo campaign. Untick it to set the promo campaign to run without regard of campaign budget until the end of specified promo period. If set to Yes, your campaign will only run until the set limit is reached, then campaign will automatically deactivate. Budget limit can be set by transaction amount, transaction count, or a combination of both.

Budget amount

Budget amount will limit the promotion up to your total allocated IDR budget for the whole campaign. If the budget amount is exceeded, the promo can no longer be used.

Example :
If you set the Budget amount as 100,000,000 - and then you have 1000 transactions which have redeemed the promotion amount accumulated to a total of 100,000,000 - the 1001st transaction going forward will not see any promotion option in Snap checkout page and be processed as normal.

Promo quota

Limit the promotion for x number of transactions only. If the transaction count is exceeded within the promo period, the promo can no longer be used by customer.

Example :
If promo quota is set to 100, and 100 transactions from various customers have successfully used the promotion, the 101th transaction going forward will not see any promotion option in Snap and be processed as normal.

Budget amount & promo quota

Combine both Budget amount and Promo quota. Whichever condition is met first will deactivate the campaign.

Example :
If you set the Budget amount as 1,000,000 and count to 10 - and then you have 10 transactions which have redeemed in total 900,000 IDR worth of discount before the campaign ends - the 11th transaction going forward will not see any promotion option in Snap and be processed as normal.

Promo Period

This section governs how long the campaign will be active (and with it, the budget calculation time).

Tick the Promo will be automatically active during the promo period checkbox in the Promo Period section if you want to activate the campaign which will run on the defined date, otherwise it will be saved as draft and needs to be activated manually. You will also need to specify at least the promo start date and time. If no end date is specified, promo will run indefinitely.

Promo Schedule

This section governs when promotion will be available for customers.

  • Daily - at selected time : campaign will be active everyday within the specified hour. Outside of specified hour, promo will deactivate and be automatically reactivated again on the next calendar day within the specified hour.

  • On selected days : campaign will be active on certain days of the week (multiple days selection are supported), within the specified hour.

  • On specific dates : campaign will be active on a certain date of the month (range between 1-31, multiple inputs are allowed separated by comma) and specified hour. Example : if you want to set up a payday period campaign that occurs every month on 25-27th day, type 25,26,27 into the Enter specific dates field.


Budget calculation

Promo schedule does not affect budget calculation - say that if you set it to Daily - at selected time, budget calculation will not be reset daily. Instead, it will follow the start date and end date set in the Promo Period fields (or never reset if on End Date is specified in Promo Period).

Promotional Product (NEW!)

Set up cart level promotions in this section. This feature can be combined with other promo criteria, e.g. credit card specific rules. Promo engine will check the eligibility of the cart based on information passed on Snap Checkout's item_details object. or Payment Link's Items information.

To set up, specify the following information :

a. Promo Eligibility

Specify how a cart will qualify for the promotion. There are two variants supported :

  • Cart only contains the selected product
    Transaction will only be eligible for promotion if cart (or item information passed in Snap Checkout's item_details) has only promoted items, nothing else.
    E.g. if promo is set up to qualify for phone cables only but user purchases phone cables and mobile phone, said transaction will not qualify for promotion.
  • Cart contains at least 1 selected product
    Transaction will eligible for promotion if cart has at least 1 of the specified items in the campaign. Only qualified items will be discounted.
    E.g. if promo is set up to qualify for tea, coffee and juice, and user purchases tea, coffee and water, the transaction will still qualify for promotion, with only tea and coffee getting discounted.

b. Product Identifier

Specify how Promo Management will identify eligible product within the cart / item_details object. You can choose between 4 types of parameters provided in the item_details object in Snap Checkout, which is SKU ID (corresponds to id), Product Name (corresponds to name), Product Category (corresponds to category), and Brand (corresponds to brand). See the item_details object docs to check what kind of inputs are accepted.

Additionally, Promo Management will check eligibility based on case insensitive exact match, e.g. if you specified Tea when creating the campaign, only Tea or tea passed in the item_details will be considered as; but variations such as teacups or green tea will not be considered as eligible.

Once you have selected which identifier to use, you can specify the list of eligible values - separate each value with comma without space in between of values. Note that transaction/cart needs to contain at least 1 of the specified product in order to be eligible for the promotions.

c. Min & max quantity of SKU

An optional limitation that you can set to check the minimum and maximum quantity of the product that’s eligible for promo. See example below for further details.
E.g : Say that you specify a campaign of discount 10%, eligible for cart containing products of tea and coffee, with min quantity of 1, and max quantity of 2. A user then purchases 2 teas @ 10k IDR each and 3 coffees @ 15k IDR each. As such, only the 2 cups of teas are eligible for the discount, hence the total discount will be 2 x 1k IDR = 2K IDR total.

Credit Card Rules

You can set promo limitation specific to card payment properties in the Credit Card BIN and installment section. Setting this section is optional; if not needed, then leave the checkbox unticked or leave it as empty.

Credit Card Bin

Activate promo only for transactions using card with specific BIN number. For example, if you want the promo to be activated only for Mandiri cards, simply adding 46170069 in the input field will enable the promo option only for customers who use cards beginning with 46170069. You can also input multiple BINs by separating them with commas such as 46170069,52642210,45992078 (no space).

Please note that we highly recommend filling in 8 digits Card Bin in this input field.


Tick all the eligible the Installment Terms options. If not set, promo will be applicable for all type of transactions.

Promo usage limit

Setting the max count per customer

You can set how many times a customer can use the promotion within a certain time period. If customer exceeds the cap set here, the subsequent transaction made by said customer will proceed as normal without promotion applied.

A customer is defined by a unique card number, phone number or email address - promo engine will count transactions made by each card, phone number and email. If all three limitation fields (shown in above picture) are filled and customer is using the same credentials across three fields, whichever limit is met first will deactivate the promotion for said customer's transaction. These fields are optional.

Example :
If you set the max trx limit as follows,
a. 1 trx per card
b. 2 trx per email
c. 3 trx per mobile phone number.

If customer using card A, email B, and phone number C across all of their transactions, the first transaction will be eligible for promo, but 2nd transaction going forward will no longer be eligible for promotion since max cap per card has already been met, even though cap per email or phone number hasn't been met yet.

If customer however changes card for their second transaction, customer will be eligible for promotion on their second transaction as no max cap is met as of 2nd transaction.

Setting the timeframe of customer's limitation

The previously set customer's limitation period can be set in the Reset cycle of promo usage section. Once the timeframe has been exceeded, customer's limit will be reset and customer can use the promo again. If not set, each customer's quota will not be reset until the end of campaign.

Example :
If limitation timeframe is set as End of day and max transaction cap is set as 1, if customer has made a transaction and used promo today on 11PM GMT+7, customer can only use the promo again from said campaign as early as 00:00:01 GMT+7 the following day.

There are 3 types of timeframe :

  • End of promo period
    Customer's limitation will last as long as the campaign is active. Once customer's transaction limit is met, customer can no longer use the promo until the campaign ends.

  • End of day
    Customer's limitation will last per transaction's date (GMT+7). Once the day changed, the limitation will be reset.

  • End of month
    Customer's limitation will last per transaction's month (GMT+7). Once the month changed, the limitation will be reset.

  • Custom interval
    Define how many days (1 day is defined as 24 hour) after transaction until the limitation will be reset. Days will be calculated from the date and time when customer made a transaction. Max days that can be set is 30 days. E.g. if you set is as 2 days and customer transact at 2023-02-14 03:00:00, then customer can use promo again on 2023-02-16 03:00:00.

Downloading Reports

Download transaction as usual via Midtrans's Dashboard > Transactions. When downloading, tick the Promo Details checkbox which will add two columns in the report, the Promo Code (campaign unique identifier as set in the Promo Creation page), and Promo Original Amount (original transaction amount as sent by merchant prior to discount).