dellmont-credit-checker v4.5.3 [09 Sep 2019] by Dominic


GNU/Linux program to notify if credit on one or more Dellmont/Finarea/Betamax voip provider accounts is running low. Once successfully tested it can be run as daily cron job with -q option and -m email_address option so that an email is generated when action to top up credit on the account is required. Can also run under MS Windows using Cygwin (, or can be run as CGI job on Linux/Apache webserver.

Usage [option]


A conffile should be in the same directory as with name dellmont-credit-checker.conf, or if elsewhere or differently named then be specified by option -f, and should contain one or more lines giving the Dellmont/Finarea/Betamax account details in the form:
website username password [test_credit_level_in_cents/pence] [credit_reduction_in_cents/pence] [credit_recordfile]

where the test_credit_level_in_cents/pence is >=100 or 0 (0 means 'never send email'). If you don't specify a test_credit_level_in_cents/pence then the current credit level is always displayed (but no email is ever sent).

If you specify them, the credit_reduction and credit_recordfile work together to perform an additional test. The program will record in credit_recordfile the amount of credit for the given portal each time it is run, and notify you if the credit has reduced since the last time by more than the credit_reduction. This can be useful to warn you of unusual activity on the account or of a change in tariffs that is significant for you. Set the credit_reduction_in_cents/pence to a level that is more than you would expect to see consumed between consecutive (e.g. daily) runs of e.g. 2000 (for 20 euros/day or 20 dollars/day).

Here's an example single-line conffile to generate a warning email if the credit on the account falls below 3 euros (or dollars): myaccount mypassword 300


Temporary files are saved with 600 permissions in $TEMP which is set to a standard location, normally /tmp, unless it is already defined (so you can define it if you want a special location). Unless run with debug option, all such files are deleted after running - except the cookiejar file which is retained so it can be reused. (The same cookiejar file is also used, if found, by

Call Records History

You can use options -r and -t to download call records and append them to a specified file.


Here is an example of how you could use on your own (presumably internal) website (with CGI configured appropriately on your webserver):


-c [path] - save captcha images (if any) at path (default is current path)
-d debug - be very verbose and retain temporary files
-f [path/conffile] - path and name of conffile
-h show this help and exit
-l show changelog and exit
-m [emailaddress] - send any messages about low credit or too-rapidly-falling credit to the specified address (assumes sendmail is available and working)
-M "[month-year-page]" - specify a specific earlier month and page for call record history retrieval (with -r option) - format '/MM/YYYY/P'
-n delete any existing cookies and start over
-p pause on cookie expiry - wait 2 minutes if cookies have expired before trying to login (because cookies are usually for 24 hours exactly this should allow a second login 24 hours later without requiring new cookies)
-q quiet
-r [path/file] - specify a directory for call record history files (per website and account) - data is appended to any existing files
-s skip if captcha code is requested (e.g. for unattended process)
-t [char] - if extracting call records (-r), this specifies the field separator character (default comma)
-u set umask for any created files (default 177: files are readable/writable only by current user)
-v be more verbose


awk bash coreutils curl grep openssl sed [sendmail] umask


Copyright © 2022 Dominic Raferd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Portal List

Here is a list of websites / sip portals belonging to and/or operated by Dellmont. To find more, google "is a service from dellmont sarl" (with the quotes). Try a portal with - it might work!

If one of these (or another which you know is run by Dellmont) does not work, run with -d option and drop me an email attaching the temporary files (two or three per portal, password is stripped out anyway).

A page showing relative prices for many of these sites may be found at - it may or may not still be current.


4.5.3 [09 Sep 2019]: read gpg2-encrypted conf file (if .gpg filename extension)
4.5.2 [15 Aug 2019]: bugfix for freedays, add -M option (kudos: Mathias Rothe)
4.5.1 [12 Aug 2019]: bugfixes, change -r option to set the output directory (not file)
4.5.0 [07 Aug 2019]: add -r and -t options and show Freedays (if any) (kudos: Mathias Rothe)
4.4.6 [16 Jun 2019]: hide openssl 1.1.1 'deprecated key derivation' message when decrypting
4.4.5 [11 Apr 2019]: update to work with pounds sterling (kudos: Mathias Rothe)
4.4.4 [10 Apr 2019]: update to try to work with captcha
4.4.3 [31 Jul 2018]: update to work with OpenSSL 1.1.0g (backwards compatible)
4.4.2 [27 Mar 2017]: add -u option (set umask)
4.4.1 [29 Jun 2016]: rename cookiejar and temporary files to include userid (number) rather than username
4.4.0 [25 Mar 2016]: bugfix
4.3.9 [16 Mar 2016]: bugfix
4.3.8 [15 Mar 2016]: set permissions of all files created to 600, to secure from other users, move cookiejar files back to $TEMP and rename cookiejar filename to include $USER so that multiple users do not overwrite one another's cookiejars
4.3.7 [19 Feb 2016]: if the specified credit_recordfile can't be accessed, show warning instead of failing
4.3.6 [08 Feb 2016]: bugfix for credit <100 eurocents
4.3.5 [18 May 2015]: move cookiejar file location to /var/tmp
4.3.4 [01 Oct 2014]: minor bugfix
4.3.3 [06 Sep 2014]: allow checking of multiple accounts for same provider
4.3.2 [05 Sep 2014]: improvements to debug text and error output
4.3.1 [23 Jul 2014]: warning message if no lines found in conf file
4.3.0 [28 Nov 2013]: use local openssl for decryption (when required) instead of remote web call (thanks Loran)
4.2.0 [03 Nov 2013]: a lot of changes! Enable CGI usage, remove command-line setting of conffile and email and instead specify these by -f and -m options. Test_credit_level_in_cents is now optional in conffile. Add -v (verbose) option. Squash a bug causing failure if a captcha was requested.
4.1.1 [01 Nov 2013]: select the reported 'user-agent' randomly from a few
4.1.0 [01 Nov 2013]: local solution is tried before relying on remote decryption call (thanks Loran)
4.0.5 [01 Nov 2013]: fix for low-balance or $ currency
4.0.1 [30 Oct 2013]: fix magictag decryption
4.0.0 [29 Oct 2013]: works again, requires an additional decryption web call - note a change to conf file format
3.6 [21 Oct 2013]: works sometimes...
3.5 [04 Oct 2013]: small tweaks but more reliable I think...
3.4 [03 Oct 2013]: retrieves captcha image but still not reliable :(
3.3 [29 Sep 2013]: correction for new credit display code
3.2 [18 Sep 2013]: corrected for new login procedure
3.1 [10 Oct 2012]: minor text improvements
3.0 [27 Aug 2012]: minor text correction for credit reduction
2.9 [16 Aug 2012]: added optional credit reduction notification
2.8 [27 Jun 2012]: now works with, added a list of untested Dellmont websites to the help information
2.7 [25 May 2012]: now works with
2.6 [25 May 2012]: fix to show correct credit amounts if >=1000
2.5 [15 May 2012]: fix for added hidden field on
2.4 [10 May 2012]: improved debug information, uses method 2, rename previously-named as
2.3 [04 May 2012]: improved debug information
2.2 [03 May 2012]: further bugfixes
2.1 [03 May 2012]: now works with
2.0315 [15 Mar 2012]: allow comment lines (beginning with hash #) in conffile
2.0313 [13 Mar 2012]: changes to email and help text and changelog layout, and better removal of temporary files
2.0312 [10 Mar 2012]: improve help, add -l changelog option, remove deprecated methods, add -d debug option, tidy up temporary files, use conffile instead of embedding account data directly in script, first public release
2.0207 [07 Feb 2012]: new code uses curl for
2.0103 [03 Jan 2012]: no longer uses finchecker.php or fincheck.php unless you select deprecated method; has 2 different approaches, one currently works for voipdiscount, the other for voicetrading.
1.3 [21 Jun 2010]: stop using external, now uses external fincheck.php via finchecker.php, from, using fincheck.phps for fincheck.php; finchecker.php is adapted from example.phps
1.2 [03 Dec 2008]: uses external script
1.1 [17 May 2007]: allow the warning_credit_level_in_euros to be set separately on each call
1.0 [05 Jan 2007]: written by Dominic, it is short and sweet and it works!



I have provided this software free gratis and for nothing. If you would like to thank me with a contribution, please let me know and I will send you a link. Thank you!

My Other Sites

My Programs

Here is a selection of some (other) programs I have written, most of which run from the command line (CLI), are freely available and can be obtained by clicking on the links. Dependencies are shown and while in most cases written for a conventional Linux server, they should run on a Raspberry Pi, and many can run under Windows using Windows Subsystem for Linux (WSL) or Cygwin. Email me if you have problems or questions, or if you think I could help with a programming requirement.

Backup Utilities

Debian/Ubuntu kernel and LVM Utilities

Dellmont - VoIP and Mobile Phone Account Utilities

Miscellaneous Programs


If you have a comment or question, please email me, thank you.

Manuel Räber 02 May 2012, 08:06
I love your great script and appreciate your work to the community. But unfortunately betamax clones changed their website format. Are you planning to adapt your scripts to that?
Dominic 02 May 2012, 08:26
@Manuel: The script works with and, but please tell me which other betamax websites you are using and I will look into it...

wasim 08 May 2012, 17:09
thanks for all great work, by any chance do you have any php script to display balance on webpage for multiple accounts.
Dominic 10 May 2012, 10:51

Sorry, Wasim, not directly. However if you install on your (linux) web server, you can easily save the output to a file for display from a browser.

So if your web home directory on your server is at /var/www/mysite/htdocs then you could have regular cron job like:

/opt/ /opt/fincheck.conf|sed '1s/^/<pre>/;$s/$/<\/pre>/'>/var/www/mysite/htdocs/fincheck. htm

Then you can browse to fincheck.htm to see the output.
Jorge 25 May 2012, 11:47
This works perfect with VoiceTrading, but If I want to check periodically, NOT ONLY when the credit is low and If the balance is >1000, for example "1,128.91", the balance show is "128.89"
Dominic 25 May 2012, 12:16

thanks for the feedback - fixed now I think in v2.6.
Jorge 25 May 2012, 14:54
Fixed Correcly ;)

Jorge 19 Sep 2013, 23:50
V3.2 Ok!!!!! Great Job!
Jorge 23 Sep 2013, 22:54
From today, it seems some times the login works well but the most time login fails.

Jorge 23 Sep 2013, 22:55
In Voicetrading: "CREDITCENTS is blank"
Dominic 27 Sep 2013, 07:39
Some new captcha code that Dellmont have introduced is causing problems for this script, sorry it is not working at present...
oxygen 28 Sep 2013, 08:28
In voipcheap I also get "CREDITCENTS is blank"

I do not see the capcha code...
Dominic 28 Sep 2013, 09:37
Yes there is something strange. With normal browser which has logged in before you come to login page and there is no captcha. If you login and then logout you see it though. But script at present always sees the captcha. I can't find a way to avoid this and I also can't (yet anyway) find a way to download the captcha to decode it (whether visually or by some code). If anyone can help me understand the problem, please shout!
Jorge 28 Sep 2013, 16:57
Depending the browser you will "see" the captcha, if you go with Lynx the captcha appears (but you can not see because is and image).

The same captcha style appears when you go to singup or create and account.

It seems to be made ​​specifically to avoid console or text browsers to avoid brute force attacks from scripts?

comerun 29 Sep 2013, 13:23
Help !
Dominic 29 Sep 2013, 16:58
Ok here is version 3.3, it does work for me but only when run once in a while, if you run it again a short time after the previous run it hits the captcha problem. However you should only need to run it occasionally (e.g. once per day).

I look forward to hearing how users get on with it...
Dominic 04 Oct 2013, 17:44
Version 3.4 is still a work-in-progress but it can now save the captcha image and prompt for you to input it - see new options -c, -s and -n. Still it does not log in reliably yet, it often reports session expired...
Dominic 05 Oct 2013, 05:27
Version 3.5 may be better...
Dominic 21 Oct 2013, 09:42
Version 3.6 has some tweaks and is working for me at the moment. Still, if it is requested, you will have to enter the captcha code by looking at the captcha image. I am considering the optional use of a commercial captcha-decoding service to automate this stage.
Loran 28 Oct 2013, 15:15
It is getting harder. These guys put a lot of efforts against such scripting methods.I am trying to run this on "my" server and get to my phone just the result when I need. Does anybody know how frequent a "visit" should be simulated to prevent the captcha entering?
Dominic 28 Oct 2013, 15:47
Hi Loran, the cookies seem to have 24 hour life but with my browser (manual login) I seem to be able to relogin much later than that without having to enter captcha.

I agree the guys have tried to stop scripting access, while I can understand they don't want their sites hacked it does seem silly that they make legitimate logins so difficult. There are two problems:
- they provide 10 login forms on each login page and then use a javascript encryption function to pick the right one, so this has to be emulated in code to find which is the right form. If you pick the wrong form your session expires immediately.
- they call for a captcha image for 'new' logins.
Dominic 29 Oct 2013, 15:15
I am pleased to announce the release of v4.0.0 which (I think) works reliably...
Loran 31 Oct 2013, 21:07
Hi Dominic. Good work!
Just 2 suggestions for improvement:

- When the credit goes very low, the class you parse is changed from class="balance" to class="low-balance" (for example they change the color to red).
Can you add some more logic if no value detected in balance to try low-balance as well?

- Some providers instead of "euro" symbol use "$". The rest is identical. Can you also add this logic too? (If no euros -> check for dollars, just in case :)
Loran 31 Oct 2013, 21:15
FYI I also have been playing around an android app called dashclock-betamax (search GitHub for code).
It is based on one very powerful Jsoup library (Java stuff). Probably same idea as yours could be ported too.
Dominic 01 Nov 2013, 06:58
Loran, 4.0.5 should include your suggestions, please check it. Thanks for the tip about dashclock-betamax / Jsoup, I will look them out.
Loran 01 Nov 2013, 14:04
BTW, You can see which of 10 hidden identical parts is the 'good' one without decrypting the JS. Just look further in page, there is something like: ... Of course, this ajax part appears only on specific user agent. Yours is good. For now I cannot use your script for what I want, because is too heavy and dependent. It needs a full blast Linux station and your online decryptor - it makes no sense. I just need a simple php only solution to pass my account info and get remaining balance. Probably I'll gave up for now.
Dominic 01 Nov 2013, 15:32
Thanks Loran, I have used your tip in 4.1.0, but it does not work for some portals such as voicetrading. So the program now uses your local solution but drops back on failure to remote decryption.

I can't avoid the dependencies, but it should run under Windows with Cygwin.
Loran 03 Nov 2013, 03:21
Hi Dominic,
Yes, I managed to use the script. It works!
I think, if you make also a linux server style CGI variant to run say with several query parameters (login, pass, provider) and return just the balance it would be great.

Dominic 03 Nov 2013, 17:21
I have made a number of changes to update it to 4.2.0, previous users please check the changelog. It can now be called from CGI, it still uses a conffile but this has a default value which can be varied by new option -f. Email address is also now specified by option. As the test_credit_level_in_cents is now optional in conffile, the program can be used just to display the current credit level(s) - note that in this case the -q option will display the credit level (but nothing else).
Loran 13 Nov 2013, 21:45
Hi Dominic.
Take a look to "gibberish-aes-php" and "simpletest scriptable browser". They make possible a PHP variant, where cиrl or php-cиrl are not needed, but Mcrypt (or OpenSSL) on the PHP engine. mail me if you are interested.
Loran 27 Nov 2013, 19:18
Hi Dominic,

I think, there is another way to avoid the remote decryption by doing it within the script itself - this will work for all cases.

I sent you an e-email with details.
Daniel 11 Mar 2014, 08:29
Hi Dominic,
I just found your script - thanks for that fabulous piece of software! I'm searching for a way to automatically download the CDRs from voippro[DOT]com - do you plan to implement sth. like that into your script? BTW: voippro[DOT]com is not listed in your "Portal List" but works fine with your script.
Douglas Andrade 30 Jun 2014, 09:16
I created a new option for

I am sending the diff in pastebin

This option saves all the recent calls from the previous month in the home of the User.

To use requires w3m

-r save the historic use of the previous month in the home

Douglas Andrade 01 Jul 2014, 01:07
I gave improved in the code and is now the export to csv

frank 23 Jul 2014, 22:25
I tried it with freevoipdeal but nothing appears:

$ ./ -d v4.3.0 [28 Nov 2013] by Dominic
Debug mode
CONFFILE: './dellmont-credit-checker.conf'
Selected user agent: "Mozilla/5.0 (Windows NT 6.2; rv:22.0) Gecko/20130405 Firefox/23.0"
Completed with ERRS: '0'
Dominic 24 Jul 2014, 06:56
@frank: I think your dellmont-credit-checker.conf file has no valid lines, maybe the EOL (return) is missing from the end of the line you created? I added a warning about this in a new version I just uploaded, please have a look and let me know.
Frank 24 Jul 2014, 09:36
Now ok.
But credit of 19.36 ¤ is displayed as 1936
Dominic 24 Jul 2014, 09:45
Yes that's how it works - credit is shown in Eurocents
Frank 24 Jul 2014, 12:42
ok. thanks.
It worked on time but now stopped working.
I simply copied .sh and .conf into /usr/lib/cgi-bin and tried to execute....

if I try to execute into shell :
./ line 1: www . freevoipdeal. com: command not found
Dominic 24 Jul 2014, 12:55

you need to make sure that the user running cgi-bin scripts from webpage has the necessary permissions.

my only thought re the shell error is that maybe you tried to execute conf file instead of sh file?
Frank 24 Jul 2014, 15:01
OK. I wrongly overwritten file....
But now another problem:
here a part of the log:
[FAIL] - captcha code requested

if I use -c option it doesn't work with this error:
No argument value for option c
Laurent 05 Sep 2014, 11:42
Hi Dominic,

first, thanks for the great job.
Using it for voipcheap, it works for one user, but not for antoher one. If I activate "debug" the only difference I see is:
Visited : voipcheap/login
Saved as : /(text not allowed!)
Cookies saved as : (text not allowed!)-COOKIEJAR.txt
We are already logged in, retrieving info from original page
Credit (cents) : '717'
not working :
Visited : voipcheap/login
Saved as : (text not allowed!)
Cookies saved as : (text not allowed!)m-COOKIEJAR.txt
Unable to find correct version of hidden tag directly, using remote decryption
Encrypted Magictag: ""
Key : ""
Requesting remote decryption...
error reading input file
An error occurred extracting magictag, aborting...
both users can login on the website, so user/pass are ok.

thanks for your support
Laurent 05 Sep 2014, 13:56
OK Dominic, I got it (RTFM!).
I just have to use the "-n" option to delete cookies between several checks, so that I am able to check multiple acccounts on the same website.

Sorry for disturbance and many thanks again!

Dominic 06 Sep 2014, 08:20
new version 4.3.3 allows multiple accounts to be used with the same provider in the same session (no need to use -n).
Jan van Haarst 12 Apr 2015, 13:27

I have created a github repo at github[dot]com/jvhaarst/dellmont-credit-checker
For now I have disabled the wiki and issues, as I do not want to interfere with this page.

Arthur 08 Jun 2015, 09:53
dellmont-credit-checker not working since yesterday.
site is waiting for captcha Input which is not given.
Running script interactively in verbose mode outputs
"Please enter Captcha code" and is waiting but I need this script in non interactive mode.

Thank you,
Arthur 17 Jan 2016, 04:13
Do you have control over the remote script? If so it might be easier to have the script itself call your code when it is done, a-la JSONP
Dominic 17 Jan 2016, 07:26 it doesn't use any remote script, it runs locally
Emiliano Heyns 20 Feb 2016, 11:27
Since this morning I'm getting captcha requests on every run. After I fill out the captcha, I get

Error: w w w.voipbuster.c o m / username - CREDITCENTS is blank
Dominic 21 Feb 2016, 07:52
@emiliano: corresponded by email, problem now sorted, appears to have been a temporary glitch on voipbuster website.
Mrtn 15 Mar 2016, 09:25
Great tool!
But could you revert the hard-coded paths to sensibly set variables?
Now there's /var/tmp for cookie jar (but not user-unique), /tmp for user agent, and $TEMP for other (sensitive!) files.

I use the script with custom $TEMP variable to safely store stuff outside public directories. Now I need to patch it to stay secure.

Probably best to check the script's basedir for read-write permissions and only fall back to public tmp when no other options seem available. And of course, only set defaults at top of the script, and no hard-coded paths further down. :-)

Dominic 15 Mar 2016, 12:38
@Mrtn: Thanks for suggestions.

For v4.3.7 I have changed file permissions for all created files to 600 (via umask), moved cookiejar and useragents files to $TEMP (i.e. no longer hard-coded) and renamed cookiejar so the name includes $USER.

As you know, you can use custom $TEMP to store stuff elsewhere; this is now explained in help.
Davide 09 Jan 2017, 09:37
Well done, big thumbs up for this script.

Works like a charm with JustVoip and SIPDiscount