THE NOYAJET EXPERIENCEDemo website · Test payments only. No real flights or charges.
NOYAJET

Documentation

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

  1. In your WordPress dashboard, go to Appearance → Themes → Add New Theme → Upload Theme. Select noyajet-1.3.0.zip, click Install Now, then Activate.
  2. NoyaJet Setup opens automatically. You can return to it any time from Appearance → NoyaJet Setup.
  3. Step 1: Activate your licence. Paste your licence key and click Activate licence.
  4. Step 2: Install NoyaJet Booking. Click Install and activate. The plugin is included in the theme, so nothing else needs downloading.
  5. 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.
  6. Step 4: Make it yours. Open your website, or go to the Customizer to change the logo and homepage text.
  7. Go to Settings → General and set your Site Title and Timezone, so booking times are shown correctly.
  8. 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

  1. 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.
  2. 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.
  3. When WordPress says the theme is already installed, click Replace current with uploaded.
  4. 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.

  1. 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.

  1. Go to NoyaJet → Settings → Pricing and check the rules:
SettingWhat it does
Live estimatesShow estimates on the booking form and price new requests
Estimate rangeCustomers see “from – to” around the estimate, e.g. ±10%
Round totals toRound the total, e.g. to the nearest 100
Taxi and climb allowanceMinutes added to every flight
Routing allowance% added to the straight-line distance
Daily minimumMinimum billable hours per flying day
Fuel stopMinutes added per stop when a flight is longer than 90% of the aircraft’s range
Positioning, rate and limitCharge 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 waitCharged per night between flights; longer gaps are priced as a flight home and back
Landing & handling, cateringPer 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.

  1. 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.
  2. 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.
  3. 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.
  4. Bank transfer details: account name, bank, IBAN or account number, SWIFT/BIC and instructions. Customers see them with their booking reference.
  5. 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.
ProviderWhere to find the keysFields
StripeStripe Dashboard → Developers → API keys; webhook under Developers → WebhooksPublishable key, Secret key, Webhook signing secret
PayPaldeveloper.paypal.com → Apps & Credentials (Sandbox or Live)Client ID, Secret, Webhook ID
Squaredeveloper.squareup.com → your application → Credentials and LocationsApplication 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/stripe with the events payment_intent.succeeded, payment_intent.amount_capturable_updated, payment_intent.canceled, payment_intent.payment_failed, charge.refunded and charge.dispute.created. Copy the signing secret into Webhook signing secret.
  • PayPal: …/wp-json/noyajet/v1/webhooks/paypal with CHECKOUT.ORDER.APPROVED, PAYMENT.CAPTURE.COMPLETED, PAYMENT.CAPTURE.DENIED, PAYMENT.CAPTURE.REFUNDED and PAYMENT.AUTHORIZATION.VOIDED. Copy the webhook’s ID into Webhook ID.
  • Square: …/wp-json/noyajet/v1/webhooks/square with the payment.updated and refund.updated events (add dispute.created if 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 itemWhat it’s for
DashboardNew 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
RequestsEvery 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
AircraftAircraft categories with their details and hourly rates
DestinationsDestinations with country, region and arrival airport
ServicesServices and their section labels
Empty legsEmpty-leg routes with aircraft, price, date and availability
SettingsGeneral (alerts, currency, sender), Pricing, Payments, Company & invoices
Demo setupImport or re-run the demo website (needs an active licence)
Licence & setupOpens 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

StatusMeaning
ReceivedNew request, not yet reviewed. Counted in the menu badge
Under reviewYou are working on it
Quote preparedYou have set a price; the customer can pay it
Awaiting paymentThe customer chose to pay online and has not finished yet. Unpaid checkouts expire after the payment window
Card hold placedThe customer’s card is authorised. Capture or release the hold
ConfirmedPaid (deposit or full) and confirmed
CompletedThe flight has taken place
ClosedFinished without further action
CancelledCancelled by you. The customer is emailed, card holds are released and an empty leg goes back on sale
Payment not completedThe checkout expired without payment
WithdrawnThe 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.

  1. Under Settings → Payments, tick Demo payments (or a provider in Test mode) and Bank transfer, and turn on Card holds.
  2. Open Plan a flight. Search for two airports, choose a future date and the number of guests.
  3. On Your aircraft, each aircraft shows its price for the trip. Choose one.
  4. Enter sample contact details and accept the privacy notice.
  5. On the review step, choose Reserve now with a card hold, accept the booking terms and continue. On the booking page, place the hold.
  6. In the WordPress admin, open NoyaJet → Requests and the new booking. The dashboard shows a card hold to confirm.
  7. In Price & payments, click Capture. The booking becomes Confirmed, the customer receives a receipt and an invoice is available.
  8. 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.
  9. 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

ChangeWhere to edit
Logo and site identityAppearance → Customize → Site Identity
Homepage hero text, hero image and top-bar noticeAppearance → Customize → NoyaJet homepage
NavigationAppearance → Menus → Primary navigation (used by the desktop header and the phone menu)
AircraftNoyaJet → Aircraft → select an item; edit body, featured image and NoyaJet details
Destinations, services and empty legsNoyaJet → Destinations, Services or Empty legs
Alerts, currency, pricing, payments and invoicesNoyaJet → Settings
About, FAQ, privacy, terms and form pagesPages → select the page
JournalPosts
Fixed homepage sections and detailed layout changesTheme PHP templates; use a child theme for ongoing customization

Keep the supplied shortcodes on their pages:

  • YOUR JOURNEY STARTS HERE

    Make it your journey.

    Plan your route, see an instant price estimate and choose your aircraft.

    Live pricing · reserve online
    1. 1 Your itinerary
    2. 2 Your aircraft
    3. 3 Your details
    4. 4 Review & reserve
    01 / YOUR ITINERARY

    Where shall we go?

    Departure times are local to each origin airport.

    Trip type

    Search more than 7,900 airports by city, airport name or code. Can’t find yours? Contact us.

    booking form
  • A QUOTE, SHAPED AROUND YOU

    A more personal quote.

    Plan your route, see an instant price estimate and choose your aircraft.

    Instant price estimate
    1. 1 Your itinerary
    2. 2 Your aircraft
    3. 3 Your details
    4. 4 Review & send
    01 / YOUR ITINERARY

    Where shall we go?

    Departure times are local to each origin airport.

    Trip type

    Search more than 7,900 airports by city, airport name or code. Can’t find yours? Contact us.

    quote enquiry
  • LET’S START A CONVERSATION

    A 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.

    HOW CAN WE HELP?

    Leave us a message.

    We’ll keep the details together.

    contact form
  • Your 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 in
    My requests
  • 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
    Your booking (the customer booking page)

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.zip under 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.

YOUR NEXT CHAPTER

Where do you want to be?

Plan your journey
Buy this theme $79

You are on the live demo

NoyaJet, the private jet charter theme

Every page you have been clicking through is the theme itself, with its own booking system: live prices, card holds and online payments. Nothing here is a mock-up.

$79 a year for one site, with updates, or $199 once for a lifetime licence. The site keeps working if a yearly licence ends.

Buy it on CodersNoyan