Case study: automatic bonus recharge
Case study: automatic bonus recharge
26-Feb-2016 16:50

Case study: automatic bonus recharge

gsm termination

The history

The client is using a brand new SIM-cards. To make calls termination with this card profitable he needs to request the bonuses from GSM-operator. Bonus price is 4000 units. Before cards will request bonuses they should not make any calls. After bonus will expire, the client needs to make same procedure: recharge the cards, request bonuses and then calls until bonus limit will exceed.



  • Needs:

GoAntiFraud service can make auto-recharge via USSD requests.

The amount of 1 voucher card is 1000, so we need simply request for recharge 4 times (1000 x 4) to have an ability to request bonuses.

  • Implementation:

We need to create USSD-request for recharge and assign it to the tariff with no calls allowed until the balance tops 4000 units.

After the balance is OK we need to set another USSD-request logic. We can split this logic into two steps USSD responses:

  • First: balance is lower than 4000 units -> no changes / update balance and request again;
  • Second: balance is higher than 4000 units -> switch the tariff to another one and request for bonuses.

Simply we just need to add 2 cases and handle it with different actions

Example: USSD response on recharge request looks like this:

Your balance was recharged by 1000;

Current balance is 2800;

*** etc. etc. etc. ****

Using the capabilities of regular expression we can split the response with different balance values on 2 cases:

([\w\W])*Current balance is (?P<sim__balance>-?[1-9]?[4-9]\d\d\d+(\.\d*)?)([\w\W])*

In first case balance parsing will be unsuccessful if the balance is lower than 4000 units.

([\w\W])*Current balance is (?P<sim__balance>-?(([1-3]\d{3}|[0-9]{1,3}\))(\s*|\.\d*)?)([\w\W])*

– In second case balance parsing will fail if the balance is higher than 4000 units.

! If you don’t know how to use regular expression template engine our specialist can help you with it!

So cases will look like this:

Success case balance is higher than 4000 -> switch the tariff

Unsuccessful case balance is still lower than 4000 -> request recharge again.

Ok let's save this USSD-requests and assign them to tariff with recharge requests.

First we need to create recharge:

And assign it to START tariff with no calls:


We need to create another tariff with no calls. The main purpose is to request the bonus.

So we need to create empty tariff with one option:

For this option, we need to assign bonus request.

Example: If response looks like this:

Your bonuses are now available!

You have 1000 minutes till 2016-02-25

Then USSD editor will look like this:

So after the bonus is now available we are switching to third tariff WORK and it will handle our main calls while bonuses are available.


Only one moment we have left: when bonus has expired and we need to switch back to START. We can do this just like other cases.

We need to take unsuccessful responses and switch them to tariff START.

Example: When bonuses are were gone you will get response from carrier like this

No bonuses left.

To request a bonus send *222#

Price is 4000


USSD Editor will look like this:

So we have an extensible and flex logic to implement any of your needs.

Have fun :)

You don't know how to use this case?

– Fill in an application form for a free webinar and we will instruct you! Or you can start your presentation right now in our chat.


Related Articles


Case Study: Generation of incoming calls

01 Apr 2016 14:35
One of the main parameters of human behavior, which Antifraud systems monitor, is incoming calls to SIM-cards: namely, the percentage ratio of incoming calls to outgoing calls. GoAntiFraud can help you simulate the behavior of a person for a given parameter. All you need to do is go to the "Tari...

New GoAntiFraud Features:the Dashboard to Work with the Service

31 Jan 2017 09:11
From now GoAntiFraud customers can use a convenient dashboard. It allows the user to create a set of widgets to display the overall system status and basic call statistics. Dashboard will make GoAntiFraud easy to use and make your workflow more productive.You can track your system status based on va...

Case study:Processing balance checks USSD-responses with floating point

04 Mar 2016 15:36
The HistoryA client needs to check his SIM cards' balances. He can recieve 2 different types of messages when sending the USSD request:“Your balance is 40 USD and 50 cents”.” Your balance is minus 40 USD and 50 cents”SolutionWe need to create USSD-template for balance check and assign it to the acti...

Case Study: Tarification in GoAntiFraud

04 Apr 2016 10:25
Options and principles for automatic calculation of SIM-card balance without frequent USSD-requests in GoAntiFraud system. From this video you will learn how to set up the function of charging the balance of SIM-cards. Why is it useful for the terminator? Termination requires monitoring the ba...

Case Study: What's new in GoAntiFraud Patch 0.99.08?

19 Jul 2016 16:36
GoAntiFraud has recently released a new patch - 0.99.08.Consider the main innovations:The SIM bank options window is addedFrom now on you can specify the SIM bank name and set a different password for the web interface of your SIM bank without having to re-add it.Change the GoIP SIM bank identificat...

Case Study: Whats new in GoAntiFraud Patch 0.99.03?

06 May 2016 12:46
GoAntiFraud has recently released a new patch - 0.99.03 Consider the main innovations:- The status is added to the USSD / SMS historyNow, in the USSD history makes the status of the request visible:Answered – the request was successfulOptions not found - No appropriate options found in the USSD...

Case Study: Channels status and what do they mean?

18 Mar 2016 15:54
The video explains the meaning of various statuses of GSM channels that are displayed in the GoAntiFraud user's personal account. The "Channels" window displays the current status for each channel: No SIM. It means that there is no SIM-card in the gateway. Simply insert the card into...


GoAntiFraud GoAntiFraud GoAntiFraud GoAntiFraud GoAntiFraud GoAntiFraud GoAntiFraud GoAntiFraud GoAntiFraud