Sales and invoicing

Send a pay link on a sales order

Turn any active sales order into a payment link you can email to the customer. They open it on their phone, see your printable quote, tap Pay, and pay you on the spot through Paystack. When you're ready to release the goods, click Mark delivered and the SO becomes an Invoice in one click.

You still get to use "Convert to Invoice" for offline sales orders — the pay-link flow is opt-in per SO.

Before you start

  • Paystack must be connected for your shop. Ask an administrator to set it up under Setup → Payment gateways if the Send pay link button acts unusually.
  • A contact for the customer — an email address to send by email, or a phone number to send by WhatsApp. You need one or the other, not both, and you can type a one-off email straight into the send dialog without touching the customer record.
  • The sales order needs at least one line and a total — you can't send a pay link for an empty or zero-amount SO.

Steps

Open the send dialog

You can reach it from two places:

  • From the list: on Sales → Sales Orders, click the small paper-plane icon on the order's row. No need to open the order — handy when you're chasing a batch of unpaid quotes.
  • From the order: open the SO and click Send pay link (indigo pill in the top-right).

The dialog shows you everything before anything is sent:

What you see What it means
Order # · customer · amount The order the link is for.
Send to (email) Where the email will go. Pre-filled with the customer's address on file.
Note to the customer Optional line added to both the email and the WhatsApp message.
Payment link The exact URL the customer will get, with a Copy button.

Send by email

  1. Check the Send to address. To send somewhere else — a purchase officer, a spouse, a second branch — just type over it. The customer record is not changed; the override applies to this send only.
  2. Add a note if you want ("Payment due before Friday delivery").
  3. Click Send email. A toast confirms: "Pay link sent to <email>".

You can send again later — the same link is reused (a second send never spawns a duplicate URL), so the customer just gets a reminder.

Send by WhatsApp

Click the green WhatsApp button next to the link. Your own WhatsApp opens — native app on your phone, WhatsApp Web on your desktop — with the customer's number selected and a complete message ready to go:

Hi Femi,

Here are the details for your order #1024. Amount due: ₦15,000.00

You can review the order and pay securely here: https://yourshop.businesssensor.com/so/…

Thank you.

You still tap Send yourself — nothing is dispatched automatically. Use Preview the WhatsApp message in the dialog to read the exact text first, including your note.

Why you'd pick this over email: WhatsApp reaches the customer in seconds, and it costs your tenant nothing — no WhatsApp Business API subscription, because this is a normal chat sent from your own account.

The button is greyed out if the customer has no phone on file. Add one on the customer record to enable it.

The customer pays

The customer opens the link and lands on /so/<token> on your shop:

  • They see your shop's header, the SO number, the itemised quote, and the total.
  • They confirm their name + email and tap Pay now → Paystack → back to your shop with a "Payment received ✓" banner.
  • The SO's status updates to Paid (visible on the SO edit page when you refresh).

Release the goods — mark it delivered

  1. Back on the SO edit page, click Mark delivered (amber pill).
  2. Confirm the action — this creates the Invoice and closes the SO in one transaction.
  3. You're navigated to the new invoice for review.
  4. Important: if the customer already paid via the pay link, the invoice's slogan carries a "Prepaid X.XX via Paystack (session #N, ref …)" note. In this release you still need to add the payment to the invoice manually from the invoice's Payments tab — pick Paystack as the method and enter the prepaid amount. Auto-posting the payment row is a follow-up.
  5. If the customer hasn't paid, the invoice is a credit invoice — they pay you on collection using the normal invoice-payment path.

Tips

  • Reminders cost nothing — Send pay link is safe to click every day. The customer sees the same URL each time; the SO isn't disturbed.
  • Preview the customer view — hit Copy in the dialog and open the link on your own phone to check the layout before you send it.
  • No email on the customer? You're not stuck — type any address into Send to, or use WhatsApp. Neither one edits the customer record.
  • Deliver first, invoice second — for goods you're releasing before the money lands (credit customers, ongoing contract deliveries), use Mark delivered even if the SO wasn't sent for online payment. The resulting invoice is a normal credit invoice.
  • Convert to Invoice is still there — use it for the classic "operator raises a manual invoice from an old SO" case. Mark delivered is the preferred path for anything that involves an actual physical delivery event.

Common problems

  • The Send to box is empty and Send email is greyed out → the customer has no email on file. Type one into the box (it sends without changing the customer record), add one on the customer master, or send by WhatsApp instead.
  • The paper-plane icon isn't on the row → it only shows for Active orders with an amount. A Consumed order has already become an invoice, and a cancelled or zero-total order can't be billed.
  • "The Email channel isn't configured for this shop yet" → the SendGrid credentials aren't set for this deployment. An admin needs to add SendGrid:ApiKey and SendGrid:FromEmail on the API host.
  • Customer says the link says "Payment link not found" → the SO was cancelled or deleted. Send a new one from a fresh SO.
  • Customer paid but the SO still says Awaiting Payment → Paystack hasn't confirmed the transaction to us yet (usually a few seconds). Ask the customer to refresh the pay page; the /so/<token> page's own ?pay= callback verifies once. If it still shows Pending after a minute, the payment may have failed — check the Paystack dashboard.
  • "Mark delivered" is greyed out → the SO is already Consumed (converted). Look at the SO's status badge; if it says Consumed, an invoice was already raised — find it in Sales → Invoices.
  • After Mark delivered, the invoice shows the prepaid amount in the slogan but no payment row → this is expected in v1. Open the invoice's Payments tab and add the payment manually (Paystack method, the amount noted in the slogan). Auto-payment-row creation is a Slice-D follow-up.
  • Second "Send pay link" click says "The sales order has already been converted to an invoice" → the SO is Consumed. The pay link only applies to open SOs; if you want to collect against an existing invoice, use the invoice's own payment flow.

See it working on your own business

Start a 45-day free trial — no card needed — and follow this guide in your own practice company.