Cyberfax Mini/Mainframe Interface

We want to stress that we are not affiliated with any existing software vendor. All vendors mentioned are for your reference only.

While our fax server was developed as a "direct" interface to Tech-7 Systems (Tigard, Oregon) travel reservations software for sending fax/email invoices, payment reminders, broadcast advertising, etc,  and processing credit cards , it is very easy to have your own custom interface created for practically any other large system application.  

This, of course, depends on your vendor and their willingness to allow or provide customization.  The information provided here should allow any of these vendors to quickly add the ability to send email and faxes from your existing application(s).

We are supplying this information in order to allow you to use the vendor of your choice to do whatever is needed to incorporate this very flexible server into your business.


Our software processes "command files" which contain all of the information needed to send a fax and/or email.  These files are created in a specific location on your main server hard drive with a specific name.  If you have the Samba "lan manager" installed, Cybers makes it easy to "mount" a main server shared directory onto the Cyberfax server. You simply create/copy these "command files" to that shared directory or you may use ftp to quickly send the command files to Cyberfax.

These "command files" may contain multiple outgoing faxes/email so it works well for single faxes/email as well as bulk.

A 'command file' may contain any html code you wish to use for formatting including html references to images.  We use a GPL/GNU based html converter called htmldoc .  This converter program handles a large percentage of the latest html code but you should test the html code you intend to use by sending the fax/email to yourself.

Note: If you include image references for faxes you should be aware that fax machines are not capable of very good resolution and generally handle color images badly.  Faxed images should be black & white with minimal detail. 

Each fax/email 'command file' consists of header lines that tell Cyberfax what to do with it as in the example below as well as the text and html code for the fax/email. You should create a single temporary file and append as needed. When done you simply close the temp file and rename or move it to "filename.###" where filename is a predefined name (use "cyberfax" as in cyberfax.001) and ### will be a Cyberfax  job number you setup for Cyberfax using the Cybers browser program.  Cyberfax can currently do up to 50 different jobs simultaneously as described by clicking here.

You may insert several "hidden" commands into the 'command file' to tell Cyberfax what to do.

The most important hidden commands are ^#^ and ^!^ which must be placed at the top of the fax/email and the bottom respectively. If either is missing the fax will either not be sent (incomplete) or may cause one fax/email to be merged into another..

As an example, consider the following for an "Invoice" job.

The first line of a new invoice is:


Where the first 20 characters following the ^#^ are used for the fax phone number or E if it will be an email (example: "^#^E" )

If it will be an email you need to include the following lines.

^email^Subject: Booking 123456 Invoice

These 3 lines give the sender email address, who will receive it and what it is for. The "From:" should be a valid email address in case of reply. The "To:" must be the correct address to send it to.  The "Subject:" can be anything but should not be blank.

If it is a fax or email you should include the following Information line so that it can be reported on the logs:

^I^ B=reference1   R=reference2

(that is an uppercase i in ^I^)

There cannot be blanks in reference1 or reference2. Cyberfax will stop at the first blank space in each. You should buffer at least 5 characters following the last reference. Anything other than these two fields are ignored.

The end of the last page of the invoice needs a line:


(that is an exclamation)

Thats all that is needed. Please be aware that Cyberfax will not adjust your faxes to fit on a page.  It is up to your output program to generate the correct page length while taking into account any differences caused by using html code (font size & images).

Example faxed and emailed invoice 'command file':
^I^ B=123456  R=Cyberfax     
                          Example Faxed INVOICE            Page 1
Attn: Jane                                            Tour Code: ABC 
ABC Travel                                          Travel Date: 01/01/05
123 Main St                                             Returns: 01/15/05
1 night @ ABC Hotel
<form feed (control L)> 
Invoice payment stub info 
^I^ B=123456  R=EmailInvoice     
^email^Subject: Your invoice for booking 123456
                          Sample Email   INVOICE            Page 1
Attn: Jane                                            Tour Code: ABC 
ABC Travel                                          Travel Date: 01/01/05
123 Main St                                             Returns: 01/15/05
1 night @ ABC Hotel
Invoice payment stub info 

Page breaks can be done using the normal control f (^L, ASCII 12, \214\) as commonly used when sending to a printer. You should do page breaks based on a standard 8.5x11 page since most non-paper roll fax machines need this. Everything you insert into this file will be used/shown on the outgoing fax except for cyberfax commands such as the ^#^, ^x^, ^!^,  ^email^, ^P#, etc.. These lines should be ignored if you are counting the lines you are inserting.

All 'command' lines except ^#^, ^!^ and ^x^ can be anywhere inside the 'command file'. There are a number of other special commands that we have not documented but you may only need the Priority command which allows certain types of faxes to go before others. For example: You would want to use this command so that you could make invoices go before broadcast advertising.


Where # is a number from 0 to 9 or a letter from A to Z inclusive. This line can be anywhere between the ^#^ and ^!^. The lower the number the higher the priority (0 will be sent before 9).  Letter A is a much higher priority than letter Z.

Setting a Priority level on outgoing email is irrelevant.  Outgoing email is sent immediately as opposed to faxes which must wait for an available modem.

The command ^x^ tells Cyberfax not to insert html code before converting an outgoing fax.  This command is used when you pre-format your fax as a full html web page with the appropriate header tags (<html>, <title></title>, <body>, </body>, </html>). This command must be placed on the next line immediately below the ^#^ command.

Another command allows you to insert 'graphic' pages to your outgoing fax/email:


This command tells Cyberfax to look for a graphic image in its predefined attachment directory for all files beginning with the same filename as above.  You must not include page numbers or filename extensions like .tif or .pdf.  Cyberfax will determine the appropriate extension for you.  These "attachments" may contain up to 999 pages.  Each page is a separate file and is inserted wherever the && command is placed. Note that the "&&filename" command must be placed starting at the first position of a new line in the file.  This command cannot be used to insert images into a page.  It is used only to attach additional predefined attachments to an outgoing fax/email.

The purpose of the && command is to allow you to easily attach policy, warranty, insurance, or any other standard  information pages to your faxes and/or use it for broadcast advertising as shown below:  Each page in the attachment is a full page in the fax.

^I^B=jad123 R=client#
^email^Subject: Special Deals!
^I^B=kad123 R=client#
^I^B=kad123 R=client#

Currently each fax/email must be entered as above even though they contain the same basic information.  We are working on a change that will allow you to list a virtually unlimited list of receivers using just one set of commands (between ^#^ and ^!^).

If you will be using the ftp transfer from your main server to cyberfax you will need to create a small ftp script that first checks to see if the job file exists on the Cyberfax server (Cyberfax hasn't processed the previous one yet).  If the file exists you should have the script "sleep" and try again or exit.  If the file does not exist you would send the new file over to the Cyberfax server using a different name then use the ftp command to rename the file.  This will usually prevent Cyberfax from trying to process a file that hasn't been fully transmitted yet.  The "download" directory where you send these 'command files" to is defined using the Cybers admin tab, Cyberfax Configuration button. The 'variable' named udirdownup is set to the directory where Cyberfax will look for 'command files' from your main server.

If you use the Samba software to share a directory on your main server, you will simply copy the 'command files' to that directory on your main server then rename it as above. Just to be clear: When you are using Samba, you will define a directory that will be shared that exists on your main server.  You use the "Remote Servers" tab on the Cybers Fax Server screen to tell Cyberfax how to "mount" that shared directory onto the Cyberfax server.  Samba is available for a wide variety of platforms and can be configured for reasonable security so that only authorized users can access your main server using Samba.  There is also quite a lot of online documentation to help you install and configure Samba on your main server. 

You may use the Cybers Fax Server Status tab - Log History option to view the log of sent fax/email or you can setup a Cyberfax job to automatically create a log report which you can process on your main server.

The log report file 'cyberfax.up' is used for a log for all faxes/email you send and is formatted as below with fixed length records terminated with a carriage return line feed pair.  In other words, each line in the text file contains a fixed length record reporting the status of an outgoing fax.



Size (characters)

Job# 1-3 3  
Status 4-6 3 "10" = failed, "11" = Sent, others mean still processing 
Marker 7 1 always "S"
Server# 8-10 3  
Marker 11 1 always "D"
SentDate 12-17 6 mmddyy format
Marker 18 1 always "B"
Reference1 19-26 8 Whatever the B= is as shown in the example ^I^ lines above
Marker 27 1 always "E"
ErrorCode 28-42 15 Contains various messages
Marker 43 1 always "T"
TimeSent 44-49 6 hhmmss
Marker 50 1 always "U" 
TimeUsed 51-56 6 hhmmss
Marker 57 1 always "P"
PagesSent 58-60 3  
Marker 61 1 always a blank space
Phone 62-81 20  
Marker 82 1 always "R"
Reference2 83-102 20 Whatever the R= is in the example ^I^ lines above

The format is weird because it comes from the days when Cyberfax used serial communications to the main server and the marker fields were used as delimiters.

Based on the job # and status you could generate reports or other actions needed such as adding memos to history transactions saying the fax/email was sent or failed.

Cyberfax Jobs

Cyberfax can perform up to 50 different Jobs that are identified by a job number (001 to 999).  We have typically tried to separate similar jobs by using number ranges.  For example: Invoice/notices/reminders/statements related jobs are numbered from 001 to 050. Credit Card jobs are numbered from 400 to 499. Miscellaneous maintenance batch jobs are numbered from 600 to 999.  You can number them any way you choose.

Cyberfax jobs are assigned a 'type' consisting of one character of one of the following:

D Download job (Processes "command files ")
U Upload Job (Creates Log files )
T Processes "Forwarding" for incoming faxes
F Cyberfax sends faxes.  A job with this type must be active before Cyberfax will send faxes/email.
R Cleanup logs and Reboot the Cyberfax server
B Batch file processing (please contact us for more info on batch "scripted" jobs)
C Credit Card Processing. Note that the "queue number" has special meaning for this job type
400 Process credit card approval requests
420 Process request for a transaction history report
501 Settle outstanding transactions with your bank & create settlement report.
Note that you may have multiple job numbers with the same type.  For example: Job 001 type D processes "command files" named 'cyberfax.001' which contain invoices to fax/email. Job 002 type D processes "command files" named 'cyberfax.002' used for sending broadcast advertising, etc.  FYI: "D" type stands for "Download" since this job type "Downloaded" data from the main server.

Jobs are configured through Cybers Fax Server Jobs tab.

Also, if you are using the credit card processing feature and want to settle with your bank at multiple times during the day you could have Job 500 type C queue 501 set to run at 10am, Job 510 type C queue 501 set to run at 8pm.

Credit Cards

Credit Card Approval Requests

Credit card approval requests and answers (responses from your processor) are handled very similar to the way fax/email 'command files' are handled.  The only real difference is that each credit card request 'command file' contains only delimited record(s) of credit card information formatted as below.  Each delimited line in the file is a separate transaction.


Max. Size

Description of Request File Fields
RecType 2 CA=Get Charge Approval
CR=Refund (or void if transaction not yet settled)
Marker 1 Always 'N'
CreditCard# 18 Numbers only, no dashes or blank spaces
Expires 4 mmyy
Amount 10 including cents (12.53)
Reference1 16  
Address 16 Usually first 5 numbers seen in the cardholders mailing address
ZipCode 5 No dashes
ApprovalCode 6 Must have code if the charge request was pre-approved or to be refunded or voided.
Reference2 10 Will default to the first 7 characters of the request file name otherwise must have an 'R-'  prefix as in R-12345678

Each record (line) in the request file consists of fields separated with a ; (semicolon) delimiter.  You should enclose each field with the double " as well if it may contain the semi-colon character.  Example: field1;field2;field3;field4;field6;"ref1;my ref";etc..  Only fields which may contain a ; should be surrounded by quotes.

Request files are named "u*.snd" where * can be any string of number and letters you wish.  Do not use blank spaces or special characters in request filenames.  There are 3 exceptions:  (1) Do not use filenames starting with "uw",  (2)Do not use a filename that starts with the same prefix as the answer filename as described below.  (3) Do not use the filename prefix "ureque".  

The directory that Cyberfax looks to for these request files is set in the Cybers Fax Server Admin tab - Cyberfax Configuration button using the 'udircc=' variable.  Set this to the directory you have mounted on your main server or the directory where you ftp requests to, from your main server, just as you would do for fax/email 'command files'.

Answers to Approval Requests

All answers to your credit card requests are placed in a single file.  Cyberfax will create this file then your main server will process and remove/rename it.  Cyberfax will not overwrite this file once it exists and will not add additional answers to it.  Cyberfax will cache answers it receives until you have removed the previous answer file.

The Answer file is named according to the setting in Cybers Fax Server Admin tab - Cyberfax Configuration button using the 'ccansfilename=' variable.  The default is to use the filename of uii.ans.  This file is written to the same directory where requests are placed.

The Answer file is formatted as below.  This file may not necessarily contain responses to requests in the same order as requested and may not contain all responses.  You should assume that the answer file contains the "latest" approvals received.  Cyberfax automatically resends requests that are rejected in error by the processing program so occasionally you may not receive responses in the same order they are sent.


Max. Size

Description of Answer File Fields
Reference1 16  
ResponseCode 2 ND=Declined
Expires 4 mmyy
RecTypeResp 2 NA=Not Approved
CR=Charge or Refund/void approved
CreditCard# 18 Same as on request
Amount 10 Same as on request
ApprovalCode 6 To be used for future request to refund or void
Address 16 Same as on request
ZipCode 5 Same as on request
Reference2 10 Same as on request
Note that the answer file fields are delimited the same as with request files.

Transaction History Reports

Requests for a transaction history report are placed in a file named 'getccrpt.req' in the same directory as request and answer files.  This report request file has a single fixed length record formatted as below.  This record is not delimited.



Description of Transaction History Report Request Fields
BeginningDate 8 mmddyyyy
EndingDate 8 mmddyyyy
Reference1 20 Prefixed with "UX" followed by the same reference1 used for requests (or blank)
Reference2 20 Same as the reference2 used for requests (or blank)
CreditCard# 20 Same as on request (or blank)
Expires 8 Field is 8 but first 4 characters must be yymm followed by 4 blank spaces
Reserved 20 Must leave blank
Amount 10 Same as on request (or blank)

When Cyberfax gets the response to the Report request it will copy the report to the same directory used for request and answer files. The name of the report file will be xpreport.txt.  Cyberfax also archives these reports into the same directory used for archiving settlement reports as below with the name format of: "ca" plus the year as yy plus month and day as mmdd plus the extension of a unique number from 001 to 999.  Example:  "ca021105.001"  There currently is no way to view or manage these archived files with Cybers.  These reports are archived for backup purposes and a future release of Cybers will allow you to manage them.

Settlement Reports

Unlike Transaction History Reports, Settlement reports are automatically created by the "force settlement" job.  After Cyberfax has instructed IcVerify to perform a bank settlement it then requests a copy of the settlement report.  It places the settlement report into the same directory used for request and answer files with the name "xcyymmdd.###' where yy is the 2 digit year (zero filled), mmdd is the month and day (zero filled) plus a spool queue number from 001 to 999.  Each settlement will have its own spool queue file for a single date.  This report is also archived by Cyberfax with the same name except that it begins with cc instead of xc. You may use the Cybers Fax Server Credit Card Reports tab to view and delete these reports from the archive log.

Note: Transaction history and settlement reports & requests can only be done if you are using the DOS version of IcVerify.  The Microsoft Windows version does not allow third party applications to capture these reports to a fixed filename so you are forced to use the IcVerify program to manually generate these reports.  We are trying to resolve this critical automation issue with IcVerify or by using another means of forcing the IcVerify program to use a fixed filename for its report output.

Email Support: