Everything you need to install NoyaJet, activate your licence, import the demo, set up pricing and payments, and run the booking system. This guide is also included in the complete package download.
NoyaJet is an editorial private aviation theme for WordPress. It includes a green-and-ivory design, three aviation images, catalogue pages, a journal, multi-step booking and quote forms, a contact form and a customer requests area. The included NoyaJet Booking plugin adds live price estimates, online payments, card holds, empty-leg sales, invoices and an admin panel for managing bookings, quotes and the aviation catalogue.
What you need
- WordPress 6.5 or newer and PHP 8.1 or newer. Tested on PHP 8.2 and 8.3.
- noyajet-1.3.0.zip, from your downloads on codersnoyan.com.
- Your licence key, from your purchase email or your account on codersnoyan.com.
- To take payments: an account with Stripe, PayPal or Square (any or all), or WooCommerce with a payment plugin. Bank transfer needs no account.
No Elementor, ACF, Node.js or other paid plugin is needed. WooCommerce is optional.
Install and set up
- In your WordPress dashboard, go to Appearance → Themes → Add New Theme → Upload Theme. Select noyajet-1.3.0.zip, click Install Now, then Activate.
- NoyaJet Setup opens automatically. You can return to it any time from Appearance → NoyaJet Setup.
- Step 1: Activate your licence. Paste your licence key and click Activate licence.
- Step 2: Install NoyaJet Booking. Click Install and activate. The plugin is included in the theme, so nothing else needs downloading.
- Step 3: Import the demo website. Leave both boxes ticked to use the imported Home page as your front page and switch to “Post name” permalinks. Then click Import demo website. The demo aircraft get example hourly rates, so price estimates work straight away.
- Step 4: Make it yours. Open your website, or go to the Customizer to change the logo and homepage text.
- Go to Settings → General and set your Site Title and Timezone, so booking times are shown correctly.
- Follow Pricing and Payments below before you take real bookings.
Do not upload the theme ZIP under Plugins, and do not upload a ZIP that contains other ZIP files. If WordPress reports “Missing style.css”, see Troubleshooting.
The demo import copies the bundled pictures into your Media Library. It never deletes existing content. If a page with the same address already exists, the import creates a separate copy. Running it again skips anything it has already created and keeps your edits. If your site already has a menu, assign the imported NoyaJet menu to Primary navigation under Appearance → Menus.
The default Hello world! post appears in The journal next to the demo articles. Move it to the Trash under Posts if you don’t need it.
If your server asks for FTP details when installing plugins, step 2 shows a message instead. In that case, open noyajet-1.3.0.zip on your computer and take out noyajet/plugins/noyajet-booking.zip. Upload that file under Plugins → Add New Plugin → Upload Plugin, activate it, and return to NoyaJet Setup.
Your licence
- The licence unlocks NoyaJet Setup (plugin install and demo import) and automatic theme updates.
- Theme updates appear in Dashboard → Updates, like any other theme. Each update also contains the matching NoyaJet Booking version. When one is included, NoyaJet Setup shows an Update button for the plugin.
- Your website keeps working if the licence expires. Only setup and updates stop until you renew.
- Your plan sets how many sites a licence covers. NoyaJet Setup shows how many sites are in use.
- Moving to a new domain or subdomain? Open NoyaJet Setup on the old site and click Release this site, then activate the licence on the new site. If the old site no longer exists, release it from your account on codersnoyan.com. If a site’s address changes, NoyaJet asks you to activate the licence again for the new address.
- NoyaJet contacts codersnoyan.com only when you activate, check or release the licence, and at most twice a day to check for updates. Visitors to your website never trigger a licence check.
Updating from an earlier version
- Check that your server runs PHP 8.1 or newer (Tools → Site Health → Info → Server). NoyaJet Booking 2.0 does not run on older PHP.
- Go to Appearance → Themes → Add New Theme → Upload Theme and select the new noyajet-x.y.z.zip. Or, with an active licence, update from Dashboard → Updates.
- When WordPress says the theme is already installed, click Replace current with uploaded.
- Open Appearance → NoyaJet Setup. Activate your licence if asked, then click Update on the NoyaJet Booking step.
Requests, quotes, catalogue entries, pages and settings are kept. When updating to plugin 2.0:
- A Your booking page is created for customers’ private booking links.
- Open quotes from 1.x get their quote amount as the price, so customers can pay them online.
- Demo aircraft get example hourly rates and demo empty legs get prices and dates, but only where those fields are still empty. Your own values are never changed.
- Your existing Privacy and Terms pages are not changed. Update them yourself (see Scope and launch requirements).
What is included
- Responsive homepage, header, mobile navigation and footer.
- Six editable aircraft categories, with detail pages, seating, range, hourly rate and amenities.
- Six editable destinations, with regional filtering, airport information and detail pages.
- Four editable services and their detail pages.
- Three sample empty-leg routes; real empty legs can be sold online at a fixed price.
- About, FAQ, privacy and booking terms pages; three journal articles.
- Separate booking, quote, contact, My requests and Your booking pages.
- One-way, round-trip and multi-city itineraries (up to four legs), with airport search over more than 7,900 airports and local-time validation.
- Live price estimates for every aircraft, from your hourly rates and pricing rules.
- Online payments: Stripe, PayPal, Square, bank transfer and WooCommerce. Card holds, deposits, balances, full payment and refunds.
- A private booking page for each customer: status, payments, invoices and cancellation requests.
- Customer and admin emails; numbered PDF invoices.
- A NoyaJet admin panel: dashboard, request list, booking screen with price and payment controls, settings and CSV export.
- WordPress privacy export and erasure support.
Pricing
Online estimates are built from each aircraft’s hourly rate. Customers see a price range for every aircraft on the booking form, and the estimate is saved with their request.
- Go to NoyaJet → Aircraft and open each aircraft. In NoyaJet details, fill in:
- Hourly rate: your charter price per flight hour, in your site currency.
- Cruise speed in knots (typical: turboprop 290, light jet 410, midsize 450, heavy 480).
- Home base airport as an IATA code, for example LTN. Positioning flights are priced from here.
- Optionally a crew overnight fee and minimum billable hours per day. Empty fields use the defaults in Settings.
Aircraft without an hourly rate show “Price on request” and are left out of estimates.
- Go to NoyaJet → Settings → Pricing and check the rules:
| Setting | What it does |
|---|---|
| Live estimates | Show estimates on the booking form and price new requests |
| Estimate range | Customers see “from – to” around the estimate, e.g. ±10% |
| Round totals to | Round the total, e.g. to the nearest 100 |
| Taxi and climb allowance | Minutes added to every flight |
| Routing allowance | % added to the straight-line distance |
| Daily minimum | Minimum billable hours per flying day |
| Fuel stop | Minutes added per stop when a flight is longer than 90% of the aircraft’s range |
| Positioning, rate and limit | Charge flights to and from the home base, at a % of the hourly rate. If the base is further than the limit from the departure airport, the estimate prices an aircraft of the same type based at the departure airport |
| Crew overnight fee and longest wait | Charged per night between flights; longer gaps are priced as a flight home and back |
| Landing & handling, catering | Per flight; catering per guest when the customer ticks Catering |
| Peak season | % surcharge on dates in the ranges you list (MM-DD..MM-DD, one per line) |
| Tax | % and label, e.g. 7.5 “Federal excise tax” |
The table at the bottom, What your aircraft cost, shows each aircraft’s price for a sample London Luton → Nice trip with the settings you saved.
Estimates are guides. You set the final price on each booking (see Managing bookings and payments), and the operator confirms the aircraft before any card hold is captured.
Payments
Go to NoyaJet → Settings → Payments.
- Payment methods: tick the methods to offer. A method shows Ready once its keys or details are saved. Customers choose between the ticked methods that are ready.
- Deposits and card holds:
- Deposit: a percentage of the price, a fixed amount, or none. Tick Pay in full to also offer paying everything up front.
- Card holds: let customers reserve from the booking form with a card hold. The hold is the deposit or the full estimate.
- Release holds after: unconfirmed holds are released automatically before the card network lets them lapse (Stripe and Square 6 days, PayPal 3 days at most).
- Payment windows: how long an unpaid checkout stays open, how long an empty leg is held while the customer pays, and how long to wait for a bank transfer.
- Shown at checkout: choose your Booking terms page and write your cancellation policy and operator disclosure. Customers must accept the booking terms before they pay.
- Bank transfer details: account name, bank, IBAN or account number, SWIFT/BIC and instructions. Customers see them with their booking reference.
- Keys: each provider has its own box. Start in Test or Sandbox mode, click Save keys, then Test connection. Switch to Live with your live keys when you are ready. Keys are encrypted before they are stored, and saved keys are never shown again.
| Provider | Where to find the keys | Fields |
|---|---|---|
| Stripe | Stripe Dashboard → Developers → API keys; webhook under Developers → Webhooks | Publishable key, Secret key, Webhook signing secret |
| PayPal | developer.paypal.com → Apps & Credentials (Sandbox or Live) | Client ID, Secret, Webhook ID |
| Square | developer.squareup.com → your application → Credentials and Locations | Application ID, Location ID, Access token, Webhook signature key |
Webhooks keep payments in step when a customer closes the browser, a refund is made in the provider’s dashboard or a dispute is opened. Each key box shows your webhook address. Add it in the provider’s dashboard:
- Stripe:
…/wp-json/noyajet/v1/webhooks/stripewith the eventspayment_intent.succeeded,payment_intent.amount_capturable_updated,payment_intent.canceled,payment_intent.payment_failed,charge.refundedandcharge.dispute.created. Copy the signing secret into Webhook signing secret. - PayPal:
…/wp-json/noyajet/v1/webhooks/paypalwithCHECKOUT.ORDER.APPROVED,PAYMENT.CAPTURE.COMPLETED,PAYMENT.CAPTURE.DENIED,PAYMENT.CAPTURE.REFUNDEDandPAYMENT.AUTHORIZATION.VOIDED. Copy the webhook’s ID into Webhook ID. - Square:
…/wp-json/noyajet/v1/webhooks/squarewith thepayment.updatedandrefund.updatedevents (adddispute.createdif offered). Copy the signature key into Webhook signature key.
Square charges only in the currency of your Square location, which Test connection shows. WooCommerce sends the customer to a WooCommerce checkout, so any WooCommerce payment plugin works; the WooCommerce store currency must match your site currency, and WooCommerce payments cannot be card holds. Demo payments is for demo sites only: it completes payments without charging anything, and customers see it labelled as a demo.
Set your site currency under Settings → General. Prices, estimates, empty legs and invoices all use it.
How customers book
- Reserve with a card hold. On the booking form the customer chooses an aircraft, sees the estimate and, on the last step, picks Reserve now with a card hold and accepts the booking terms. They go straight to their booking page, where their card is authorised for the deposit (or the full estimate). Nothing is charged until you capture the hold.
- Send a request, then pay a quote. Customers who choose Send as a request, or use Get a quote, send their trip without paying. You set the price and send a payment link; the customer pays a deposit or the full price, then the balance.
- Book an empty leg. Empty legs with a price, an aircraft, a future date and Availability: available (and Sample route unticked) show Book this flight. The leg is held for the customer while they pay, at the fixed price for the whole aircraft.
Every customer receives a private link to Your booking, where they see the status, pay, download invoices and ask to cancel. Signed-in customers also find their bookings in My requests.
The NoyaJet admin panel
Everything for the booking system is under the NoyaJet menu in the WordPress admin. A number badge on the menu shows how many new requests are waiting.
| Menu item | What it’s for |
|---|---|
| Dashboard | New requests, card holds to confirm, money received in the last 30 days, open quote value, pipeline by status and type, latest requests, upcoming departures, catalogue totals and a setup checklist |
| Requests | Every booking, quote enquiry, empty-leg booking and contact message, with price and payment status. Tabs by status, filters by type and month, search, bulk status changes and Export CSV |
| Aircraft | Aircraft categories with their details and hourly rates |
| Destinations | Destinations with country, region and arrival airport |
| Services | Services and their section labels |
| Empty legs | Empty-leg routes with aircraft, price, date and availability |
| Settings | General (alerts, currency, sender), Pricing, Payments, Company & invoices |
| Demo setup | Import or re-run the demo website (needs an active licence) |
| Licence & setup | Opens NoyaJet Setup: licence status, plugin version and demo import |
Administrators see everything. Editors can manage the catalogue (Aircraft, Destinations, Services, Empty legs) but not requests, payments or settings. A NoyaJet requests widget also appears on the main WordPress Dashboard for administrators.
Booking statuses
| Status | Meaning |
|---|---|
| Received | New request, not yet reviewed. Counted in the menu badge |
| Under review | You are working on it |
| Quote prepared | You have set a price; the customer can pay it |
| Awaiting payment | The customer chose to pay online and has not finished yet. Unpaid checkouts expire after the payment window |
| Card hold placed | The customer’s card is authorised. Capture or release the hold |
| Confirmed | Paid (deposit or full) and confirmed |
| Completed | The flight has taken place |
| Closed | Finished without further action |
| Cancelled | Cancelled by you. The customer is emailed, card holds are released and an empty leg goes back on sale |
| Payment not completed | The checkout expired without payment |
| Withdrawn | The customer withdrew an unpaid request |
Managing bookings and payments
Open NoyaJet → Requests and click a reference (for example NJ-…).
- Request overview shows the customer, trip, guests, aircraft, extras, the itinerary with local and UTC times, and their notes.
- Status & quote: choose a status, enter the Quote amount and a Note to customer, then click Update request. The quote becomes the price the customer pays online. The currency is fixed once a booking has payments.
- Price & payments:
- The summary shows the price, the amount paid, the balance due and the payment status.
- Price estimate shows how the online estimate was built. Use this estimate as the quote copies it into the quote field.
- Card hold: enter the amount and click Capture to charge the card (up to the amount held), or Release to cancel the hold. Holds are released automatically before they expire.
- Mark transfer received settles a bank transfer. Record a payment records money received another way (transfer, cash, card terminal).
- Refund sends money back through the original payment method; bank transfers and recorded payments are marked refunded for you to pay back yourself.
- Email payment link sends the customer a link to pay a deposit, the full price or the balance. Create a link to copy gives you a fresh private link to the booking page.
- Invoice (PDF) and the list of emails sent are at the bottom.
The Activity box records every status, price, payment and note change with the time and the person who made it. Customer history lists other requests from the same email address.
Emails and invoices
Customers are emailed when their request is received, when a card hold is placed or released, for every payment (with receipt), with bank transfer details, for refunds and cancellations, and when you send a payment link. You are emailed about new card holds, payments, bank transfers chosen, cancellation requests and disputes. Set the sender name and address under Settings → General.
Invoices are numbered without gaps (for example NJ-2026-000001). Add your company name, address, tax number and footer under Settings → Company & invoices.
Exporting requests
On NoyaJet → Requests, filter or search the list, then click Export CSV. The file contains the requests in the current view, with customer details, itinerary, preferences, message, status, quote and notes. It opens in Excel and Google Sheets.
Test a booking
Use Demo payments or your providers’ test keys. Never test with a real card.
- Under Settings → Payments, tick Demo payments (or a provider in Test mode) and Bank transfer, and turn on Card holds.
- Open Plan a flight. Search for two airports, choose a future date and the number of guests.
- On Your aircraft, each aircraft shows its price for the trip. Choose one.
- Enter sample contact details and accept the privacy notice.
- On the review step, choose Reserve now with a card hold, accept the booking terms and continue. On the booking page, place the hold.
- In the WordPress admin, open NoyaJet → Requests and the new booking. The dashboard shows a card hold to confirm.
- In Price & payments, click Capture. The booking becomes Confirmed, the customer receives a receipt and an invoice is available.
- Click Email payment link for the balance, open the link from the email and pay by bank transfer. Back in the admin, click Mark transfer received.
- Try a partial Refund, and check the emails in your mail catcher.
Also test Get a quote (set a price, send a payment link, pay a deposit), an empty leg (untick Sample route, set a price, an aircraft, a future date and Availability available), and Contact. Turn Demo payments off before launch.
Edit the design and content
| Change | Where to edit |
|---|---|
| Logo and site identity | Appearance → Customize → Site Identity |
| Homepage hero text, hero image and top-bar notice | Appearance → Customize → NoyaJet homepage |
| Navigation | Appearance → Menus → Primary navigation (used by the desktop header and the phone menu) |
| Aircraft | NoyaJet → Aircraft → select an item; edit body, featured image and NoyaJet details |
| Destinations, services and empty legs | NoyaJet → Destinations, Services or Empty legs |
| Alerts, currency, pricing, payments and invoices | NoyaJet → Settings |
| About, FAQ, privacy, terms and form pages | Pages → select the page |
| Journal | Posts |
| Fixed homepage sections and detailed layout changes | Theme PHP templates; use a child theme for ongoing customization |
Keep the supplied shortcodes on their pages:
booking formYOUR JOURNEY STARTS HERELive pricing · reserve onlineMake it your journey.
Plan your route, see an instant price estimate and choose your aircraft.
- 1 Your itinerary
- 2 Your aircraft
- 3 Your details
- 4 Review & reserve
quote enquiryA QUOTE, SHAPED AROUND YOUInstant price estimateA more personal quote.
Plan your route, see an instant price estimate and choose your aircraft.
- 1 Your itinerary
- 2 Your aircraft
- 3 Your details
- 4 Review & send
contact formLET’S START A CONVERSATIONA small detail.
A big possibility.Have a question about a route, an aircraft or a special request? Tell us what you have in mind.
Messages are saved for the site administrator. Please do not include passports, payment details or sensitive documents.
My requestsYour journeys, in one place.
Sign in to view requests submitted while signed in to this WordPress account. Guest enquiries remain available to the administrator.
Sign inYour booking (the customer booking page)We couldn’t open this booking.
The link may be incomplete or out of date. Use the most recent link from your email, or sign in to see your requests.
Sign in ↗ Contact us
NoyaJet → Settings shows which page holds each shortcode, and the Dashboard’s setup checklist warns if one is missing. The forms also work in other themes, with the plugin’s own responsive styles. The complete catalogue design requires NoyaJet.
Email and local testing
Customer emails are on by default and admin alerts are off by default. Configure SMTP (or your host’s mail) so emails arrive, then turn on Email me about new requests, card holds and payments under NoyaJet → Settings → General. A mail function reporting success does not guarantee delivery; send yourself a test booking.
On LocalWP, outgoing email is caught by Mailpit. Open it from your site’s Tools tab in Local.
No email is sent by the demo importer. No test users, requests, passwords, payment keys or database dump are included in the installation ZIPs.
Scope and launch requirements
NoyaJet takes bookings and payments for the flights you arrange. It does not check live aircraft availability with operators, dispatch flights or issue a charter contract. Estimates are guides: confirm the aircraft and final price with the operator before you capture a card hold.
Before taking real bookings:
- Replace the demonstration Booking terms and Privacy pages with your own. They are drafts, not legal advice. Selling charter flights may need a licence or an operator agreement where you trade.
- Enter your company details for invoices.
- Set real hourly rates and pricing rules, and check the preview table.
- Test every payment method in test or sandbox mode, including webhooks, then switch to live keys.
- Turn off Demo payments. Change the top-bar notice (Customizer → NoyaJet homepage), which says this is a demo website.
- Mark your real empty legs as not samples, and keep sample routes or delete them.
- Configure email delivery and backups, and serve the site over HTTPS.
Do not cache the Booking, Quote, Contact, My requests or Your booking pages. The plugin sends no-cache headers on these pages, but cache/CDN exclusions should also be configured.
Troubleshooting
- “Missing style.css” during upload: upload
noyajet-1.3.0.zipunder Appearance → Themes, not under Plugins, and not a ZIP that contains other ZIP files. - NoyaJet Booking will not activate after the update: your server runs PHP older than 8.1. Ask your host to switch to PHP 8.1 or newer.
- “That licence key is not valid for this product”: copy the key again from your purchase email or account, without extra spaces. A key only works for the product it was bought for.
- “This licence is already in use on all of its allowed sites”: release it from a site you no longer use (NoyaJet Setup → Release this site, or from your account), or upgrade your plan.
- “The membership behind this licence is not active”: renew your plan on codersnoyan.com. Your website keeps working meanwhile.
- “The store could not be reached”: your server could not connect to codersnoyan.com. Try again later, or ask your host to allow outgoing HTTPS connections.
- NoyaJet asks for the licence again after moving the site: this is expected when the address changes. Activate it on the new address and release the old site.
- No theme updates appear: check that the licence is active in Appearance → NoyaJet Setup, then use Dashboard → Updates → Check again.
- No prices on the booking form: check that Live estimates is on under Settings → Pricing and that the aircraft have an hourly rate.
- A price looks too high: check the aircraft’s home base and the positioning settings; the preview table under Settings → Pricing shows each aircraft’s price.
- No “Reserve now with a card hold” option: turn on Card holds under Settings → Payments and enable Stripe, PayPal or Square (or Demo payments). The option appears once the customer has chosen an aircraft that has a price.
- A payment method does not appear at checkout: it must be ticked and show Ready. Square only appears for its location currency, and only Stripe, PayPal, Square and Demo payments can take card holds.
- Payments stay “Started” after the customer paid: check the webhook address and signing secret in the provider’s dashboard. Pending card payments are also checked with the provider every few minutes.
- Empty leg shows “Enquire” instead of “Book this flight”: untick Sample route, set a price, an aircraft and a future date, and set Availability to available.
- Forms show shortcodes or are unavailable: activate NoyaJet Booking from Appearance → NoyaJet Setup.
- The layout has no demo items: run step 3 in Appearance → NoyaJet Setup.
- Fleet, detail or booking pages show 404: resave Settings → Permalinks.
- The old homepage still appears: check Settings → Reading and choose the imported Home page.
- Request times look wrong: set your timezone under Settings → General.
- The Dashboard’s setup checklist shows a warning: click the warning to open the screen where it can be fixed.
- My requests is empty: sign in with the same WordPress account used to submit. Guests use the private link in their email.
- Expired form message: reload the form page and exclude it from caching.
- Booking saved but no email arrives: check your mail/SMTP setup. On LocalWP, look in Mailpit. The email history is at the bottom of Price & payments.
Deactivate or delete the plugin without losing saved data: requests, payments and invoices are kept. WordPress privacy erasure deletes requests without payments and anonymises those with payments, keeping the financial records. Imported pages, catalogue entries and media remain until you explicitly delete them.