A payment link is a page DINARI hosts for you. You create it in the portal, send the address to your customer however you like — WhatsApp, email, a printed invoice, a QR code — and they pay by CIB or Edahabia card. No code, no website needed. Payments → Payment links → New link.
The customer pays exactly what you set. Use this for an invoice, a specific order, a booking.The amount is locked to the link. Nothing a customer sends can change it — a request that arrives carrying a different amount has that amount ignored, not merely rejected, so a crafted link cannot pay 1 DZD against a 40 000 DZD invoice.
Your link looks like this, on the same domain as your dashboard:
The last part is twelve random characters — not built from your invoice number or the title. Two reasons:
  1. A guessable link like /l/facture-mars-2026 would let anyone walk your entire billing history by changing the date.
  2. The alphabet leaves out 0, O, 1, I and l, because these get read down a phone line and copied off paper.

What your customer sees

A page with your business name, what they are paying for, the amount, and the fields you chose to collect. They are then sent to SATIM’s secure page to enter their card details. Card details never touch DINARI, and they never reach you. The card is entered on SATIM’s own page. After paying, the customer comes back to a receipt page showing the outcome. If it succeeded, the receipt carries everything SATIM requires:
  • your business name and the order reference
  • the amount and the date
  • the masked card number and brand
  • the authorization number and the transaction id
  • the issuer’s response message
They can print it, download it as a PDF, or have it emailed to themselves.
If a payment fails, the page says why in the customer’s own language, and offers to try again. A refused card and a technical failure are different things and are not shown as the same message.

Watching payments come in

Payments lists everything, newest first, with its status: Only a PAID payment becomes money you are owed — see Getting paid. Your hosted links are public pages, so DINARI puts limits on them without you having to ask:
  • A challenge (“prove you are a person”) in front of the payment.
  • 60 payment attempts per hour per link, and 20 per hour from one address — far above anything honest, far below what makes card-testing worthwhile.
These are invisible to a real customer. If a legitimate one is ever caught by them, tell DINARI.

Refunds

Open a paid payment and refund it, in full or in part. A refund cannot exceed what has not already been refunded.
A refund reverses the payment, but money already withdrawn to your bank account is not automatically clawed back. Refunding a payment you have already been paid out for will show against your balance.

Doing this from your own software

Everything above is also available over the API, using an API key instead of a portal login — including creating payments directly and receiving signed webhooks when they complete.

Payments API

Create payments and read their status.

Webhooks

Get told server-side when a payment completes.