Collect payments with links: from invoice to settled, automatically

From invoice to settled automatically: create a payment link, your customer pays by UPI or card, and the payment record appears the moment money lands.

By the end of this guide a customer of yours can open a link, pay it by UPI or card, and AxisIQ will have that payment filed against the right invoice — with nobody retyping anything off a bank statement. This is the practical setup for Payments in AxisIQ: connecting your own Razorpay account, telling Razorpay where to report back, raising your first link, and deciding what should happen the moment money lands.

Budget about twenty minutes. Part of it happens in the Razorpay dashboard rather than in AxisIQ, and none of it needs a developer.

Be clear on one thing before you start: the money never touches AxisIQ. Your customer pays into the Razorpay account you already own, and payouts reach your bank on the schedule Razorpay already gives you. What AxisIQ adds is the join — the link knows which invoice it belongs to, and the settled payment comes back and says so. The wider picture is on Payments.

What you need

  • A Razorpay account you can generate API keys in. Start in test mode if you would rather rehearse the whole thing first.
  • The right to manage payment connections in your workspace. The workspace owner already has it; if you are not the owner, get it granted before you begin — Step 8 covers who should hold what.
  • Optionally, a few invoice records already in AxisIQ, if you want links that fill themselves in. Invoices are ordinary records like orders and customers — see Operations.

You do not need a plugin, a checkout page of your own, or anything installed.

Step 1 — Connect your Razorpay account

Create a connection in Payments and name it something you will still recognise in six months. It takes three values from Razorpay: the key id, the key secret, and a webhook secret.

The webhook secret is a phrase you choose yourself when you create the webhook in Step 2. Decide it now and use the identical text in both places, or leave the field empty and come back to it once the webhook exists. If the two do not match, AxisIQ rejects Razorpay's notifications as unverified and settlement goes quiet.

Three things happen when you save:

  • The credentials are proved against Razorpay before anything is kept. If Razorpay refuses them, the connection is not created and nothing changes. The same check runs on every later edit, so a typo cannot quietly break a working connection.
  • Your keys are encrypted with AES-256-GCM at rest. What lands in storage is ciphertext; the readable values exist only in memory, for the moment a request to Razorpay needs them.
  • You never see them again. No screen, export or admin view brings a stored secret back. When you edit the connection later, leaving a secret field blank keeps the one you already have — renaming a connection never means fishing the keys out of Razorpay a second time.

Step 2 — Point Razorpay's webhook at your workspace

The saved connection shows you a URL. That address belongs to that connection specifically. Copy it into Razorpay's webhook settings, enter the same secret phrase you used in Step 1, and subscribe it to the payment link events — payment_link.paid is the one that settles, while payment_link.cancelled and payment_link.expired stop a dead link from looking open.

This is the channel that makes settlement automatic. Skip it and your links still work perfectly well — customers still pay, money still arrives — but you have to use the Refresh action on each link to pull the result in, which is fine for five links a month and miserable for fifty.

Step 3 — Test the connection before you go live

There is a test action on the saved connection. Use it now, and use it again any time you suspect something has changed on the Razorpay side — rotated keys are the usual culprit, and a test takes a second where a failed collection takes a phone call.

There are two kinds, and the difference is only where the numbers come from.

A manual link carries a typed amount and a line of text saying what it is for. Right for a deposit, an advance, a one-off repair — anything nobody has raised paperwork for yet.

An invoice-bound link begins at the invoice itself: choose the record, and the amount and customer details come across with it. When it is paid, the payment that lands points straight back at that invoice, which is what makes reconciliation a non-event later.

Then share it. Copy it into whatever you already use with that customer — WhatsApp, your own mail client, a portal, the phone — or, if your company has connected an email, SMS or WhatsApp provider in Phone & Messages, send it from AxisIQ through that account. On the hosted page the customer picks UPI, card, netbanking or a wallet, according to what your Razorpay account has enabled.

If you are in test mode, pay one of your own links now with a test method and watch Step 6 happen.

Step 5 — Choose where the customer lands afterwards

After paying, the customer is sent onward to the first destination that exists: one set on the link itself, otherwise the default on the connection, otherwise a hosted receipt page that states plainly whether the payment succeeded.

In practice, set the connection default once — a thank-you page on your own site — and use a per-link destination only when a particular link deserves its own landing spot. Then no link raised in a hurry ever dead-ends.

Step 6 — Watch it settle

When a link is paid, Razorpay posts to the webhook address and AxisIQ writes the payment down: Razorpay's payment id as the record number, the amount, the method the customer chose, the date.

It happens exactly once. Payment providers re-send notifications when they cannot be sure the first one arrived, which is correct behaviour and is exactly how duplicate payment records appear in software that does not guard against it. Here a repeat delivery finds the payment already recorded and does nothing at all. There is no cleanup afterwards, because there is nothing to clean up.

A missed one is a click, not a ticket. Outages, restarts and a webhook configured slightly wrong all happen. Use Refresh on the link: AxisIQ asks Razorpay what state the link is in now and settles it there and then.

Step 7 — Decide what happens after the money arrives

The new payment record carries a link back to the invoice it settled. The invoice's own status does not move.

That is deliberate. Part payments, advances and money landing against the wrong invoice are ordinary events in a real business, and software that marks things paid on its own is how a receivables list stops being trusted. AxisIQ records the fact; the judgement stays yours.

If your collections genuinely have no ambiguity, automate the last step yourself. A flow triggered when a payment record is created can move the order into fulfilment, update a field, or push a message to the tool your team lives in over an outbound HTTP call. See Flows.

Step 8 — Split who can collect from who holds the keys

Sending a payment link and holding your provider credentials are different jobs, and they are separate permissions. Someone can create and share links all day with no path to the keys; someone in finance can own the connection without ever raising a link.

Grant them as ordinary rules in Team & Permissions. Doing this on day one is much easier than retrofitting it after four people have full access because it was quicker at the time.

Edge cases, and what this does not do

  • Keys rotated on the Razorpay side. The test action tells you immediately. Re-saving is checked against Razorpay first, so you cannot half-fix a connection.
  • A link paid while your workspace was unreachable. Refresh brings it in whenever you notice.
  • Posting is a per-document-type setting. A settled payment creates a journal entry in the ledger only when it settles an invoice of a document type with ledger posting switched on. Posted entries are immutable and mistakes are corrected with a reversal rather than an edit.
  • One provider today. Razorpay, and only Razorpay. If you collect through someone else, this is not yet for you.
  • No recurring collection. Every link is a single payment. There is no subscription, mandate or auto-debit support, so a monthly retainer means a monthly link each month.

FAQ

How do I send a payment link to a customer? Create the link in AxisIQ — either manually with an amount and description, or from an invoice record — then pass it on however you normally reach that customer. AxisIQ can also send it by email, SMS or WhatsApp through a provider account your company connects in Phone & Messages; it never sends from an account of its own.

Can my customers pay by UPI? Yes, if UPI is switched on for your Razorpay account: the hosted page offers whatever methods that account has enabled — for customers in India that usually means UPI first, with cards, netbanking and wallets alongside. You need your own Razorpay account, because collection runs on your keys and the money settles into your account.

The customer paid but no payment record appeared — what do I do? Use Refresh on the link; AxisIQ re-reads it from Razorpay and records the payment on the spot. Then recheck the webhook URL and secret from Step 2, because that is what makes the next one arrive without you.

Does the invoice close itself when the link is paid? No. The payment record links to the invoice and stops there, leaving the decision to a person. If your collections are unambiguous, a flow triggered on a new payment record can close it for you.

Can I collect recurring or subscription payments? Not today. Each payment link is a one-time collection, and mandates or auto-debit are not part of it.