Skip to content

Changelog

Changelog

What changed in the Raïs API and in these docs, newest first.

New entries are added at the top. A change that could break an integration will only ever ship under a new API version and is announced here first. See Versioning.

2026-11-02: the payer can e-mail the receipt, and no card number is shown

Checkout and receipts

  • A paid result page shows the payment method as CIB/Edahabia, never the card brand and never a card number (masked or not). The PDF receipt, its printed copy and the receipt e-mail say the same.
  • Email receipt sits next to Print on the result pages. The receipt goes to the address the payment already has (yours, or your saved customer's); when there is none the payer types one. A receipt is e-mailed once per payment. Test payments can e-mail theirs too: it is marked as a test.
  • The receipt e-mail now carries the rows of the result page: the Raïs order ID, the order number, the approval code, the date and the payment method.
  • The security check next to the terms is a visible badge: "Checking browser…", then "Captcha OK".

2026-11-02: the result page stays, and the checkout speaks of Raïs

Checkout and receipts

  • The result page no longer sends the payer to your site after a 3 second countdown. It stays on screen so the payer can read the details of the payment, and its Return to button leads to your success_url or cancel_url as before. If your app relied on the automatic redirect to a deep link, the payer now taps the button. Webhooks and the API are unchanged: confirm payments from them, as always.
  • A paid result shows the gateway's order id as the Raïs order ID; a failed one shows none. The name on the card is no longer shown, on the page or on the PDF receipt, which also names the order id Raïs order ID.
  • The sandbox checkout no longer lists SATIM's test cards or the 3-D Secure password: type a card from Test cards and sandbox. A live payment never showed them.
  • The checkout names SATIM only where a payment has an outcome: the result pages and the receipt carry SATIM's name and its support number.

2026-10-29: fees, and the payer's pages on their own address

API

  • Fees. A payment carries fees (satim, rais and total, in centimes, excluding VAT) and net (amount minus fees.total), both null until it is paid. A refund carries its own fees once it has succeeded. Events and webhooks carry the same objects. The fields are additive: the API version does not change. See Pricing and fees.
  • insufficient_balance: a live refund now needs your balance to cover the refund and its fee.
  • The sandbox shows simulated fees: nothing is charged.

Checkout and receipts

  • checkout_url and receipt_url are on https://pay.rais.app; the API stays on https://api.rais.app. Use the address the API returns, as before. See Hosted checkout and return URLs.

Documentation

  • A new guide, Pricing and fees: the price list, when a fee is charged, examples and the fee fields.

2026-10-26: first public version

API

  • Payments: create, retrieve, list and cancel, with integer amounts in centimes, items, metadata, a reference and an expiry.
  • Refunds: full and partial refunds of paid payments, with pending and failed outcomes.
  • Events: payment.succeeded, payment.failed, payment.cancelled, payment.reversed, refund.succeeded and refund.failed, readable for 30 days.
  • Account: retrieve the store behind a key.
  • Idempotency keys on payment and refund creation, cursor pagination, and one error envelope with request ids.
  • Scoped secret keys for the sandbox and for live, with IP allowlists, rolling and revocation. A key has no expiry date: it works until it is rolled or revoked.

Webhooks

  • Signed deliveries with the Rais-Signature header (HMAC-SHA256 over the timestamp and the raw body, with a five minute tolerance).
  • At-least-once delivery with up to eight attempts over about 20 hours, endpoint health with automatic disabling, secret rotation, and a test event from the dashboard.
  • The legacy format stays available, unchanged, for stores that configured a webhook URL before API keys existed.

Checkout and receipts

  • Hosted checkout in English, French and Arabic, with 3-D Secure through SATIM.
  • Return URLs: payment_id, status, reference and order_number are merged into your success_url or cancel_url, and custom app schemes are kept as they are. The older orderId parameter is no longer sent.
  • After a successful payment the result page returns the payer to your site after a 3 second countdown, which the payer can stop.
  • PDF receipts: receipt_url on paid, partially refunded and refunded payments, and GET /payments/{id}/receipt for a signed link valid for 15 minutes. Receipts are regenerated after a refund.
  • The sandbox checkout shows SATIM's test cards. A live payment never does.

Documentation

  • These docs, with the API reference generated from the OpenAPI document, code samples in nine languages, llms.txt, llms-full.txt, Markdown pages and the OpenAPI file at /openapi.json.