Your reference

When creating a payment you may pass order_ref — your own identifier (e.g. an invoice number). It is stored with the payment, returned on reads, and included in webhook payloads, so you can reconcile events back to your records.
order_ref is for correlation, not deduplication: sending the same order_ref twice creates two distinct payments. Guard against double-submits on your side before calling the API.

Confirmation is idempotent

After the customer pays, Satim redirects them to Fintech Core’s return URL, which confirms the result and fires the webhook. Re-hitting that URL on an already-finalized payment is a no-op — the status is not recomputed and no duplicate webhook is enqueued. Polling GET /api/v1/payments/{id} while a payment is still PENDING will refresh its status from Satim without side effects.

Transfers

Bank transfers (/api/v1/transfers) require a unique_reference; reusing one is rejected, which makes transfer creation safe to retry.