RsomPay

External API — Changelog

Back to API Guide

Changelog

Every change to the RsomPay External API, newest first. The API base path (/api/external/v1) never changes — every release below is additive and backward compatible.

v1.4.0

Subscriptions & Saved Cards

Added
  • Subscriptions — recurring billing on a schedule. POST /subscriptions to create, plus list, detail, cycles, payment-link, update, charge, pause, resume, cancel, and payment-method endpoints (11 in total). Choose automatic billing (RsomPay charges each cycle with dunning retries on failure) or merchant_managed (you call /charge yourself). Disabled by default — contact support to enable it for your account. See §15. Subscriptions.
  • Saved Cards — reuse a customer's card across invoices without ever touching raw card data. POST /customers/{customer_external_id}/saved-card-token issues a one-time retrieval token once a customer opts in on checkout; pass it back as customer.saved_card_token on a later POST /invoices call. The token (plus card brand/last4) is now also auto-surfaced on your next GET /invoices/by-reference or POST /invoices response after a card is saved, exactly once, with no extra call needed — the explicit issue endpoint still works independently for rotating it on demand. See §14. Saved cards.
  • Charge with a saved card, server-to-serverPOST /invoices/{reference}/charge-saved-card charges an existing invoice directly from your backend using a saved-card token, with no customer visit to checkout. Idempotent on idempotency_key; asynchronous — returns 202, confirmed later via payment.completed/payment.failed. Requires the new client_invoices.charge permission. See §14. Saved cards.
  • New webhook events for the subscription lifecycle: subscription.created, .activated, .renewed, .payment_failed, .paused, .resumed, .canceled, .completed, and more — full list in §15.
  • New webhook event recurring.card_saved, fired once when a customer's card is saved for the first time.
  • New invoice/settlement webhook events: payment.expired, payment.refunded, settlement.updated, settlement.paid.
  • New data.status values refunded and partially_refunded — see §9. Invoice statuses.
Changed
  • Webhook payloads may now include a payment.reason field explaining why a payment failed or expired.
  • Fixed: a refunded invoice (full or partial) previously reported data.status: "issued" — identical to a never-paid invoice. It now correctly reports refunded or partially_refunded.
v1.3.0

Settlements

Added
  • GET /settlements and GET /settlements/{id} for read-only settlement/payout reconciliation, scoped to your own account (client_settlements.view).
v1.2.0

Refunds

Added
  • POST /invoices/{reference}/refund — full or partial refunds, disabled by default, requires an enabled account.
  • refund_status field on GET /transactions to track asynchronous refund confirmation.
v1.1.0

Payment method pre-selection

Added
  • Optional payment_method field on POST /invoices to pre-select mada, credit_card (Visa/Mastercard), apple_pay, or tamara, and skip the payment-method screen on the hosted checkout page.
v1.0.1

Guide refinements

Changed
  • Clarified partner-facing fields, the payment flow, and webhook signature verification docs.
v1.0.0

Initial release

Added
  • Initial partner integration guide — invoices, webhooks, payment flow. Docs site moved to static hosting (docs.rsompay.com).