Owners manual

Owners manual

This manual gives information useful to booking system owners, office staff and instructors. If you are a system user looking to make a booking, please refer instead to the User guide.

Information in the booking system flows from one stage to the next, reducing duplication and saving time when entering details. Where possible, the system pre-fills forms, based on what it already knows about the aircraft, your booking and so on. The block diagram below shows the key parts of the system and how information moves from one part to another.

Block diagram

For the booking system to operate, it needs to know about:

 

How to set up your booking system (two videos)  

 

When you first log in, you will see a prompt to get started by adding an aircraft.

Landing page (first log in)

Mathew Waters

Aircraft

Aircraft

The system maintains a list of all your aircraft. These can be made available to book in the booking system, and can also be displayed as a web page to give people information about an aircraft they may be considering flying. The list of aircraft is displayed by clicking the Aircraft tab shown in the primary links area:

Aircraft tab

To add a new aircraft, see Adding a new aircraft.

To view more information about a particular aircraft, click the registration in the list. This shows a summary tab for the aircraft:

Aircraft tabs

Changing aircraft details

To change the details of an aircraft, click the Settings tab. The form contains the same fields as described in Adding a new aircraft.

Bookings

The Bookings tab shows bookings for this aircraft only. It can be useful to see these if bookings need to be switched to a different aircraft, for example if an aircraft is unavailable. The page allows for bookings to be bulk-edited, by selecting all bookings and using the option "With selection...". When a booking is changed, each user affected by the change receives an email with the change and the new booking details.

Aircraft availability

Unlike instructors, aircraft are normally always available. But to allow for those times when an aircraft may be grounded, you can make it unavailable for a period of time. To do this, click + Make unavailable and complete the form. Doing so adds a new entry into the list of periods the aircraft is unavailable to book but does not cancel any existing bookings. You can view the list of periods the aircraft is unavailable by clicking the Availability tab.

Maintenance

The Maintenance tab is visible to users with either the Instructor, Office staff, Engineer or Owner role.

Aircraft Log

The Log tab shows the aircraft log which contains a full list of every flight, service, inspection and added notes. All members can view the aircraft log and can add notes to the log as described in the user guide under Aircraft log.

Mathew Waters

Adding a new aircraft

Adding a new aircraft

Note: Only users with the Office staff or Owner roles can add aircraft.

To add a new aircraft, click Aircraft in the primary links area, followed by Add a new one on the page. Fill in the details as required.

To remove an aircraft and make it no longer available, click the aircraft, then click the Availability tab. You can choose to make an aircraft unavailable for bookings for a set period, or unpublished it, which hides the aircraft from other users. Note you can still access the aircraft details via the Admin tab in primary links, followed by Content. This allows you to re-publish an aircraft if you unpublished by mistake, or if the aircraft was unavailable for an extended period (e.g. repair).

 

When adding a new aircraft, the following fields should be set:

  • Registration. To enable users to identify the aircraft.
  • Aircraft Type. Member's logbooks and training notes both contain a summary of hours on type. Set the aircraft type here, for example, EV-97 or PA-28.
  • Maximum POB. The system will apply validation when flights are booked out, one of the checks being the number of people on board.
  • Visibility. Choose which customers can making bookings and view the log.
  • Fitted with Hour Meter. If the aircraft has an hour meter, the counter values are collected for each flight. Otherwise, the total engine time is calculated using the total flight time.
  • Logged hours (how to accumulate). The aircraft total hours increase by the difference in hour meter reading or in step with the airframe. Some engines cannot be logged in this way, notably Rotax and you should check with your service manual before changing this setting.

 

To set the total hours (engine and airframe), navigate to the Log tab and click Engine update or Airframe update.

How do I record flights in members own aircraft?

One option would be to create a new aircraft each time, making it unavailable after the flight. But you might also consider just adding one aircraft with the registration "Other". When booking out, the system collects the type and registration.

 

Mathew Waters

Availability

Availability

Aircraft you add to the system are made available for bookings, but you can make them unavailable either for an extended period, or temporarily. To make an aircraft unavailable, find the aircraft in the list on the Aircraft tab, or via Admin > Content. Click the registration followed by the Availability tab:

Aircraft availability tab

Each aircraft has its own availability using a flexible system of regular hours, additional availability and unavailability periods.

  • Normal week.
    If the aircraft is available at set times through the week, define these here. If there is no regular pattern, use Additional Availability instead.
    When multiple locations are defined, you can set the schedule at each location. If you set overlapping hours in more than one location, bookings can be accepted at either location.
  • Additional availability.
    This is used to set additional one-time availability for a particular date. If the aircraft has no regular hours, or you want to change its location temporarily, this takes precedence over the normal week.
  • Unavailability.
    Use this option to make the aircraft unavailable for booking. Periods of unavailability override any regular hours or additional availability. This is useful when taking an aircraft out of service for maintenance, as it accepts a start and end date to block out time quickly and easily.

 

Note: Office staff can make bookings bypassing the availability settings for aircraft and instructor.

Unavailability

If periods have been set up already, these are listed in the table. You can make changes by clicking the time period shown in the first column.

To make the aircraft unavailable, click Make unavailable.

Make an aircraft unavailable

Overall availability

For periods when an aircraft is unavailable and known in advance, you can add the period based on the date range, together with notes that are shown to users trying to book that aircraft. Adding a period of unavailability like this is suitable for maintenance or times when repairs are necessary. The aircraft is still visible in the booking system, so users can view the notes and can see when the aircraft is expected to become available.

Sometimes you might want to hide an aircraft completely from users of the booking system. Rather than setting up a date range and adding some explanatory notes, you simply un-publish the aircraft. Typically this would be because the aircraft has been sold and will never become available.

Note: If you make an aircraft hidden it is removed from the Aircraft tab. If you need to find this aircraft again, you can find it under Admin > Content. From there, if you want to make it available again, use the Availability tab.

Make unavailable from... until

These fields are used when you want to make the aircraft unavailable for a fixed period.

Notes

Any notes you enter here are displayed to users making bookings at the bottom of the list of time periods:

Notes shown on booking form

Mathew Waters

Maintenance

Maintenance

The system can keep track of scheduled and unscheduled maintenance. Use of these features is optional; you can choose to keep paper or other electronic records instead and the other processes in Flight School Booking will work without maintenance or service records.

If you choose to use the system to track maintenance, you can configure various items on a schedule for each aircraft.

Example maintenance schedule for an aircraft

You can view the maintenance schedule by clicking the Maintenance tab for an aircraft.

The schedule lists each maintenance item (for example, "50 hour / 6 month check") and each can be due by either a due date or aircraft hours. The interval for each is programmable, as are rules about how to handle the next due hours if an item is completed earlier or later than due. A simple traffic light based system can be used to highlight items coming near their due date/hours. Reminder emails can be sent to a user in the system when the status changes.

 

 

Mathew Waters

Recording servicing

Recording servicing

This feature is only available to certain users, typically engineers and the owner can add service records.

When the maintenance feature is used to complete scheduled maintenance, this adds service entries into the log for you.

If you don't use the maintenance feature, or you want to handle maintenance yourself and simply update the log with the date of the service and total hours, you can create the entries yourself.

The process for adding a service record or setting the total hours is similar to adding a note as described in the user guide. First find the aircraft log. The quickest way to find an aircraft is from the Aircraft tab under Primary Links. But if you have some aircraft unpublished and not shown on the Aircraft tab, the best way to locate the aircraft record is to search for it.

How do I search for an aircraft?

Click the Admin tab followed by Content.

Search for aircraft

On the content screen, set the type to "Aircraft" and click Filter.

Note: You can of course type the aircraft registration into the Title field to find an aircraft by its registration. The steps above will list all aircraft in your club or school.

 

Click on the link to the aircraft shown under the Title column. This displays the aircraft tabs (Summary, Settings, Bookings, Availability, Maintenance and Log).

If you have already defined the maintenance task in the schedule you can view which items are due using the Maintenance tab. This is the best method for scheduled maintenance.

If you want to record a service that was not carried out as part of scheduled maintenance, click the Log tab to view the aircraft log.

Add service buttons

The screen shows the complete list of entries made in the aircraft log and includes flights, notes and services. To add a new airframe or engine service record, click + Engine update or + Airframe update. If these buttons are not shown on the page, you do not have access to this feature.

Airframe update

In the Notes field, add a description of the work carried out, including parts replaced for other members to view. As an example, you may wish to record whether tyres or brakes were replaced.

Check the total Airframe hours and modify if necessary.

Engine udpate

In the Notes field, record the work carried out. For example, you may have changed the oil and the spark plugs.

Record the current meter counts (if fitted) and the total engine hours.

 

Mathew Waters

Correcting aircraft hours

Correcting aircraft hours

When an aircraft is created in the system, you would normally set the current engine and airframe hours. This provides base figures which increase as each flight is logged.

If flights are not recorded in the system (logged elsewhere) you can update the total hours. Just navigate to the aircraft's Log tab and click Engine update and Airframe update. In the notes section, we recommend stating where the difference in hours is recorded. See Recording Servicing for details.

Mathew Waters

Restricting access

Restricting access

If you want to restrict customers to booking only certain aircraft, you can set permissions under the aircraft Settings tab.

Certain built-in roles always have access to view the aircraft:

  • Owner
  • Office staff
  • Safety management staff
  • Engineer
  • Instructor

 

...And other roles never have access to view aircraft information (unless the user is a member of another group):

  • Accountant
  • Lapsed member or student
  • Associate member
  • Voucher

 

By default, you can allow access by Students or Members, but you can add your own roles to the system.

Note: If you add your own roles, to restrict access you should un-tick the Student and Member options as shown below.

Separation by group

You could use this feature to group your customers. For example, if you offer Group A and Microlight training, you could create two new roles and assign your students and members to these as well. You can then restrict access to the aircraft so your microlight pilots only see the microlight aircraft and vice-versa. People can be members of more than one role, so pilots who fly both types simply have both roles ticked.

Restrict access to aircraft by group

In the example above, by un-ticking the Student and Member roles, customers can only view and book the aircraft if they also have the Group A role.

Trusted users

This feature restricts who can view and make bookings, but office staff can book any aircraft.

So you might use this feature as a way of giving certain trusted pilots access to make their own bookings, while restricting others to calling the office. To do this, create a new role called "Trusted" and assign this role to your trusted customers. Then edit each aircraft, making it visible to only the trusted group.

Non-owned aircraft

You might maintain an aircraft that does not belong to the school, and is not available for training or hire by members.

By creating a new role and making the aircraft visible to this role alone, only the few people you assign the role to can make bookings.

 

Security and privacy

When an aircraft is unavailable to someone, they cannot see it listed in the Aircraft tab, and if they are booked by the office, they can view its registration but no other details. The system hides the aircraft tabs from view (Bookings, Availability, Documents, Safety and Log).

Mathew Waters

User management

User management

The booking system maintains a list of users, classed as members, instructors, office staff and so on. This classification is defined by which role or roles a user has.

Note: Only users with the InstructorsOffice staff or Owner roles are able to search for users and add new ones into the system.

Roles are linked to a set of permissions that define what a user can view and change in the system. A user can be assigned more than one role such as Owner and Instructor. Similarly, an user with the Engineer role may also be learning to fly as a Student. For more details about the roles available, see Roles.

It is possible to add a user who will not have access to the system themselves. This is useful for people taking a trial flight, as you can enter their contact details (etc) and make the booking on their behalf. When users become students or members, you can allow them access to the system so they can view their own bookings, logbook and training notes.

Allowing your users to make their own bookings

To give a student or member access to the system, be sure to select the option "Can the user access the system". The user will set their own password using the process described in the user guide under "Getting Started".

Mathew Waters

Adding a new user

Adding a new user

To add a new user, click the People tab in the primary links area followed by + Add user.

People tab

Note: Only users with the Instructors, Office staff or Owner roles are able to add new users into the system.

It is recommended to first search the system for the user by typing their name or email address and clicking Filter in case another instructor has already created the user's account. It is not possible to merge user accounts and their associated logbook and training notes later. If the user is listed already, you can edit the user account by clicking the Edit button shown to the right of each user in the search results list.

When adding a new user, you can allow them to log in themselves or prevent them from accessing the system. Typically for "air experience" or trial flights you would prevent the user from accessing the site themselves. In this case you should leave the roles de-selected and just fill in their email address, name and a contact phone number. If the person later becomes a member or you want to allow them to make their own bookings, just search for the user and edit their account.

  • Name. Since instructors may be making bookings for users, it is recommended to use a standard form such as First and last name. This means instructors can search and find the right member quickly if they need to make a booking over the phone.
  • Email address. All the user's bookings and cancellations are sent to this email address. If the user is given access to log in themselves, they can reset their password (if forgotten) using a link sent to their email address.
  • Roles. Choose which role to assign to the user, see Roles.
  • Can the user access the system? It is not necessary to give access to users unless you want them to make bookings themselves. For trial flights, we recommend preventing access and only allowing access if the person chooses to become a student and take more lessons.
  • Contact settings. Being contactable is advantageous because it allows another member to ask for a re-arrangement of bookings and can therefore lead to higher aircraft utilisation. When the option is checked, the user's initials are shown on the booking form and their name is visible to other users (e.g. in their booking and in the aircraft log). When this option is left un-checked he user's details are hidden from other students or members. Note: User information is always visible to users with the Instructor, Office staff or owner role.
  • Contact details (address, phone numbers). The contact details are useful in case of bad weather so you (or another instructor) can contact someone booked on a training flight to cancel at short notice. Usually you can tap the user's phone number displayed on their account page from a mobile phone to phone them straight from the site.
  • Next of kin details. Record the name, address, phone number as needed.
  • Previous experience. This field details any previous experience the person may have. It is really only important for trial flights or first few lessons as it allows an instructor to tailor their lesson accordingly.
  • Membership renewal date. When the user is set as a StudentMember or Associate member, the date should be filled in. Members are notified shortly before their membership expires and if the date is not reset into the future, the user is automatically moved into the equivalent Lapsed role. Lapsed students and lapsed members do not have access to the booking system but can still log in and see their logbook. Users cannot change this field themselves.
  • Date of birth. Member's date of birth. Users cannot change this field themselves.
  • Medical renewal date. Flying schools normally require a copy of the member's medical certificate before allowing them to fly solo in their aircraft. If so, you can record the date in this field. Users cannot change this field themselves.
  • Revalidation next due. When setting up a new user, leave this field blank. This field is provided for users to keep track of the next revalidation due on their licence. The system will then generate an email reminder for them.
  • Other information. This field can be used to store other information such as licence number(s).

 

Which fields can a member change themselves?

Members can change their email address, password, contact settings, contact details, next of kin, previous experience, revalidation next due and other information. Members cannot change their membership renewal date, date of birth or medical renewal date. These are shown to the member as read-only fields and only an instructor or office staff can update them.

How does a new user set their password?

When a user is given access to the site, you can select the option Notify user of their account. This will send them an email with instructions and a link to set their password. For existing users that are changed in order to grant access, the change of Can the user access the site from No to Yes will generate an email with similar instructions.

Mathew Waters

Importing users

Importing users

If you have been using another booking system, or have a list of your students or members on a spreadsheet, you don't need to add each user manually. Instead, look for the Import from CSV button on the People tab. Using this option you can select a CSV file and import all your users in one go.

Import users button

The CSV file should be a particular format, which is explained on the import screen.

The easiest way to get started is to first create a user manually, then export the list of users in CSV format. That will give you a template which you can refer to, or change and add your own users.

Mathew Waters

Roles

Roles

The following is a list of built-in roles, but you can create your own under People > Roles. You might use your own roles to keep track of Enquiries, or group people by the type of aircraft they fly (e.g. Group A or Microlight).

Each user can be added to a group by assigning a role from the following:

  • Voucher
    This role indicates a list of users who have a pre-paid voucher for a flight, usually received as a gift. If you use the system's built in support for vouchers, it will add the role automatically. When a flight or training record is entered for a user with this role, the role is removed. This means you can see your liability in terms of vouchers sold but not yet fulfilled. To do this, use the People tab and filter by the role Voucher.
    People with the voucher role have very limited access to the system even if you give them access. They cannot make their own bookings and instead call the school office.
     
  • Student
    The intention is for the student role to be used to keep track of the current student list of the school or club.
    Users with the Student role are able to view and make bookings, book out aircraft (with an instructor), enter flight details, view their training notes and maintain their personal logbook. See also Student (Lapsed) and Member.
     
  • Student (Lapsed)
    Students
    make use of the Membership renewal date, which you can set when you create the user's account. This is useful if you charge for student membership and access to the booking system. If they renew membership, the billing system will update the renewal date for you. Otherwise, simply change the renewal date to extend their membership. If the membership lapses, the system moves the user into the Student (Lapsed) role. If you do not want to use this feature, just set a renewal date in the far future or turn off the feature under Admin > Bookings > Expire member accounts.
     
  • Associate member
    No special permissions exist for users with this role. But you may find this useful if you want to maintain a list of associate members (non-flying members).
     
  • Member
    The intention is for the member role to represent self-hirers who are full members of the club, usually with higher fees than students. They typically have lower training and flying rates (e.g. a member's lease group).
    Just like the Student role, users with the Member role are able to view and make bookings, book out aircraft (solo), enter flight details, view their training notes and maintain their personal logbook. If the Membership renewal date passes, the Member role is removed and the Member (Lapsed) role is added instead. This means members will be unable to book further lessons until they extend their membership by paying their membership fee or calling the office. If you take payments outside the billing system, edit the user's record, extending the renewal date, usually by one year.
     
  • Member (Lapsed)
    Members and associate members make use of the Membership renewal date, which you can set when you create the user's account. This is useful if you charge for membership and access to the booking system. If they renew membership, the billing system will update the renewal date for you. Otherwise, simply change the renewal date to extend their membership. If the membership lapses, the system moves the user into the Member (Lapsed) role. If you do not want to use this feature, just set a renewal date in the far future or turn off the feature under Admin > Bookings > Expire member accounts.
     
  • Engineer
    Engineers are able to add service information to each aircraft. This is done from each aircraft's page - see Entering service information.
     
  • Instructor
    Instructors have additional permissions in the system and can be booked for training flights by anyone with access to the booking system. It is not necessary to make instructors members as well. Instructors can create, change and remove users, make bookings on behalf of someone else, view the complete list of bookings and complete training notes.
     
  • Accountant
    Accountants can view the complete list of users, their personal data and their bills & payments. In addition, accountants can view the Billing tab which includes the reports, full transaction list and exported bookkeeping information.
     
  • Office staff
    Office staff have many more permissions in the system. Be careful to assign this role only to people you trust. They can do anything in the system apart from link and un-link your Stripe account.
     
  • Safety management
    People with this role can view all safety reports, including confidential and anonymous reports. They can add comments, close reports and export the information in CSV format. The owner has the same permissions, but because some reports can be made concerning staff, Office staff cannot view confidential reports nor close anything. They cannot assign the Safety management role to anyone, the only role that can do this is the Owner. If you have your own safety management staff, you can assign both this and the Office staff role, allowing them to transfer safety reports to aircraft logs and to maintenance schedules.
     
  • Owner
    As owner, you have full access to the booking system, flights and so on. You can edit any record, even those that have been "locked". Normally only one user is given this role, and just like Office staff, this role should only be assigned to people you trust.

 

Mathew Waters

Searching for a user

Searching for a user

To search for a user in the system, click the People tab in the primary links area.

Search for a user

The form shown above presents a number of ways to search for users. If you are searching for someone in particular and know their name (or part of it) or their email address (or part of it), type this in the Name or email contains field and click Filter. Typically you will use this option to find a user quickly in order to make a booking, change or cancel their existing bookings.

To view the user's account tabs, click the name shown under the Username column. This then presents the user's details. From there you can edit their details, view and change bookings and so on.

You can also use the form to search for users matching a condition, such as all users with the Instructor role.

Mathew Waters

Instructors

Instructors

Instructors are people with the role Instructor.

To create a new instructor for booking by members, or to change details see User management.

 

Mathew Waters

Availability

Availability

To view and make changes to availability, click the Availability tab shown in the instructor's tab set. To change your own availability, simply click your name shown top right. To change another instructor's availability, search for their user account using the People tab.

Availability tab for an instructor account

Each instructor can set their own availability using a flexible system of regular working hours, additional availability and unavailability periods.

  • Normal working week.
    If the instructor works regularly, define the hours of availability. If not, use Additional Availability instead. 
    When multiple locations are defined, you can set the schedule at each location. If you set overlapping hours in more than one location, bookings can be accepted at either one.
  • Additional availability.
    This is used to set additional one-time availability for a particular date. If the instructor does not work regular hours, they can set their availability this way.
    If an instructor is working in a different location than normal, any additional availability overrides their normal working week.
  • Unavailability.
    Use this option to make the instructor unavailable for booking. Periods of unavailability override any regular hours or additional availability. This is useful when taking vacation, as it accepts a start and end date to block out time quickly and easily.

 

Normal working week

Normal working week

To make a change to the regular working week, click the day you want to change. If you want to set availability for all days, week days, or weekends, it does not matter which day you click on. In the screen that follows, choose whether to apply the selected hours to the specific day, weekdays, weekends or every day. Next choose which time slots you want to be available for and click Save.

Additional availability

In the example, Izzy is only normally available on weekdays. But for one Saturday she is available as cover for another instructor. To set this additional availability, click the button + Add availability.

Setting up additional availability

Unavailability

To make an instructor unavailable over a period of time, such as for a vacation, click the button + Make unavailable.

Note: When an instructor is unavailable long-term or indefinitely, edit their user account instead and remove the Instructor role.

Unavailability form (for taking vacation)

Using the form, select the first day the instructor is unavailable. By default the time is midnight on the start of the day, but can be changed if you wish to remain available for the morning for example. Set the end date and time and add notes if you wish. Notes are not shown to members but are visible to other instructors and office staff. The notes can be a useful reminder for why the time was blocked out, e.g. "Dentist appointment" or "Taking car for service".

Mathew Waters

Locations

Locations

If your school operates from more than one location, the system will prevent people from booking - say - an aircraft in one location and an instructor in another.

Times are displayed in local time in your system's time zone (unless you have chosen to show all times in UTC).

To set up your locations, go to Admin > Bookings > Locations.

To configure when and where aircraft and instructors are available, see Aircraft availability and Instructor availability.

Customers making their own bookings can choose a location that suits them, and the system will only show availability for that location. They see a simplified form, with simply "Available" if a time slot is available for them to book. For example, a student training at Kemble sees the following:

Simplified booking form

Instructors and office staff may want to view bookings in all locations. In this case the form changes to show the location name where a resource is available:

Office booking form

 

Mathew Waters

Safety reporting

Safety reporting

The system allows people to submit safety reports. To configure this feature, see Admin > Safety reporting.

A safety report collects the following information:

  • Name and email of person submitting the report (or can choose to report anonymously)
  • Date and time
  • Title and full details
  • Location
  • Reason for the report (configurable in Admin)
  • Aircraft and phase of flight
  • Contributing factors (configurable in Admin)
  • Injuries, Damage (configurable in Admin)
  • Frequency of occurrence
  • Suggested action

 

In addition, when a report is submitted as part of adding flight details, the report is linked to the flight record. This means the departure, destination, POB etc. are recorded without needing to re-input the same information.

Once a report has been submitted, its access is restricted and can only be viewed or changed by certain people.

Group Access
General public Cannot view any reports. Can only submit if you allow them to under Admin > Safety reporting.
Owner View, edit or close any report (incl confidential reports). Add any user to circulation list.
Safety Management Staff View, edit or close any report (incl confidential reports). Add any user to circulation list. Receive notifications when reports are submitted, updated or closed.
Office staff View open and closed reports, except for confidential ones. Can edit own report until first update. Can access settings under Admin > Safety reporting.
Students, Members, etc. View own reports plus open reports (except confidential ones)
Additional users added to circulation View and add comments

Using the settings under Admin > Safety reporting you can choose who can submit safety reports (disabled, staff only, anyone who can log in or everyone).

Notifications

When a new report is submitted, everyone in the Safety Management Staff role are notified by email. The originator also receives a confirmation email if they are logged in. No emails are sent to the general public because open systems are often abused by spammers submitting other people's email addresses.

Note: Only the Safety Management Staff role is notified when a safety report is updated or closed.

Users are able to unsubscribe from safety notifications, but still remain in the Safety Management Staff group. This may suit people who regularly check the list of reports for any new ones, but do not want to receive a notification when the report is submitted or updated.

Adding comments

Anyone with access to view an open safety report can also add a comment to it if they wish. Comments are visible to anyone with access to view the report itself.

Additional circulation

The circulation can be expanded to other users who cannot otherwise view the report. This can be useful when a report is confidential (visible to the owner and safety manager) because additional named users can be added to the circulation. These additional users are notified when the report is updated or closed just like the Safety Management Staff group, but they do not inherit extra rights to edit the report themselves or to close it. People would typically be added to the circulation list in order for them to comment on the report while it remains confidential.

Closing a report

Only people in the Safety Management Staff or owner roles can close a report.

Once a report is closed, the report is no longer shown in lists, but the original link to the report is still valid, so people can still revisit a report from a link they received by email.

Mathew Waters

Billing

Billing

This page describes the main Billing tab in the system. If you are looking for information about how to set up the system see Admin > Billing.

The integrated billing system is simple to set up, yet is designed to be very flexible and powerful. It can take care of all your invoicing and card payments (with little or no work from you). It chases up customers for non-payment automatically, and gives everyone their own Bills & payments tab, where they can instantly see exactly what they owe or the amount still left to spend in their account. It integrates with Xero, QuickBooks and Sage.

Why use our billing system instead of monthly invoices?
  • Fully automated invoicing and payments, no more messing about with paper invoices or working out how much to charge.
  • Much improved cashflow. No more waiting for cash your business could be using.
  • Customers love seeing their invoice immediately (perhaps this is unexpected!).
  • Monthly bills can be large amounts; this might make them reconsider making their next booking.
  • Save time by automating your bookkeeping.

 

The Billing tab shows the balance for each customer with a transaction in their account. The balance is split to show the amount overdue separately from their total balance.

You can use this page to get a quick view on the amounts outstanding. The page shows the highest debt at the top, though zero and on to any pre-paid accounts at the bottom as shown in the example:

Billing tab showing balances for some students

The rows are highlighted as follows:

  • Red: Customers with overdue balances
  • Amber: Customers with a debt amount, and no stored card details
  • Green: Customers with a debt and stored card details

 

To view a customer's account in detail, click their name in the first column. From the customer's account page you can do things like add invoices, credits, make payments (if the customer is sitting with you) or just record their card details for future payments.

Mathew Waters

Customer accounts

Customer accounts

This page describes the customer's Bills & payments tab from the point of view of the school (eg owner, office staff or an instructor). If you are a customer, please see Bills & payments in the user guide.

If you have turned on the billing system, all your customers will see their own Bills & payments tab in their account when they log in.

Additional options are available when viewing the customer's Bills & payments tab as office staff. For example, you can manually create an invoice, credit note, or record payments received outside Stripe using an adjustment. To find out more, see Manual entries.

You can also set the customer's price group (which can also be done from their Settings tab). This defines prices they will pay for aircraft hire, training and regular fees such as membership.

Viewing a customer's Bills & payments tab as office staff

When you set a price group for a new customer, any membership fees are prorated to cover the remaining period until the next membership fee is due.

When you are new to the system and your customers have already been invoiced for membership fees, the situation is more complicated. To find out how to migrate customers, see Existing customers.

Mathew Waters

Existing customers

Existing customers

If you are moving to Flight School Booking from another system and have customers who have already paid membership fees, setting up their billing account involves a few more steps than for new customers.

We'll assume you have already defined a price group for students and have created a student user in the system. If you have not set up a price group for students yet, see Admin > Billing > Price groups.

All new users are created on the DEFAULT price group, so the student will not have any membership fees so far.

Migrating customers: choose their price group

Click Change price group to choose which price group this customer will be using.

When choosing a price group you can set the date at which the prices are effective. Typically you would leave this set to "Today".

What are the other options for?
  • Today
    Strictly speaking this is also a backdated change, and any invoices for flights taken today are credited and re-invoiced at the new rate.
  • A date in the future
    If the customer can be safely left on your standard prices until the future date you can choose it here. This is suitable for a defined "go live" date that coincides with when membership fees are normally collected, or when you agree with a customer they will become a member on a specific date in the future and start paying fees from then.
  • A date in the past (backdated change)
    Normally not used. If a customer has been on the wrong price group for a number of days, you can back-date the change and the system will credit any flights, training sessions and so on before re-invoicing at the rates defined by the price group you choose.

 

The system offers an option to set the customer's opening balance within the first six months of using the billing system. This automates the process of onboarding existing customers who may have an outstanding or pre-paid balance with you.

When a price group includes membership fees, an invoice is created to cover the remainder of the period until the next due date. (Due dates are defined in the price group under Admin > Billing > Price groups).

Migrating existing customers is easy because you can set their balance when setting their price group.

Opening balance

The system offers a simple way to migrate the customer's balance. This option is only available when first setting the customer's price group and only for a few months after the billing system is turned on.

When setting up an existing customer, you will need to know their up to date balance. Therefore you should make sure you have already accounted for this in your existing system, whether it be a simple spreadsheet or a full bookkeeping package. If the customer has recently made payment, check this has already been accounted for to ensure you have an accurate balance.

In this example, the customer has pre-paid for a block of flying lessons. For people with an agreed number of hours, work out the balance as:

    balance = (flying rate on the price group) x (number of hours remaining)

When the price group is assigned, the system invoices the customer (silently) and applies a credit for the same amount. The invoice allows the system to keep track of the period the customer has paid membership fees for, and the credit reverses this transaction financially. The opening balance hides these previous entries from your customer's bills & payments tab.

Migrating existing customers is easy because you can set their balance when setting their price group.

 

 

Mathew Waters

Manual entries

Manual entries

There are a few different types of transaction you might want to add manually to a customer's account. Most are only available to office staff and the school owner, but instructors can add and edit draft invoices.

To add a transaction to a customer's account manually, first find their Bills & payments tab. Then click one of the manual entry buttons Invoice, Credit or Adjustment.

Action buttons in Bills & payments

It is important to understand the differences between invoice, credit and adjustments to prevent problems later on when bookkeeping. Invoices and credits both affect your profit and tax, so only use them when you are selling or returning something. When a customer pays using Stripe the system will take care of the payment for you. But if you accept payments outside Stripe you can add an "adjustment". This transaction affects the customer's balance and your assets. To set up alternative payment methods such as cash or bank transfers, see Admin > Billing > Account codes.

Invoice

The system will create invoices itself for flights, training (including ground school) and for regular payments such as membership fees.

You or an instructor might want to add an invoice manually if a customer wants to purchase something else from you, such as a knee board, pilot's logbook, charts or a headset. If the products have not been set up already, see Admin > Billing > Shop.

To sell a shop product to an existing customer, follow these steps.

  • Find the customer using the People tab.
  • Click the Bills & payments tab.
  • Click the Invoice button and start typing the name of the product.
    If you are selling something that has not been set up as a product, type the word CUSTOM (in capitals). This allows you to create any invoice you like, note you will need to set the correct tax and account codes. Where possible, create an entry in the Shop to reduce coding errors.

 

The quantity is accurate to five decimal places, which is useful when selling things like time (in hours) or fuel (in litres or gallons).

When you have finished, you can either save the invoice as a draft, or finalise it for payment. If you are working on an invoice over a period of time you may find it worth saving a draft invoice, which you can add to later. Otherwise, check the amount(s) and you can add the invoice to the customer's account for payment. You can still make changes or delete the invoice for a certain time. The rules for these are:

Condition Can delete? Can edit? Can void? Can reverse?
Customer is unaware of the transaction YES YES   YES
Invoice link has been emailed     YES YES
Customer has viewed the transaction       YES
Transaction has been exported (CSV, Xero, QuickBooks etc)       YES

Credit

Credits are the reverse of invoices; you can think of them as invoices with a negative amount to pay. Just like invoices, credits affect your profit and tax liability.

There are two methods of creating a credit on someone's account. When the credit relates to an invoice you should credit from the invoice itself. This is most likely a dispute or a correction of an invoice amount. But you might also use a manual credit when a customer makes a pre-payment for a package.

Disputes or corrections

To credit back a specific invoice, find the invoice itself first, and use the Reverse button. It is better to credit this way because

  • The reversal form highlights any previous credits for the same invoice, ensuring you do not over credit.
  • The correct tax and account codes are copied from the original invoice.
  • You - or someone - else can easily tell what the credit was for, and can follow a link back to the original invoice.

Pre-payment discounts

If you offer training packages at discounted rates such as a 15 hour pilot course, you should add a credit as described in Courses / Training packages. Adding a credit like this reduces your tax liability in the short term.

 

Adjustment

An adjustment represents a cash or card transaction that did not go via the billing system. For example, if the customer made a payment to you using cash, your own card machine, or a cheque, they will want to see the payment recorded in their account. To do this, add an adjustment.

Adjustments are also used if you are refunding the customer from outside the system. For example, if you give the customer cash, cheque or transfer money to their bank account or card. In this case, create a record of that transaction as an adjustment.

To record these kinds of transactions you will need to have already set up the different payment options as accounts under Admin > Billing > Account codes.

Opening balance adjustment

An opening balance is a special type of adjustment. In normal circumstances, you will not need to add opening balances yourself. The system handles adding an opening balance record the first time you change your customer's price group. But if your customer pays your standard prices you may leave them on the DEFAULT price group and set their opening balance as needed.

When setting an opening balance, any adjustment necessary is made to arrive at the balance you specify. In addition, older transactions are archived and are not visible to the customer viewing their own transaction history.

By adding an opening balance, even if zero, you are confirming to the customer the amount in their account as you move them from an older system to this one. This is important because customers will want to know where they stand and will rely on the list of transactions to tell them how much they owe, how much to budget or when they need to make another payment.

 

Draft vs Finalised invoices

When you create an invoice or credit manually, you will see they are created as drafts. These do not appear on the customer's account and you can continue to make changes or delete them. Once you "finalise" the transaction, it is moved into the customer's account and they can see it. Once finalised, you can no longer edit it but you can of course reverse any invoice with a credit and likewise any credit with an invoice.

Invoices created by the system are finalised straight away. This means when adding a flight, you can view the invoice immediately and take payment.

Mathew Waters

Cash payments

Cash payments

Some customers might want to pay by cash or bank transfer to your account. The system handles this too, but unlike Stripe payments, it requires some time from you to add the amounts received into their account.

In this example, Sarah Smith is a customer with an invoice to pay.

Outstanding balance shown in customer account

The customer has paid the full amount as cash, so we need to record the amount received in their account. Click Adjustment.

 

Choose the appropriate options on the adjustment form. Check the amount at the end, unlike invoices and credits there is no draft for adjustments, they update the customer's account immediately.

Record a cash amount received

If you do not have the appropriate account shown under Accounts code, set this up first under Admin > Billing > Account codes.

Mathew Waters

Courses / Training packages

Courses / Training packages

A lot of flying schools offer students the option to purchase reduced training rates for an up-front payment. For example, as a school you might offer a 5% discount on student training rates when a block of 10 hours is purchased.

From a tax perspective the "purchase" of a package is a pre-payment and is not liable for VAT at that point. Cash flow is improved because you will only be liable to pay VAT once the flight has been invoiced.

The following describes how best to set up the system when a customer buys a package. As an example, the standard hourly training rate for students is £180. When a student purchases a block of 10 hours, instead of the normal charge of £1,800 we charge £1,710 (a 5% discount).

To take payment, do not create an invoice! Instead, the customer makes a payment of £1,710 using the Make payment button in their Bills & payments tab. If you prefer to take payment direct into the bank, record this from their Bills & payments tab by adding an adjustment once the payment has reached the bank.

Next add a credit to their account from their Bills & payments tab. In this example the student will be invoiced a total of £1,800 once the 10 hours have been flown, so the difference of £90 (1800 - 1710) should be added as a credit. The credit should be made with matching VAT and accounts codes as the training rate set up under Price groups.

If you have a fixed discount (eg 5% when buying a block), you can use the formula below to work out the credit amount to add:

C = d * P / (1 - d)

Where …

  • C is the credit amount
  • d is the percentage expressed as a fraction, eg 5% would be 5/100 or 0.05.
  • P is the amount received from the customer.

 

Tip: Avoid mistakes by checking the credit amount feels about right. It should be a small fraction of the total payment!

After adding the credit, the student's balance will be higher and they can fly on the standard student prices.

Mathew Waters

Refunds

Refunds

The process for refunding is two steps.

First, you should issue a credit note that itemises and describes what you are refunding for. The credit also contains the tax amounts, and if you are registered for VAT you can claim back this amount from your tax authority. You can add credits manually, but the most common method is to find the invoice first.

Each invoice can be credited back using the Credit button

To credit some or all of an invoice back to a customer, click the Reverse button shown above the invoice. This creates a credit with all the same tax and accounts codes.

Next, you can try to refund back to the customer's card if they have used the billing system to make payments. Look for transactions of the type Receipt. If not, or if the last payment is over 90 days old, you will need to send them the money yourself and add an adjustment to their account manually (see Manual entries).

Assuming there is a recent receipt listed, click on it to view the details.

Refund button is shown above a receipt

Click the Refund button. You can refund all or part of a payment, the system will keep track of when a payment is fully refunded.

Refunds you send direct from your Stripe account (eg the Stripe app or web page) are also reflected in the customer's account.

Mathew Waters

Bookkeeping

Bookkeeping

Flight School Booking's billing system integrates with the most popular bookkeeping packages. Configure the link at Admin > Billing > Bookkeeping.

The link to Xero, QuickBooks or Sage takes a lot of the work out of bookkeeping because the system keeps track of which transactions have been reported and which have not.

If you use another package, you can use the "Accounting summary report" under Billing > Reports, which provides the same information in a form you or your accountant can manually enter.

Mathew Waters

Reports

Reports

There are a number of financial reports available from Billing > Reports. These are visible to users with the Accountant or Owner roles.

  • Accounting summary
  • Sales and adjustments by accounts code
  • Sales by tax code
  • Sales by customer
  • Sales by aircraft (hire only)
  • Sales by instructor (training or ground school)
  • Sales by product
  • Payments processed (Stripe)

 

Report options

All reports can be run over a date range as shown:

Accounting summary report

Links

Look out for links in the reports. These allow you to drill down and investigate which transactions are included in a figure.

Accounting summary

The report shows a "manual journal" which can be entered into bookkeeping software to represent the sales and payments in the period. If you are using an integration with one of the supported bookkeeping packages this information is being sent automatically overnight. But if you use another less popular package for your accounts you can still enter the summary transaction instead of copying every invoice, credit and transfer. To find out how to enter the summary transaction using the information in this report, see Manual data entry.

Some bookkeeping software takes charge of the tax amounts and therefore introduces small rounding errors because Flight School Booking calculates tax at line level. To ensure the books are correct and agree with Flight School Booking, there is an option to Add adjustments for tax at line level. If your bookkeeping software allows you to specify the tax amount you can leave this turned off, otherwise turn the option on. This tells Flight School Booking to calculate the tax amount based on the total net sales per account and tax code. Where there is a difference between this and the totals from line level, the app will modify the figures slightly, adding additional lines at no tax to force the bookkeeping package into agreement.

Sales and adjustments by accounts code

This report shows a breakdown of net sales by accounts code. Net sales are the total income generated (after credits and tax taken off) in each account code.

The report also shows any transfers to other account codes such as opening balances, cash and direct to bank payments.

Sales by tax code

Shows the net sales broken down by tax code.

Sales by customer

This report shows the net sales broken down by customer with the highest income first in the list. This can be useful to show your best customers in the period.

Sales by aircraft (hire only)

When the system generates invoices for flying, it tags each with which aircraft was used. This report breaks down the net sales by aircraft, not including any flight training, circuit or landing fees. If your student prices for aircraft hire include the training element, this report is not going to be very useful. But if you separate out the aircraft hire and training rates the report will give a meaningful breakdown of sales value by aircraft.

Sales by instructor (training or ground school)

Invoices for flights with an instructor or ground school include information about who was instructing. This report breaks down net sales by instructor. Note another report under Training > Reports which shows a breakdown of number of training sessions, and total hours by instructor and accounts code.

Sales by product

This report shows a breakdown of net sales by price group or product.

Payments processed (Stripe)

This is a simple list showing payments processed by Stripe:

  • Payments
    Total card payments made by your customers using Stripe, displayed as a positive amount.
     
  • Refunds
    Refunds you have made using Stripe, or disputed transactions settled in the customer's favour are shown as a negative amount.
     
  • Stripe fees
    Stripe fees vary by country and by the cardholder's country. For each card payment, Flight School Booking records the fee amount. This is shown as a negative amount.
     
  • Platform fees
    If you are using the Gold Plan there are no platform fees. These are fees charged by Flight School Booking on card payments for online voucher sales while on the Silver Plan. Just like the Stripe fees, these are displayed as a negative amount.
     
  • Net to bank
    The total of all the above figures is the net to bank amount. This is the amount you will receive from Stripe for the period of the report. Since Stripe make payments according to the schedule you have set up with them, the amount is a guide for the period and not the actual deposit amount on a particular date.

 

Mathew Waters

Document storage

Document storage

Document storage is available for you to upload files and associate them with a user account, group of users or an aircraft.

In addition to storage, the system maintains an expiry date for each document, and displays a colour coded list in a customer's Summary tab. This can be useful for checking (for example) you have their latest pilot licence, medical and signed agreements stored. You can configure the system to prevent members from booking out if any key documents are expired.

You can upload files such as PDFs, images and other documents. They attach to people, aircraft or a shared area.

To get started, first turn on the feature in Admin > Document storage.

User documents appear in a Documents tab in their account. This tab displays shared and aircraft documents too, so a customer can be directed to check their Documents tab for all relevant documents they might need.

User documents are available in their account

Users you have allowed to log in can view the documents you have stored in their account page, plus any shared documents you have made available to groups of people.

Shared documents are a special case where you can also pick groups of people. Upload and manage your shared documents from the People > Documents tab. You might want to use this area for documents such as Club rules, Airside rules, and Membership forms for download.

Shared documents are managed via the People tab

You can even upload from your phone, so for example if you need to add a temporary membership form to someone's account, you can tap Upload and choose the camera.

Aircraft documents

For aircraft, you could consider uploading its insurance, permit, certificate of registration, radio licence, checklist and handbook. This makes the documentation available to pilots and students. Should they be asked to produce it, they can simply log in and view the documents on their phone screen.

Aircraft documents work a similar way to user documents, they appear on each aircraft's Documents tab and everyone with access to the aircraft can view them.

Aircraft documents

Security & privacy

Users can view documents linked to their own account or to any aircraft, but nobody else's. Instructors, office staff and the owner can view, edit and delete any document.

When you upload a new document into a user's account, if no expiry date is set, it is stored for an additional 2 years 6 months after activity stops for that user. That means once the user stops making bookings, flying or receiving invoices, the system respects the general principals of GDPR and automatically deletes the associated documents, which may help your own compliance. The period chosen satisfies the CAA requirement to maintain training records for two years, allowing students to transfer schools.

You can also find new Documents tabs under Aircraft and People. These list all documents and of course you can search using the filter.

Mathew Waters

Messages (incl. Newsletters)

Messages (incl. Newsletters)

The platform provides a system which you can use to keep in touch with your customers. The system was designed to send newsletters, operational and safety messages.

You create a message as a new content item. Once done, you decide the group(s) of people to receive it.

Why send newsletters?

A regular newsletter keeps people in touch with what is happening at the school. You may find the number of bookings increases as people are reminded to fly, especially if they have "dropped off the radar" and need a nudge to bring them back! As an example, the newsletter could contain things like:

  • Any changes to club rules.
  • Information about existing and new aircraft.
  • New instructors.
  • Recent GST passes or first solos.
  • Related aviation news.
  • Organised trips.

 

Note: Only Office staff can create messages.

To create a new message or to view previous messages (including work in progress), click the Messages tab.

The messages page displays a list of draft, queued and sent messages. If you want to work on a message you have not yet sent, you will find it listed as a draft.

To create a new message, click the button + New message. The following fields should be set:

  • Subject. This is the subject line of the email.
  • Body. The body text of your message. You can use the formatting buttons at the top of the edit box to choose text styles, insert images and links. When adding images, make sure the image is already formatted to 650 pixels wide. This size works well in email.

Scheduling

You can write a message ahead of time, and you don't have to write it from beginning to end: you can save your progress and come back to it later. The status column shows whether the message has been sent: it becomes "queued" and later "sent" when it is sent. The message is not published online, it is only visible to office staff in the system.

Note: Messages and any attached files are stored for twelve months and automatically deleted.

If you want to leave the message as work in progress and finish it later, you can find it again from the Messages tab as described already. To make changes to the message, click the link to the message followed by its Settings tab. To delete a message, click its Delete tab.

How do I send a test email first?

When the message is ready, we recommend sending a test email first to check it looks okay.

To do this, click the button marked + Send message shown above the content tabs. On the next screen, choose Send a test message and fill in your email address.

Click Send to send the message to this single address. The message remains unpublished and is only sent to the address you specify. You can view the email on your device or computer to check it looks good before sending to your members.

How do I send the message?

Choose Send to ... and choose the groups you want the newsletter to be sent to. For example, you might want to target the message toward current students or members.

You can schedule the message to start sending at a specific date and time. The system defaults the time for you and avoids sending outside normal office hours.

Once you're ready, click Send and the message is queued for delivery to all users who have one of the roles selected. Delivery starts shortly after the time you choose and continues until all emails have been sent. A new tab labelled Sent to appears to show who it was sent to.

In what format are the emails sent?

Emails are encoded as HTML, which allows you to include images, styled text etc. There is also a plain text version of the email, which is included for email programs that do not support HTML mail (or have this feature disabled).

Example email received from the system

Can people see each other's addresses?

No.

Each email is sent individually to the recipient with their address in the "To" field.

Who is the sender?

All emails are sent from a mailbox that does not receive incoming mail ("no-reply" at your Flight School Booking subdomain). All the emails are digitally signed to improve chance of successful delivery. (We use DKIM and SPF records for this).

Where do replies go?

You can choose whether replies to your message will be to your school address or to your own.

When the message is sent, the "Reply-To" header is set. Most email programs respect the reply-to header, meaning if anyone relies, their email will use your address for the recipient, and you will receive replies to the email address specified in your account settings.

Very few email programs ignore the Reply-To header, but if someone replies to the no-reply address, they will receive a failed delivery message to let them know.

Can people unsubscribe?

People with no specific role (the "everyone else" group) plus lapsed students and lapsed members can unsubscribe from any message. But for your current members and students, delivery depends on the type of message. Operational and safety messages are mandatory and will be delivered regardless of whether the user has unsubscribed from newsletters. Newsletters on the other hand are opt-out, and your users can unsubscribe.

Each newsletter contains a unique token which a recipient can click on to unsubscribe instantly. They do not need to log in first. The link is designed to allow them to do this with the minimum of effort and should reduce the chance of people flagging your newsletter as spam.

If a customer unsubscribes by mistake or later changes their mind, they re-subscribe from the Settings tab in their account page.

Customer's wishes should be respected and once someone has unsubscribed, they should not be re-subscribed without asking their permission. It is best to leave the notification settings to end users to manage themselves.

Mathew Waters

Admin

Admin

Each new booking system is installed with defaults set to get up and running quickly. This allows you to test the system out with the minimum amount of time invested. This and other administration pages are available by clicking the Admin tab as shown:

Admin tab

As you can see, the Administration page simply links to the following pages:

 

We suggest just using the system to make a practice booking to start with. You could then book the flight out, record the flight details and some training notes. Once you're happy the system will work well for you, please take some time to check the settings are correct.

Mathew Waters

Plan and payments

Plan and payments

This page is only available to users with the Owner role. It shows the payment plan the booking system is currently on, plus a history of all previous payments for bookkeeping purposes. To reach it, use the Admin tab.

Payment plan

To view each invoice, simply click the link in the Reference column.

When operating in trial mode, you will instead see the option to make your first monthly payment.

Mathew Waters

Logo and colour scheme

Logo and colour scheme

Use the Logo and colour scheme option to change the look of your site. You can change the logo displayed in the top left corner as well as the colour scheme. If your club has its own logo or branding style, you may wish to customise your booking system.

To customise the site, click the Admin tab followed by Logo and colour scheme.

Logo and colour scheme

Changing your site logo

You can change the logo by uploading a new one using the Choose file button in the Logo section.

Use the Choose file button to upload your own logo. It is a good idea to prepare the logo first using whatever image editing software you normally use. A PNG format image with transparent background and white foreground works well, with a size of 160 x 160 pixels. For the ultimate image quality, use an SVG format image. This image format does not use pixels, instead it defines an image using vectors which can be scaled up to any size.

Changing the colour scheme

You can choose one of the built-in colour schemes, or you can manually set your own colours using either the HTML colour or the colour picker. You can do this for elements such as header, background, link and text colours.

Once changes have been made, click Save to make the changes permanent.

Mathew Waters

Basic settings

Basic settings

Use Basic settings to set the name of your site and your email address. Note you can also change the logo displayed in the top left corner using the Logo and colour scheme option.

To reach this page, click the Admin tab followed by Basic settings.

  • School name. This is displayed next to the logo in the top banner and appears in emails sent from the system.
  • Email address. Emails are sent from the flightschoolbooking.com domain and are digitally signed (DKIM) to improve delivery rates. The address you specify here sets the "reply to" address. Anyone replying to an email from the system will send replies to this address. You may wish to use an unmanned address such as "do-not-reply@..." or you might want to have all replies delivered to an email address in your office. Since these may often be related to bookings we recommend using a real email address to ensure you receive them.
  • Website. This is displayed to your customers on vouchers. There is no need to use the full http or https://, just use your web address that your customers will recognise, for example "acmeflyingclub.com".

 

The Locale section is used to select your country and the first day of the week. This makes a difference to how numbers and currency amounts are displayed.

Location & time zone

The system takes into account your time zone when presenting flight times. For example, if you are based in UK, choose London so all times are shown in UK local time. You can also choose UTC at the bottom of the list if you refer to all times as Zulu, but note students usually prefer to deal in local time, especially when making bookings.

The location name is transferred to personal logbooks and should be used to identify the aerodrome. You can use either the name or four letter ICAO code.

There are latitude and longitude fields which are used to determine the sunrise and sunset times. These times are shown beneath the booking form and can be useful for students and members when booking weeks in advance. The system can calculate these times for any location on Earth and any date in the future.

Mathew Waters

Bookings

Bookings

This page is used for settings that apply to bookings. The default settings for most will be adequate, but you will probably want to change the time slots available to bookings.

  • Time slots available for bookings and the length of each time slot.
  • Maximum time an aircraft can be booked without an instructor.
  • Maximum number of days in advance a booking can be made.
  • How to handle cancellations.
  • The number of days grace period before student and member accounts expire and become 'lapsed'.
  • Template emails for booking notifications (confirmation, cancellation, changes, reminders, membership expiry, revalidation and medical reminders).
Mathew Waters

Locations

Locations

If you operate from more than one airfield, you should set up a list of your locations under Admin > Bookings > Locations.

Doing so means you can set availability of aircraft and instructors in each location.

Setting locations for your airfields

To set up Instructor availability, see Instructors > Availability. Similarly for aircraft, see Aircraft > Availability.

Mathew Waters

Booking out

Booking out

Flights are booked out just before the start of the flight. Pilots record the aircraft, persons on board and the estimated departure and return times. If no flight details are added to book the flight back in, the system generates a notification to the person who booked the flight out. This reminder is sent some time after the estimated return time, configurable in settings.

To allow for cases where there is no network connection at the airfield, pilots can book out early up to a maximum number of hours you specify in Maximum hours early. The estimated time of departure should be changed to the best estimate of when the flight will commence.

To allow for cases where pilots may have forgotten to book out, you can allow them to book out for a time in the past. Pilots can then set the actual departure time up to your setting for Maximum hours late. It is of course not recommended, but the setting allows for mistakes to be made. You may wish to enforce a more strict setting of zero.

Mathew Waters

Flight log and aircraft

Flight log and aircraft

The settings for the flight log define the units to use when displaying airframe and engine times in lists, the default taxiing times, home airfield location and out of hours notifications.

Pilots are responsible for ensuring the accuracy of information entered such as the flight start and stop times, engine hours and airframe hours. To aid, the system uses the engine hours together with the settings for Default taxiing time and Default time resolution to fill in the airframe duration for pilots. This only works if there is a good network connection while the pilot is filling in the flight details. Pilots should always check the times they are submitting.

The home location should be set to the name of your airfield (as you would record it in your logbook). This is used to default fields such as the place of departure when booking out.

If you operate any flights outside airfield operational hours, your airfield operator might require a list of these flights for billing or logging purposes. If so, you can fill in the details under Out of hours and the system will notify the email address you choose just after the start of operational hours. You can edit the template email sent to this email address to suit. If you want to check the content of these emails, you could have them delivered to yourself, then forward it to your airfield operations later.

Mathew Waters

Safety reporting

Safety reporting

This page is only available to users with the Owner or Safety Management Staff roles. It shows the settings for the safety reporting system, including the option to turn it on or off. To reach it, use the Admin tab.

Admin > Safety reporting

System availability

Normally the system will be made available to anyone who can log in, so they can report on safety related issues. We do not recommend making the system available to the public unless you need to, because despite our anti-spam technology, inevitably some gets through.

Confidentiality

First off, anyone reporting without a log in to use the system will be classed as the public. The public are treated slightly differently because the system cannot authenticate their name or email address. Any reports submitted by the public are always treated as confidential initially, meaning they are only visible by staff. They also receive no email confirmation of the submitted report.

Note: The general public cannot see any existing reports, and they can only submit a report if you explicitly allow it.

For people with a log in, you can allow them to choose between submitting their report confidentially or in the open. Confidential reports are only visible to staff, but open reports can be viewed by anyone with a log in on the system. When using this setting, be respectful of the users choice to report confidentially by leaving the report visible only to staff. If you need to add anyone to the circulation list, be aware the originator may not be expecting it to be shared in this way, you may want to check with them first!

You can also remove this choice from the user's form, forcing all reports to be submitted privately to staff only, or made in the open and visible to other users who can log in. When reports are submitted privately, the originator is not choosing to report confidentially and you can use your own judgement as to whether the report should be made visible to other users in the interests of safety.

The default setting it to send reports privately. You may decide to leave the system this way, and triage the reports, making some visible but not others.

Making reports visible to other users may improve safety by keeping people informed. For example, if a pilot checks the recent safety reports for the aircraft they have booked, they may see that someone reported low tyre pressure. This could lead them to double-check the pressure where they might only inspect visually. It could be that the tyre has a slow puncture and although not an issue for short flights, an overnight rental could lead to the pilot returning with the tyre pressure too low. It also helps pilots see patterns developing, for example one aircraft is more regularly being topped up with oil.

Recorders

There are two built-in recorders for "Injuries" and "Damage". Each recorder stores a level from this list: Unknown, None, Minor, Major and Catastrophic. You can choose the name of the recorder, change the label for each level and add a description for the recorder itself plus all the levels it supports. This allows you to tailor the form and collect more information (such as "damage to reputation") and give the user enough information to be able to choose between the options.

Reasons

When a report is submitted, the originator chooses a reason for the report from a list. This tab allows you to set up this list, and you can rearrange the order to suit.

There are some built in reasons for reporting which you can edit to suit your own system. Once a report has been submitted that uses a reason, it is no longer possible to change its name, but you can always delete a reason without affecting previous reports. You can add new reasons too, which you may need to do if people frequently choose "Other" and give their own.

Contributing factors

Each report asks the user to identify any contributing factors, such as "weather", "fatigue", "time pressure" and so on. You can edit this list yourself, adding or removing as you like.

Notifications

The system allows you to set the Reply-To field for emails to a dedicated address you might be using for safety management. If you don't have one, leave this field blank and the system setting is used.

If you like, you can add a BCC address to all emails sent by the safety reporting system. This address is not revealed to end-users, again be mindful if you are allowing people to choose to report confidentially.

The rest of this form allows you to tailor up the emails sent by the system when a report is submitted, updated or closed.

Mathew Waters

Training notes

Training notes

This page contains settings specific to the use of training notes. If you are using the system to record student training notes, you can set the operating capacities you want your instructors to use. By default these are PUT, P1 and P1/S.

You can also change the wording on the notification email sent to students when an instructor updates their training record.

Mathew Waters

Billing

Billing

The billing system is simple to set up, but is designed to be very flexible and powerful. There are a lot of separate settings which enable you to set up billing in different ways to suit how you want to run your business. Turn on billing at Admin > Billing.

You can accept card payments, giving your customers a quick and easy way to pay or handle this manually. Either way the system can still automate your bookkeeping.

If you want to accept card payments, you can connect your own Stripe account. Stripe handle the card payments and deposit the money into your school bank account. As part of the billing system setup, you will be guided through setting up your own Stripe account and linking it to Flight School Booking.

About Stripe

Stripe is a platform for online payments, founded in 2010. The company charges a low fee per transaction (1.4% + £0.20 in UK) and pays the balance direct to bank accounts. Stripe is now one of the most highly valued startups in the world at roughly $35 billion (September 2019). The company is now in 40 countries covering 70% of the world economy and process hundreds of billions of dollars each year.

Turning on Billing

Get started by navigating to Admin > Billing.

Admin > Configuration > Billing

Activation date

Choose a date from which you want the system to start generating invoices. This is usually either today's date or a date in the future. If an old flight is edited and saved, it will not generate an invoice if the date is before the Activation date.

Currency

This is the currency you want to use for all your invoicing. Be careful to select the correct currency because once the first invoice has been generated, it cannot be changed.

 

Once you click Connect your Stripe Account, you will be taken to Stripe's website. If you already have a Stripe account, sign in and give Flight School Booking access to request payments on your behalf. Otherwise, activate your own Stripe account by filling in details about your business and the bank details you would like your payments deposited in.

Once everything has been completed, you should be returned to your booking system and should see confirmation on the Stripe tab of which account you are linked with, and whether payments are enabled.

Note: Only the school owner (or other users with the owner role) can connect and disconnect from Stripe. This is a security measure which ensures only you can set up which bank account your payments will be sent to, while allowing office staff access to set up preferences, taxes, your price groups, invoice template and notification emails.

Once Stripe is connected, you should see the additional tabs:

Billing tabs
  • Preferences. General billing preferences such as the number of days credit to offer on invoices, whether to offer to remember customer card details for future billing and tax rates.
  • Price groups. A standard price group is created automatically as a guide for setting your own prices. You can edit these fall-back prices and add your own price groups.
  • Invoice template. This tab allows you to customise the way your invoices look, including your address and logo. You can also set the next invoice number the system should use, which can be useful if you are moving from another system.
  • Notifications. As well as email templates for new invoices, payments received or failed, you can define a custom sender and/or have all billing emails blind-copied to another email address.
Mathew Waters

Preferences

Preferences

The Payments & tax tab contains preferences and settings that define whether the system is available for certain customers only, or for everyone. It also defines the minimum payment amount you will accept and some suggested top up amounts.

After linking your Stripe account, use this tab to tailor the system to how you want to take payments.

Pay special attention to the following.

Billing system availability

You can enable the billing system for everyone or just for specific users.

When the system is only enabled for specific users, each user's Settings tab will allow billing to be turned on or off. This option should be used if you want to bill some users with this system, and other users on your own system. Turning the billing system off removes the user's Bills & payments tab. It also prevents users from making any payments.

You might decide to roll out billing using this system on a gradual basis, perhaps limiting it to specific users to start with. When you become familiar with the system, you can enable billing for everyone.

Remember card details

Card details are maintained in Stripe, and neither you nor Flight School Booking have any access to view the full card number, expiry date or CVC. Although this might seem like it prevents billing cards automatically, the system can obtain a token from Stripe which represents the customer's card and is only meaningful to your own Stripe account. This is a highly secure method of "storing" card details, since the token is not useful to anyone else should it become known. The token is not visible in the booking system, but it is maintained in the database and linked to your customer.

By default the system is not set to store the token against the customer. This means your customer will need their card number each time they pay money in or pay an invoice.

You can give your customer the option to store their card details (although indirectly), or you can require card details be stored. In both cases, the system will collect due payments automatically on the due date using the stored card. If you choose either of these two options, there is a requirement from Stripe that you explain to your customers the following:

  • The customer’s permission to you initiating a payment or a series of payments on their behalf
  • The anticipated frequency of payments
  • How the payment amount will be determined

 

We suggest something like the following, although you will need to change it to suit your own business.

"You grant XYZ permission to retain access to your card through Stripe for the purpose of taking payments for future invoices for flying, training and any regular payments you have agreed with us. You will be notified about each invoice and can review them before the due date. Payment will only be attempted on or after the due date of any invoice. Invoices for aircraft hire, flight training and any ground school will be issued on the day of the flight or training. If you have agreed a regular payment amount with XYZ, invoices will be generated according to the schedule listed in your Price Group, shown on your Bills & payments tab."

When customers click or tap the Pay Now button on an invoice, or pay money into their account from their Bills & payments tab, they will see the option to store their card for next time and the text you specify. As an example, you can see the text appears above the mandatory text included by Flight School Booking:

Remember card details

Tax settings

If you are required to charge VAT (also known as GST in some countries), make sure the option to include tax on your invoices is turned on. Check the default tax codes, and remove or add others as necessary. You can choose a tax code that your bookkeeping system will recognise, and a name for the tax rate that your customers will see on their invoices.

All prices for aircraft hire, training and regular payments are defined gross (inclusive of VAT), and a breakdown of the tax content is shown on invoices and available for export in CSV format.

If you are not registered for VAT, turn off the option completely.

Mathew Waters

Account codes

Account codes

Account codes allow you to keep track of income from different streams. For example, you might want to record your income from training separately from merchandise sales.

Set account codes in Admin > Billing > Account codes.

The codes do not need to match your bookkeeping software.

The following are system accounts which are presented in the Accounting summary report and do not have an account code. These can be mapped to your bookkeeping software on the Bookkeeping tab.

  • FSB Adjustments
    This account acts as a failsafe, and records opening balances and cash movements where no account code was selected.
     
  • FSB Ledger
    This account represents the unpaid balance you are owed by your customers.
     
  • FSB Stripe receipts
    This account represents the payments you have received from Stripe after their fees have been taken off, in other words the net to bank figure.
     
  • FSB Stripe fees
    This account represents the fees taken by Stripe for your card payments.
     
  • Sales
    This default account is used for any sales that do not have their own sales account selected.
     

Depending on how you want to manage your accounts you may have many sales accounts, or just a single sales account. You can set Flight School Booking to track sales in more categories than you use in your accounts package, then map several of them to a single account in your bookkeeping software.

Adding a new account

If you want to categorise your sales, or record payments outside Stripe, add a new account.

When adding an account, pick an account code that makes sense. They do not need to match your books, and do not need to be numeric. But if you're familiar with the account codes in your books you should pick the same codes.

If you are adding a sales account, the name appears in selection boxes when setting up Price groups, Shop products or when creating a custom invoice. Therefore pick a name that is meaningful to people who might be creating custom invoices or setting up these other areas of the billing system.

If you accept payment outside Stripe, you should add an "adjustment" account. For example, if you accept one or more of the following, you should create accounts in Flight School Booking to keep track of them.

  • Cash
  • Bank transfer
  • POS Terminal (card machine)

 

When customers pay using one of these methods see Entering cash payments for details about how to record them.

Mathew Waters

Price groups

Price groups

A price group defines your prices for aircraft hire, flight training, ground school and any regular payments such as membership fees or hangarage.

You can define any number of price groups, so for example you might have standard prices defined for walk-ins who you fly with only once or twice. These prices are defined in the price group with the reference DEFAULT and should be your fall-back (highest) prices. Click the DEFAULT link to set these prices first.

Other price groups

You might offer student packages, in which case you can define a new price group for them. The reference is for you to use internally, but it's a good idea to keep it short. For a student package you might give it the reference STUDENT and the name "Flight Training (student package)".

As another example, you might offer a membership scheme to qualified pilots. For these customers, you could link them to a price group that defines cheaper amounts for aircraft hire and an annual or monthly membership fee. The system is very powerful yet (hopefully) easy to set up.

To add a new price group, you can either duplicate an existing one or create a new one from scratch. If you want to create a new price group from scratch, click Add price group shown above the Price groups tab. Or if you have another price group already defined that is close to what you want, click the price group in the list first, then click the Duplicate button. Once done, you should fill in the reference and the price group name.
 

Mathew Waters

Revising prices

Revising prices

A customer is linked to a price group (or uses the DEFAULT group). This doesn't mean their prices are fixed forever. Once a price group is in use, you can no longer make changes to it, but you can change prices without moving everyone to a new group. Revising the prices of an existing group keeps the same reference (hence the customers) but allows you to set up a new name and set of prices.

To revise prices, first communicate with the customers about the change in pricing and when it is going to take effect from. Then find the price group in your list and click to view it. Click the Revise button and set up the new pricing structure. When you are finished, click the Activate button to activate the prices from the date you choose.

The system will continue to use the current prices until the planned changeover date. From then, aircraft hire, training and ground school will be billed at the new prices. For regular payments the situation is more complicated, since the changeover date might not be the normal billing date for the regular payment. In these cases, the system will bill the previous as normal, then issue a pro-rated credit and a new invoice for the period to the next billing date.

Here is a worked example of a change in standard pricing we've planned and have already informed everyone about. The new prices take effect in about a month's time from 1st February 2020. Aircraft hire is changing from £120 per hour to £130 and circuit fees are increasing from £5 to £5.50 per circuit. Flight training and ground school are not changing.

The default prices are shown in the list of Price groups. Click DEFAULT to view and make changes. The price group may have been used to create invoices, in which case you can no longer edit the prices and will need to Revise prices instead.

Revise prices

Once the new name is set appropriately, click Save to create the new revision. Existing prices are copied across, but the new price group remains inactive until you activate it.

New revision has inactive prices until you activate the group

To edit the prices of aircraft hire, click the link shown in the Prices table. The new prices can be set. In this example, all our aircraft have the same hourly rate. But you can define prices depending on the aircraft type or for specific aircraft. Each uses a fall-back price which is used if the price field is not set, or if you add a new aircraft and forget to revise the prices to add it to the list.

Prices revised

Once all the prices have been defined, click the Activate button and choose which date to make the prices effective from.

 

 

Mathew Waters

Shop

Shop

If you sell things other than flights and training, you can create a price list for these under Admin > Billing > Shop.

Shop products are available when creating an invoice for a customer, see manual entries.

Shop products

To add a product you will need to choose the applicable account and tax code. Therefore, if these have not been set up already, do that first!

Defining a product in this way reduces coding mistakes, ensuring the correct account code and tax code are recorded for each sale. When adding a product, you can choose whether the price can be changed when selling the product or whether it is fixed. This can be useful for prices that are constantly changing like fuel or when you have a special arrangement with certain customers for agreed prices.

When setting up shop products, note the description appears on the customer's invoice. The "item" is used to identify the product internally. If you have a lot of products available, it is a good idea to prefix the item with a code (if you use them) or a category such as "Book", "Gear" and so on. Doing this will save time when invoicing because you can type "book" to show a list of all the books you sell.

If you sell to the public, you might not want to record each customer's details. There is a "quick sale" option which you can turn on under Admin > Billing > Preferences. Once enabled, a new Quick sale tab appears in the primary links area. By default any sales are recorded against a special "CASH SALE" user account.

Mathew Waters

Invoice template

Invoice template

Customise the invoices created by the billing system, setting your own logo, address, terms and footer.

You can also set the invoice number to be next used. Every financial transaction (invoice, credit, payment, refund, opening balance and adjustment) has its own reference so you can identify it.

Invoices can be viewed by clicking the link in the email, or by the customer logging in and clicking their Bills & payments tab. An example invoice is shown below.

Example invoice (created manually)

When printed, the header, navigation tabs, logo etc are not displayed.

Mathew Waters

Bookkeeping

Bookkeeping

Flight School Booking's billing system integrates with the most popular bookkeeping packages. Configure the link at Admin > Billing > Bookkeeping. If you use another package, you can use the Accounting summary report under Billing > Reports, which provides the same information in a form you or your accountant can manually enter.

People tend to think their bookkeeping software needs to keep track of all transactions in case the tax authority asks to see their records in detail. But it's perfectly acceptable to show summary transactions in the books and individual transactions in Flight School Booking. Tax authorities may ask to see your top ten highest invoices over a particular period. This information will be available in the booking system. Likewise, if they ask to see a full list of transactions, these are all available for inspection too.

Flight School Booking can link directly with the accounting packages below, posting a manual journal every day summarising your financial transactions.

Note: this is appropriate for businesses using the accrual method of accounting for VAT, if your business uses a cash scheme you will need to adjust for unpaid balances using the balance on FSB Ledger at the start and end of the period.

Whose software do you use?

Xero logo

Xero
You can add Stripe as a bank feed, meaning it will import gross payments, fees and payouts daily. Bookkeeping with Stripe set up like this adds another account to the list, making the system seem more complicated, but using Bank Rules the actual process is simplified.
Find out how to integrate with Xero.

QuickBooks Online logo QuickBooks
Flight School Booking will post daily journal entries, separating Stripe receipts and fees into two clearing accounts. When reconciling the bank feed, pick the Stripe (receipts) account for incoming payments from Stripe. When Stripe invoice for their fees, make payments from the Stripe (fees) clearing account.
Find out how to integrate with QuickBooks.
Sage logo Sage
If you use Sage Business Cloud Accounting, Flight School Booking will post daily journal entries in the same was as described for QuickBooks.
Find out how to integrate with Sage.

 

Lastly, if you use another bookkeeping package, find out how to use summary reporting manually.

Mathew Waters

Xero integration

Xero integration

This method below is recommended because it most accurately accounts for Stripe fees and minimised the amount of work reconciling transactions. However, there is an alternative method of accounting using Xero, in which you can use Stripe as a bank feed. If you have set up Xero in this way you will need to handle the process differently. See Xero integration(alternative method).

Before you start

Decide on an activation date, from which you will start using summary reporting. All bookkeeping for transactions dated before this date should be handled manually as you're doing now. The balance in the FSB Ledger account should match the balance shown in the full list of transactions in Flight School Booking for the day before. It represents the total amount of money you are owed by your customers; in other words your Accounts Receivable. If you currently have all your customers listed in your bookkeeping package with non-zero balances, transfer their balance to FSB Ledger before you start.

The diagram below shows the standard accounts in light blue and some new accounts in dark blue. These accounts act as clearing accounts for money in transit. This is either from invoices raised and not yet paid by your customers, Stripe fees deducted from payments but not yet invoiced, or payments from Stripe due but not yet paid into your bank account. The "Other clearing" account(s) are shown faintly on the diagram because these are optional, if you only accept Stripe payments you do not need them.

Bookkeeping process using Xero

These clearing accounts can be created by Flight School Booking during set up at Admin > Billing > Bookkeeping or you can create them yourself. If you do, create the accounts as current assets.

If you create FSB Stripe fees, make sure you enable payments to be made from it. This account receives the fees that Stripe will charge when they send their invoice. Use this account to pay the invoice from Stripe (step 2).

Once the required accounts have been mapped to Xero, you should see something similar to the following. You can map any other accounts you want to. If you have created "adjustment" accounts in Flight School Booking for payments made outside Stripe, it is a good idea to prefix these with "FSB" such as "FSB BACS Payments" so you can readily identify them.

Mapping Flight School Booking accounts to Xero

Once all the required accounts and tax rates have been mapped, the export system can be turned on. Any transactions dated before the activation date will not be exported.

A useful feature of Xero is the option to create manual journals as drafts. This will allow you to try out the process and to check the entries without affecting your accounts.

Flight School Booking runs a process overnight to creates manual journals, one for each day's transactions. You can view these on Billing > Bookkeeping.

Billing > Bookkeeping shows the list of batches exported to Xero

The manual journal can be viewed from the link, and also from Xero using the link in the journal as shown below.

Manual journal in Xero includes a link back to view the list of transactions

The link opens the relevant page in Flight School Booking containing the transactions that make up the summary manual journal. This is useful if you need to track down a specific entry contained in a summary transaction in Xero.

The process runs fully automatically, but there are some simple jobs you still need to do, labelled STEP 1 and 2 in the flow diagram at the top of this page.

  1. Reconcile your bank feed.
    If you receive payments outside Stripe you recorded in Flight School Booking, reconcile your bank feed with the other clearing accounts (for example, FSB BACS Payments, FSB Cash and so on). As an example, if you receive cash for a sale, you will deposit this into the bank and reconcile the deposit to FSB Cash.
    Reconcile your deposits from Stripe to the FSB Stripe receipts account.
     
  2. Account for Stripe fees
    Stripe produce tax invoices for their fees each month. Log in to Stripe and you'll find them under Settings > Documents.

    Tax documents from Stripe

    Once you have downloaded the bill, enter it into your bookkeeping package like you would for any supplier invoice. Make a payment from the FSB Stripe fees account. If this is not listed, you may need to enable payments for the account.

 

 

Mathew Waters

QuickBooks integration

QuickBooks integration

Before you start

Decide on an activation date, from which you will start using summary reporting. All bookkeeping for transactions dated before this date should be handled manually as you're doing now. The balance in the FSB Ledger account should match the balance shown in the full list of transactions in Flight School Booking for the day before. It represents the total amount of money you are owed by your customers; in other words your Accounts Receivable. If you currently have all your customers listed in your bookkeeping package with non-zero balances, transfer their balance to FSB Ledger before you start.

The diagram below shows the standard accounts in light blue and some new accounts in dark blue. These accounts act as clearing accounts for money in transit. This is either from invoices raised and not yet paid by your customers, Stripe fees deducted from payments but not yet invoiced, or payments from Stripe due but not yet paid into your bank account. The "Other clearing" account(s) are shown faintly on the diagram because these are optional, if you only accept Stripe payments you do not need them.

Bookkeeping process using QuickBooks Online

These clearing accounts can be created by Flight School Booking during set up at Admin > Billing > Bookkeeping or you can create them yourself. If you do, create the accounts as current assets apart from FSB Stripe fees. This account should be created as a type of bank/cash account because QuickBooks only allows invoices to be paid from this type of account.

Once the required accounts have been mapped to QuickBooks, you should see something similar to the following. You can map any other accounts you want to. If you have created "adjustment" accounts in Flight School Booking for payments made outside Stripe, it is a good idea to prefix these with "FSB" such as "FSB BACS Payments" so you can readily identify them.

Mapping Flight School Booking accounts to QuickBooks Online

Once all the required accounts and tax rates have been mapped, the export system can be turned on. Any transactions dated before the activation date will not be exported.

Flight School Booking runs a process overnight to creates manual journals, one for each day's transactions. You can view these on Billing > Bookkeeping.

Billing > Bookkeeping shows the list of batches exported to QuickBooks Online

Unlike Xero, QuickBooks has no facility to store a web address against a journal, but the Memo field is used by Flight School Booking to store an address that you can copy and paste into a browser.

Manual journal in QuickBooks Online includes a link in the Notes field to view the list of transactions

The address in the memo field opens the relevant page in Flight School Booking containing the transactions that make up the summary manual journal. This is useful if you need to track down a specific entry contained in a summary transaction in QuickBooks.

The process runs fully automatically, but there are some simple jobs you still need to do, labelled STEP 1 and 2 in the flow diagram at the top of this page.

  1. Reconcile the bank feed.
    If you receive payments outside Stripe, reconcile your bank feed with the other clearing accounts (for example, FSB BACS Payments, FSB Cash and so on). As an example, if you receive cash for a sale, you will deposit this into the bank. The total cash waiting to be reconciled builds up in the FSB Cash clearing account as you record payments. Reconciling reduces the balance on this account as it is now in the bank account.
    Payments received from Stripe will need to be reconciled against the FSB Stripe receipts clearing account.
     
  2. Account for Stripe fees
    Stripe produce tax invoices for their fees each month. Log in to Stripe and you'll find them under Settings > Documents.

    Tax documents from Stripe

    Once you have downloaded the bill, enter it into QuickBooks like you would for any supplier invoice. Make a payment from the FSB Stripe fees account.

 

Mathew Waters

Sage integration

Sage integration

* Sage Business Cloud Accounting

Before you start

Decide on an activation date, from which you will start using summary reporting. All bookkeeping for transactions dated before this date should be handled manually as you're doing now. The balance in the FSB Ledger account should match the balance shown in the full list of transactions in Flight School Booking for the day before. It represents the total amount of money you are owed by your customers; in other words your Accounts Receivable. If you currently have all your customers listed in your bookkeeping package with non-zero balances, transfer their balance to FSB Ledger before you start.

The diagram below shows the standard accounts in light blue and some new accounts in dark blue. These accounts act as clearing accounts for money in transit. This is either from invoices raised and not yet paid by your customers, Stripe fees deducted from payments but not yet invoiced, or payments from Stripe due but not yet paid into your bank account. The "Other clearing" account(s) are shown faintly on the diagram because these are optional, if you only accept Stripe payments you do not need them.

Bookkeeping process using Sage

Most of these clearing accounts can be created by Flight School Booking during set up at Admin > Billing > Bookkeeping or you can create them yourself.

Please note FSB Stripe fees should be created via Banking as a "Cash In Hand" account because Sage only allows Stripe invoices to be paid from this type of account. We cannot create this kind of account automatically. To create this account yourself, open Sage and use the Banking tab to add a new Bank Account and set the type to "Cash In Hand".

Add a bank account in Sage

Once the required accounts have been mapped to Sage, you should see something similar to the following. You can map any other accounts you want to. If you have created "adjustment" accounts in Flight School Booking for payments made outside Stripe, it is a good idea to prefix these with "FSB" (e.g. "FSB BACS Payments") so you can readily identify them.

Mapping Flight School Booking accounts to Sage

Once all the required accounts and tax rates have been mapped, the export system can be turned on. Any transactions dated before the activation date will not be exported.

Flight School Booking runs a process overnight to creates manual journals, one for each day's transactions. You can view these on Billing > Bookkeeping.

Billing > Bookkeeping shows the list of batches exported to Sage

Unlike Xero, Sage has no facility to store a web address against a journal, but the Description field is used by Flight School Booking to store an address that you can copy and paste into a browser.

Manual journal in Sage includes a link in the Description field to view the list of transactions

The address in the description field opens the relevant page in Flight School Booking containing the transactions that make up the summary manual journal. This is useful if you need to track down a specific entry contained in a summary transaction.

The process runs fully automatically, but there are some simple jobs you still need to do, labelled STEP 1 and 2 in the flow diagram at the top of this page.

  1. Reconcile your bank feed.
    If you receive payments outside Stripe you recorded in Flight School Booking, reconcile your bank feed with the other clearing accounts (for example, FSB BACS Payments, FSB Cash and so on). As an example, if you receive cash for a sale, you will deposit this into the bank and reconcile the deposit to FSB Cash.
    Reconcile your deposits from Stripe to the FSB Stripe receipts account.
     
  2. Account for Stripe fees.
    When you receive an invoice from Stripe for their fees, enter it in Sage in the usual way. Then record the payment from FSB Stripe fees. This is the reason the account should be set up as cash / bank.

 

Mathew Waters

Manual data entry

Manual data entry

Before you start

Decide on an activation date, from which you will start using summary reporting. All bookkeeping for transactions dated before this date should be handled manually as you're doing now. The balance in the FSB Ledger account should match the balance shown in the full list of transactions in Flight School Booking for the day before. It represents the total amount of money you are owed by your customers; in other words your Accounts Receivable. If you currently have all your customers listed in your bookkeeping package with non-zero balances, transfer their balance to FSB Ledger before you start.

In your bookkeeping package, create the following accounts (ledgers).

Name Category Comments
FSB Ledger Current asset This clearing account represents the Flight School Booking billing system in your books. Any balance on this account represents money you are owed by your customers. It should match the balance shown in the Billing > Transactions on a particular date.
FSB Stripe Current asset This clearing account contains fees and net payments due to you from Stripe. The receipt and fee amounts are known by Flight School Booking at the time of payment, before payments appear in your bank or they issue you with a tax invoice. You will receive a tax invoice from Stripe monthly which reduces the balance of this account, transferring to your Cost of Sales expense account. Depending on your bookkeeping package, you may need to set FSB Stripe to allow payments or change the type to a cash or bank account.
FSB XYZ Current asset Create clearing accounts for your other payment methods you have set up for adjustments such as Cash, BACS or Card Terminals. Reconcile cash deposits, bank transfers etc at your bank to the appropriate clearing account.
Stripe Supplier You may need to add Stripe as a contact if your bookkeeping package only allows bills to be created on suppliers. Bills from Stripe will be linked to your Cost of Sales and an appropriate VAT account. When "paying" the bill, pay from the FSB Stripe account.

The diagram below shows your standard accounts in light blue and the new accounts you've added in dark blue. These accounts act as clearing accounts for money in transit. This is either from invoices raised and not yet paid by your customers, Stripe fees deducted from payments but not yet invoiced, or payments from Stripe due but not yet paid into you bank account.

Diagram showing flow of money from sales to bank account via Flight School Booking's billing system

Once set up, the bookkeeping process should be very much faster than entering the transactions manually.

  1. Add a manual journal
    Once a month, run the Accounting summary report from the Billing tab for the previous month. The report lists the lines to enter into your books as a manual journal entry. If you enter adjustments for cash sales, these are also listed alongside the accounts code you set up under Admin > Billing > Adjustments. Any adjustments should also be to clearing accounts, later reconciled with the bank.

    The following is an example of the report in action, and you will see later how the manual journal is created from it.

    Accounting summary report

    It doesn't matter which date you choose to enter the summary transaction under, but be consistent.

    Example manual journal
     
  2. Account for bank payments from Stripe
    Stripe will pay into your bank account using the schedule you have set with them. Most bookkeeping packages automatically import from your bank account. Reconcile the payments to your bank from Stripe to the FSB Stripe account.
     
  3. Account for Stripe fees
    Stripe produce tax invoices for their fees each month. Log in to Stripe and you'll find them under Settings > Documents.

    Once you have downloaded the bill, enter it into your bookkeeping package like you would for any supplier invoice. Make a payment from the FSB Stripe account.

 

For one cycle, if all invoices have been paid by your customers, and payments from Stripe, and their fees have all been entered, you will find the balance of the clearing accounts are zero. These accounts allow you to record all your sales, tax, fees and payments received into the right places in your books without needing to account for every single one.

What about cash or direct to bank payments?

If you receive cash or bank transfers, you will have updated your customer's account under Bills & payments with an adjustment. Using account codes, you can distinguish how payments were made and you can create clearing accounts for these and reconcile the bank statement with the relevant clearing account.

If you need to refer to an individual invoice, or a customer's account, you can do this from Flight School Booking.

Mathew Waters

Notifications

Notifications

As well as template emails, this tab also allows you to customise which email is used as the sender (reply-to) and which email should receive all outgoing billing emails.

Billing notification settings

Sender (Reply-to)

If you use a separate email address for your accounts, you can specify it here. When invoices and payment notifications are sent to your customers, the reply-to address will be set to whatever you choose here.

This means if a customer replies to an invoice email - perhaps with a query - it will be routed to this email address. This can be useful if you want to keep the accounting side of your business separate from your inbox.

Blind Carbon Copy

By setting your email address here, it's possible to keep copies of all billing emails sent to customers. If (as before) you use a separate accounts email, you might want to put it here at least initially to keep track of the emails being sent by the billing system.

But don't worry that you'll lose visibility into the invoices and payments: you have a dedicated Billing tab at the top of the system which tracks all customer balances, and when customers have overdue invoices they have not paid. From there it is easy to click into the customer's account to view the situation in more detail.

Notification templates

There are email templates which can be used for the following. You can customise these email templates to suit, and use the placeholders such as [invoice:total] to fill in the details specific to the invoice.

  • Invoice was created. When an invoice is finalised, the system sends a notification email to the customer with a link to view the invoice. It does not matter if the customer is logged in or not, the link provides access to view just the invoice and make payment.
  • Payment was received. When payment is received for a customer's account, a confirmation email is sent to the customer showing the amount received.
  • Payment failed. When a payment using stored card details fails, an email is immediately sent to the customer. They can visit a link to make a manual payment, perhaps using a different card. Often a payment will fail because card details have expired, or when a card issuer requires on-screen authentication.

 

There is also an unpaid balance follow-up email, which is part of the follow-up and reminders system. This is triggered when an invoice is overdue and is configured to re-send a number of times. You could add a separate follow-up email after these have finished, perhaps with stronger wording.

Mathew Waters

Vouchers

Vouchers

The system integrates with Stripe for voucher sales. By creating an account with Stripe, you can collect online payments into your school bank account. Stripe fees are the lowest we could find. At the time of writing, if your business and customer is based in UK, Stripe charge a low fee of £0.20 + 1.4%. We think this compares well with the fees charged for using credit card terminals.

Vouchers contain custom fields for the customer to fill in. This makes them ideal presents for family and friends. As an example, the standard design looks like this:

Example voucher showing custom fields filled in by a customer

How to set up vouchers

To configure vouchers, open your booking system and navigate to Admin > Vouchers.

Your address and phone number appear on the voucher, so for these fields, use the airport address and a phone number you would accept bookings on.

Setting up your own voucher products to sell online

Next, the table shows a list of your voucher products. Each one is defined with a unique code called a SKU which is how you identify which vouchers you want to sell from a "purchase" button on your web site.

Voucher products have their own name, flight duration (minutes), selling price and a short description to use when giving the customer a choice of products to buy.

A default product is created automatically when + Add a voucher product is clicked the first time. This product cannot be sold online and contains no duration or price. Instead, this product is designed to allow you to add a voucher manually. You might need this if someone wants a custom number of hours and you agree your own price.

Once at least one voucher product is available, a new tab appears as a Primary Link labelled Vouchers. To view all vouchers sold or to add a voucher manually, use this tab.

To sell online, use the Link maker, which is shown under the list of products if you have already set up Stripe as part of the Billing system configuration. The link shows what you would use as the target URL (for an anchor tag or button on your web site). To focus the link on one product specifically, just remove the other products from the URL. (Each one is separated by a dash -).

Mathew Waters

Reminders and follow-ups

Reminders and follow-ups

The system can be programmed and customised to send reminders and follow-up emails for various jobs:

  • Voucher not used. A voucher was created but has not been used or booked. Typically this reminder would be sent to the purchaser to remind them to pass on the voucher details to the recipient so they could book their flight.
  • Flight details not added. When a flight is booked out, the system expects a flight or an aborted flight to be added. A follow-up email is sent if no flight details have been added after a certain time.
  • Missing training notes. This is sent to instructors with training notes to fill in.
  • Trial flight follow-up. This is sent to users with the "Air Experience" role after their first flight. Most people take a trial flight for pleasure and have not really thought about taking it further to obtain their license.
  • Student flight follow-up. The aim is to keep students engaged and to not leave it too long before making their next booking. Students learn most efficiently when they take regular lessons.
  • Member flight follow-up. Members who fly regularly represent a lower risk to any aircraft hire damage. The follow-up email is designed to remind members to make their next booking to keep everyone current.
  • Next newsletter overdue. If a newsletter is sent, a reminder can be set up to email the author a certain time after. The intention is to keep a regular newsletter being sent to users.
  • Newsletter created but not sent. If a newsletter is created but not sent, this reminder draws attention to it.
  • Membership renewal. Shortly before the user's renewal date they can receive a reminder to contact the office to pay their membership fees. In response, the office should then edit the user's record and set a revised renewal date.
  • Medical renewal. Shortly before a user's medical renewal date, they can receive a reminder.
  • Revalidation. Shortly before a user's revalidation date, they can receive a reminder. This should be set far enough in advance that the user can book any training they need to complete in advance of the revalidation.
  • Overdue balance reminder. A customer has an overdue amount. This is an amount that has been invoiced, and the due date has passed without a payment.
  • Document expiry (user, aircraft or shared). A document's expiry date is approaching. Reminders for user documents are sent to the user, and aircraft and shared document reminders are sent to the office staff.
Mathew Waters

Document storage

Document storage

This page is only available to users with the Owner or Office staff roles. It shows the settings for document storage, including the option to turn it on or off. To reach it, use the Admin tab.

Admin > Document storage

All documents have a "type" and a "class". The classes are already defined and are displayed in Admin as separate tabs as shown above.

  • User documents
  • Aircraft documents
  • Shared documents

 

You can define your own types within a class. So for example under user types you might have "Proof of ID", "Medical certificate", "Pilot licence" and so on. This means when uploading a document to a user's account, you pick the type of document in order to organise the documents.

In addition to organising, the type defines when the document is flagged as nearing expiry.

Edit document type

You can tell the system how many days before a document's expiry you want the highlight colour to change (amber and red).

As the date approaches, the colour changes from green to amber and then to red. Members can book out as PIC if their required documents for the aircraft type are valid, meaning not red. If you hire for overnight stays, you might want to set the point at which the status turns red a few days before expiry. This can help you when making sure a pilot is still legal to fly for the whole period of their trip away. If you do not hire overnight, you might want to set the red status to start on expiry (set to zero days before).

The system will continue to store the document after expiry for a period you specify, up to two years. By default the system will store the documents for 3 months after expiry, by which time any replacement document should have been uploaded (eg new scan of the pilot's licence, medical and so on).

After setting up the document types, you may want to schedule email reminders based on some of the types. To do this, see Reminders.

Mathew Waters

Reminders

Reminders

After you have created document types, such as Licence, Medical, Agreement and so on, you might want to schedule a reminder to your customers so they can plan to get their rating revalidated, medical renewed etc.

You can choose when reminders are sent, the subject and wording.

To do this, use Admin > Reminders and follow-ups.

Add a reminder based on one of the document classes, for example "User document".

When filling in the reminder form, choose the document type from the dropdown list at the top. You may then like to customise the name of the reminder to help you identify it later, for example "Medical renewal". Then pick the number of days before expiry and tailor the subject and email text to suit.

Document reminder and follow-up

You can set the first reminder early, say 60 days. Then set up a few follow-up messages, perhaps once every two weeks until near expiry. You can also create a separate follow-up with different wording to send after expiry. This could be used to let the customer know they can no longer book out your aircraft as PIC, and must submit your required documents to the office.

Mathew Waters

Content

Content

The Content page displays a list of all aircraft and newsletters added to the system. Newsletters are not stored long-term, but Aircraft are only deleted manually and only then if there are no flights associated.

Content page

If you cannot find the aircraft or newsletter in the list, you can narrow down the search using the Title field.

In the example above, you can see a newsletter that has been started but has not been sent (Status is "Unpublished"). This page is a simple way of finding a newsletter you started work on but did not finish.

Likewise, when an aircraft is made permanently unavailable, it will disappear from the list on the Aircraft tab, but you will still find it listed under Content. You could use this to view the log of an old aircraft that is no longer available for future bookings, or to re-activate an old aircraft in the system via its Availability tab.

Mathew Waters

API Access

API Access

There is an API for read-only access to bookings and aircraft booked out.

You might find API access useful if you need to extend the system for yourself. For example:

  • Automatically send an email to staff near the end of the day if there are any out of hours flights booked. This could be used to make sure the aircraft keys are left out instead of being locked up.
  • Show today's bookings on a screen in the office. You should consider whether to expose member's names to other people (the system hides other member names unless they have opted in to being contacted).
  • Extract billing transactions and transfer them to your bookkeeping package, e.g. Xero, Quickbooks, MYOB.

 

Authentication

The API uses simple authentication. The tokens are managed in Admin > API Access, which means they can be set up independently of your users. Therefore they do not depend on staff leaving the business. The token is a long string which looks something like "fb1f233e08aeef0a213dc87cea70cedbd7dbcd0a2229cac4f64e14e3c462cc8e". For each token you can grant access to different parts of the system, for example you could grant access for an application to read which aircraft are booked out, but not grant access to your billing system.

When making a request, include an authorisation header containing your token, for example:

curl -H "Accept: application/json" -H "Authorization: Bearer fb1f233e08aeef0a213dc87cea70cedbd7dbcd0a2229cac4f64e14e3c462cc8e" https://acme.flightschoolbooking.com/club/bookings

Parameters

Parameters can be sent in the query string, e.g.

https://acme.flightschoolbooking.com/club/bookings?page=0

Response format

Responses are returned in JSON.

When a URL is included in an object's output, you can use this URL  as an endpoint to re-read the same object. This means you can follow the progress of a specific booking or booked out record if you need to.

Mathew Waters

Users

Users

This API is used to read the list of users. For information about how to get started using the APIs available, see API Access.

Parameters

  • page (integer)
    Zero-based page number. The query returns up to 50 rows per page. Based on has_more you might increment the page and request the next set of results.
  • role (string)
    One of the built-in roles (air_experience, student, lapsed_student, associate_member, member, lapsed_member, engineer, safety_staff, instructor, office, owner).
  • name (string)
  • email (string)
    Set the name or email parameter to search for a specific user (exact match)

 

Output

  • total (integer)
    Total number of records available (not affected by the page parameter).
  • has_more (boolean)
    True if there are more records available by incrementing the page parameter. When false you have read the whole list.
  • change_id (string)
    A string value which indicates whether any records have changed. If you have read all data previously and the next read returns the same change_id, nothing has changed. However, if the value changes you might discard your current result set and read again from the first page.
  • rows  (array)
    Each row contains information about a user.

 

Each row contains the following fields.

  • id (integer)
  • url (string)
  • name (string)
  • email (string)
  • can_log_in (bool)
  • price_group (string)
  • roles (array)
  • created (integer)
    Timestamp for the time the user account was created.
  • accessed (integer)
    If the user has logged in, this is the last time they were active.
  • date_of_birth (Y-m-d)
  • membership_renewal_date (Y-m-d)
  • medical_renewal_date (Y-m-d)
  • revalidation_next_due (Y-m-d)
  • mobile_phone_number (string)
  • alt_phone_number (string)
  • address (string)
  • next_of_kin_details (string)
  • previous_experience (string)
  • comments (string)
  • internal_notes (string)

Notes

Not all fields are present for every user.

Example

curl -H "Accept: application/json" -H "Authorization: Bearer fb1f233e08aeef0a213dc87cea70cedbd7dbcd0a2229cac4f64e14e3c462cc8e" "https://acme.flightschoolbooking.com/club/user"

(Use your own site's URL, replacing acme with the name of your subdomain and use your own token)

Mathew Waters

Bookings

Bookings

This API is used to read the future bookings. For information about how to get started using the APIs available, see API Access.

Parameters

  • page (integer)
    Zero-based page number. The query returns up to 50 rows per page. Based on has_more you might increment the page and request the next set of results.
  • include_cancellations (0 or 1)
    Normally only active bookings are returned. Use this parameter to extend the results to include cancellations.
  • include_unavailability (0 or 1)
    Extend the results to include periods of unavailability (member field is returned blank)

 

Output

  • total (integer)
    Total number of records available (not affected by the page parameter).
  • has_more (boolean)
    True if there are more records available by incrementing the page parameter. When false you have read the whole list. Before reading the whole list, consider whether this is necessary or do you only need to read to the end of the current day?
  • change_id (string)
    A string value which indicates whether any bookings have been added or updated. If you have read all data previously and the next read returns the same change_id, nothing has changed. However, if the value changes you might discard your current result set and read again from the first page.
  • rows  (array)
    Each row contains information about a booking.

 

Each row contains the following fields

  • id (integer)
  • url (string)
  • start_time (integer)
  • stop_time (integer)
  • booked_at (integer)
  • originator_id (integer)
  • originator_name (string)
  • customer_id (integer)
  • customer_name (string)
  • aircraft_id (integer)
  • aircraft (string)
  • instructor_id (integer)
  • instructor_name (string)
  • notes (string)

 

If the booking was cancelled, the following additional fields are present:

  • cancelled (boolean)
  • cancelled_at (integer)
  • cancelled_by (string)
  • cancelled_notes (string)

 

The customer, aircraft and instructor fields are optional. If a booking is a period of unavailability (for aircraft or instructor) there will be no customer fields. Similarly, if the booking does not include an aircraft there will be no aircraft fields.

Notes

Start reading at page zero. There could be a change in bookings in between you asking for page 0 and page 1, so check the change_id is the same and re-start from page=0 if it changes.

Then keep asking for more pages until you reach a date that you don’t need (records are ordered in ascending date order) or has_more returns false.

Example

curl -H "Accept: application/json" -H "Authorization: Bearer fb1f233e08aeef0a213dc87cea70cedbd7dbcd0a2229cac4f64e14e3c462cc8e" "https://acme.flightschoolbooking.com/club/bookings?page=0&include_cancellations=1&include_unavailability=1"

(Use your own site's URL, replacing acme with the name of your subdomain and use your own token)

The output looks like this:

{
  "total": "378",
  "has_more": true,
  "change_id": "15a981ba73513efc",
  "rows": [
    {
      "url": "https://acme.flightschoolbooking.com/user/21682/bookings/booking/5",
      "startTime": "1590998400",
      "stopTime": "1591005600",
      "bookedAt": "1590951551",
      "member": "John Smith",
      "aircraft": "G-AABC",
      "instructor": "",
      "notes": ""
    },
    . . . 
  ]
}

Mathew Waters

Booked out

Booked out

This API is used to read the list of aircraft booked out. For information about how to get started using the APIs available, see API Access.

Parameters

  • page (integer)
    Zero-based page number. The query returns up to 50 rows per page. Based on has_more you might increment the page and request the next set of results.

 

Output

  • total (integer)
    Total number of records available (not affected by the page parameter).
  • has_more (boolean)
    True if there are more records available by incrementing the page parameter. When false you have read the whole list.
  • change_id (string)
    A string value which indicates whether any records have changed. If you have read all data previously and the next read returns the same change_id, nothing has changed. However, if the value changes you might discard your current result set and read again from the first page.
  • rows  (array)
    Each row contains information about a booked out aircraft.

 

Each row contains the following fields.

  • id (integer)
  • url (string)
  • created_at (integer)
  • out_time (integer)
  • eta_time (integer)
  • booking (object)
    If the booking out record is linked to a booking, see Bookings.
  • originator_id (integer)
  • originator_name (string)
  • aircraft_id (integer)
  • aircraft (string)
  • pilot_id (integer)
  • pilot_name (string)
  • pilot_role (string)
    The role of the pilot at the time of the flight. One of instructor, member, student.
  • student_id (integer)
  • student_name (string)
  • student_role (string)
    The role of the student at the time of the flight. One of air_experience, instructor, member, student.
  • passengers (string)
  • departed (string)
  • destination (string)
  • pob (integer)
  • fuel_added (decimal)
  • p1_in (integer)
    Present if the flight was booked in (either flight or aborted flight)
  • notes (string)

 

Notes

Because schools typically have less than ten aircraft you will not normally need to read more than the first page!

Example

curl -H "Accept: application/json" -H "Authorization: Bearer fb1f233e08aeef0a213dc87cea70cedbd7dbcd0a2229cac4f64e14e3c462cc8e" "https://acme.flightschoolbooking.com/club/booked-out"

(Use your own site's URL, replacing acme with the name of your subdomain and use your own token)

The output looks like this:

{"total":"1","has_more":false,"change_id":"de2b52af6a442955","rows":[{"url":"https:\/\/acme.flightschoolbooking.com\/club\/bookings\/booking\/137\/movement\/32","outTime":"1602007500","etaTime":"1602011100","aircraft":"G-LOLZ","pilot":"Sarah Smith","student":"","departed":"Kemble","destination":"Local","pob":1,"notes":""}]}

Mathew Waters

Training records

Training records

This API is used to read the list of training notes. For information about how to get started using the APIs available, see API Access.

Parameters

  • page (integer)
    Zero-based page number. The query returns up to 50 rows per page. Based on has_more you might increment the page and request the next set of results.
  • student_id (integer)
    List training notes from a specific student.
  • instructor_id (integer)
    List training notes from a specific instructor.
  • incomplete_only (0/1)
    Filters the list to show only incomplete training records (where the instructor still needs to add their notes).

 

Output

  • total (integer)
    Total number of records available (not affected by the page parameter).
  • has_more (boolean)
    True if there are more records available by incrementing the page parameter. When false you have read the whole list.
  • change_id (string)
    A string value which indicates whether any records have changed. If you have read all data previously and the next read returns the same change_id, nothing has changed. However, if the value changes you might discard your current result set and read again from the first page.
  • rows  (array)
    Each row contains information about a training record.

 

Each row contains the following fields.

  • id (integer)
  • url (string)
  • start_time (integer)
    Training start time recorded as unix epoch.
  • stop_time (integer)
    Training finish time.
  • instructor_id (integer)
  • instructor_name (string)
  • student_id (integer)
  • student_name (string)
  • operating_capacity (string)
  • exercises (string)
  • notes (string)
  • flight (object)
    If the training refers to a flight, the flight information is included.
  • voucher (object)
    If the training was for a ground school voucher, the voucher is included.
  • invoice_reference (string)
  • accounts_code (string)
    If an accounts code is used during billing it is stored against the training record to allow for analysis.

 

Notes

Not all fields are present for every training record. For example, the flight object is not included for ground school.

Example

curl -H "Accept: application/json" -H "Authorization: Bearer fb1f233e08aeef0a213dc87cea70cedbd7dbcd0a2229cac4f64e14e3c462cc8e" "https://acme.flightschoolbooking.com/club/training"

(Use your own site's URL, replacing acme with the name of your subdomain and use your own token)

Mathew Waters

Billing transactions

Billing transactions

This API is used to read the list of financial transactions from the billing system. For information about how to get started using the APIs available, see API Access.

Parameters (optional)

  • page (integer)
    Zero-based page number. The query returns up to 50 rows per page. Based on has_more you might increment the page and request the next set of results.
  • customer_id (integer)
    Returns all transactions for a specific customer.

 

Output

  • total (integer)
    Total number of records available (not affected by the page parameter).
  • has_more (boolean)
    True if there are more records available by incrementing the page parameter. When false you have read the whole list.
  • change_id (string)
    A string value which indicates whether any records have changed. If you have read all data previously and the next read returns the same change_id, nothing has changed. However, if the value changes you might discard your current result set and read again from the first page.
  • rows  (array)
    Each row contains a billing transaction.

 

Each row contains the following fields.

  • id (integer)
  • url (string)
  • timestamp (integer)
  • date (string/Y-m-d)
    Timestamp and date are the document date
  • type_id (integer)
    Invoice (0), Credit (1), Payment (2), Refund (3), Opening balance (4), Adjustment (5).
  • type_text (string)
  • drcr (string)
    Debit (dr) or credit (cr) the Accounts Receivables.
  • due_date (string/Y-m-d)
    For invoices only.
  • paid_same_day (boolean)
    For invoices only. Indicates whether a sale was made and payment taken the same day (not left on customer's account)
  • reference (string)
  • customer_id (integer)
  • customer_name (string)
  • total (decimal)
  • tax_content (decimal)
  • processor_fee (decimal)
  • platform_fee (decimal)
    Processor and platform fee appear only for payments (receipts via Stripe).
  • lines (array)
    Line items, see later.

 

If the transaction is voided, the following fields exist:

  • deleted (0/1)
  • deleted_at (integer)
  • deleted_by (string)
  • deleted_notes (string)

 

Line items

Each line in the lines array represents a line item on an invoice / credit etc. Each contains the following fields.

  • line_number (integer)
  • timestamp (integer)
  • description (string)
  • quantity (integer)
  • each (decimal)
  • total (decimal)
  • tax_code (string)
  • tax_content (decimal)
    Tax fields only for invoices and credits.
  • plan_reference (string)
  • plan_version (integer)
    Plan fields are included if the invoice or credit was created by the system.
  • accounts_code (string)
  • item_start (integer)
  • item_stop (integer)
  • url (string)
    A url for the item sold, e.g. the flight, ground school record etc.
  • voucher (string)
  • aircraft (string)
  • instructor (string)

Notes

Amounts are in the local currency.

Example

curl -H "Accept: application/json" -H "Authorization: Bearer fb1f233e08aeef0a213dc87cea70cedbd7dbcd0a2229cac4f64e14e3c462cc8e" "https://acme.flightschoolbooking.com/club/billing/all"

(Use your own site's URL, replacing acme with the name of your subdomain and use your own token)

Mathew Waters

Vouchers

Vouchers

This API is used to read the list of vouchers. For information about how to get started using the APIs available, see API Access.

Parameters

  • page (integer)
    Zero-based page number. The query returns up to 50 rows per page. Based on has_more you might increment the page and request the next set of results.

Note you can retrieve a specific voucher by its ID. See later.

Output

  • total (integer)
    Total number of records available (not affected by the page parameter).
  • has_more (boolean)
    True if there are more records available by incrementing the page parameter. When false you have read the whole list.
  • change_id (string)
    A string value which indicates whether any records have changed. If you have read all data previously and the next read returns the same change_id, nothing has changed. However, if the value changes you might discard your current result set and read again from the first page.
  • rows  (array)
    Each row contains information about a voucher.

 

Each row contains the following fields.

  • id (integer)
  • url (string)
  • code (string)
  • originator_id (integer)
  • originator_name (string)
  • type (integer)
    Flight (0), Ground school (1)
  • recipient_user_id (integer)
  • recipient_user_name (string)
  • recipient_name (string)
  • issued_at (integer)
  • duration_mins (integer)
  • purchase_price (decimal)
  • purchaser_name (string)
  • purchaser_email (string)
  • purchaser_address (string)
  • billing (object)
    An object containing two fields, invoice and payment. Both are of the billing transactions type.
  • greeting (string)
  • message (string)
  • edits_completed (integer)
    Timestamp when edits were completed and finalised by the purchaser.
  • expire_at (integer)
  • unsubscribed (true)
  • unsubscribed_at (integer)
    If the purchaser receives an email follow-up because the voucher has not been used, they can unsubscribe from future emails about the voucher.
  • sku (string)

 

If the voucher is deleted, the following fields exist:

  • deleted (0/1)
  • deleted_at (integer)
  • deleted_by (string)
  • deleted_notes (string)

 

Notes

Not all fields are present for every voucher. For example, if the voucher was manually added to the system the billing and purchaser_address fields are not present.

Example

curl -H "Accept: application/json" -H "Authorization: Bearer fb1f233e08aeef0a213dc87cea70cedbd7dbcd0a2229cac4f64e14e3c462cc8e" "https://acme.flightschoolbooking.com/club/voucher"

To retrieve a specific voucher by its ID, use the endpoint ending /club/voucher/<VOUCHER-CODE>. 

(Use your own site's URL, replacing acme with the name of your subdomain and use your own token)

Mathew Waters