NETICS Blog

Safer website payments: one order, clear cancels, paid alerts

If your website takes payments through NETICS, each checkout now makes one order, a cancelled payment returns customers to your shop, and alerts come once paid.

If your own website sends its orders to NETICS and your customers pay on the NETICS payment page, three things changed on 17 October. A checkout makes one order, however many times the customer taps Pay. A customer who cancels is told plainly that they were not charged and goes back to your shop. And your team hears about a website order when it is paid, not when someone starts a checkout and walks away.

This is people's money, so each of these is about removing doubt: for the customer, for your team and for your books.

One order per checkout

A slow connection, a double tap on Pay or a page refresh can make a website send the same order twice. Before, that meant two orders on your board for one bag, and a team member deciding which one was real.

Now your website sends a key with each checkout, one key per shopping bag. If the same key arrives again, NETICS returns the order it already made instead of making another. Two requests arriving at the same moment still produce one order. Your board in NETICS CRM > Orders shows one order for one bag.

A cancelled payment says so

When a customer cancels on the payment page, the page now shows Payment cancelled with the line "You cancelled the payment. You have not been charged, and your order is still waiting for payment." After a five-second countdown ("Taking you back to" your site) it returns them to your shop's cancel page, where your website can keep their bag. It never sends a customer who cancelled to your order-received page.

Once a payment is confirmed, the page takes the customer to your order-received page instead.

What the customer saw on the way back from the payment company is treated as a hint only. Nothing is marked paid or unpaid because of it, and a verified payment always wins. If a customer did pay, the order is paid.

The payment page also names who is being paid ("Payment to" your business name), and NETICS's own support bubble no longer appears on it, so customers are not confused about whom they are dealing with.

Before, your team got "New order ORD-..." the moment a website checkout started, even for a bag nobody paid for. Staff could start packing an order that would never be paid.

Now a website order that will be paid online through NETICS sends no notice when it is created. When the payment is verified, the team gets New order ORD-..., paid with the items and the total, and a note that bank settlement is still pending. If the payment company reports the same payment twice, the team still hears about it once.

Orders paid any other way, such as on delivery or by transfer, are announced when they are placed, as before.

What you need to do

  • Make sure online payments are set up under Platform > Integrations > Get paid to your bank.
  • Ask whoever maintains your website to send the checkout key and a cancel page, as described below. A site that sends neither keeps working, but without the key it is not protected from double orders, and without a cancel page a customer who cancels is taken to your site's home page.
  • Send the customer's email with each order. NETICS needs it to create a payment link.

Payment status is only ever set by a verified payment from the payment company. Neither your website nor your staff can mark an order paid, which is what keeps the notices and your stock honest: stock is taken off when an order is paid, not when it is placed.

For developers

These are changes to the public API (developer platform):

  • Idempotency-Key on POST /api/public/v1/orders. Use 8 to 200 characters (letters, digits, ., _, :, -), one key per shopping bag. The same key with the same order returns that order with 200 and the header Idempotent-Replayed: true. The same key with a different order is refused with 422. Two racing requests make one order.
  • payment_method "online" marks an order paid through the NETICS checkout link. The team is notified when payment is verified, not at creation.
  • cancel_url on POST /orders/{id}/checkout, next to return_url. It must be on the same website as return_url, and return_url must be on an origin listed on one of your workspace's agents. Asking again for the same unpaid order returns the same link (reused: true).
  • Listen for the order.payment_changed webhook with to: "paid". Trying to set payment_state yourself returns 409.
  • The current JavaScript SDK and MCP checkout tool do not send Idempotency-Key or cancel_url yet. Call the HTTP endpoints directly for these.

If you sell online, see Orders and payments, and how NETICS works for retail and e-commerce and fashion businesses.

Variants: a photo, price and stock for every colour

Give each choice of a product its own photo, price, wholesale price, stock count and SKU. Your website, NETICS's chat, orders and stock all follow the exact variant.

Customers now hear when their order ships and arrives

When you move an order to Out for delivery or Delivered, NETICS tells the customer on WhatsApp or SMS, once, with the carrier's tracking link.

Wholesale prices: one catalogue for every buyer

Mark a customer as Wholesale, give products a wholesale price and a minimum quantity, and NETICS charges the right price on every order, wherever it comes from.

Run your business on NETICS

Start with a 3-day free trial, no card needed. Then choose Pay as you go with no monthly fee, or a plan from NGN 50,000 a month; Enterprise is set up with you.