FinaDOCS

Reconcile Prepaid Payment

POST/fina/v1/checkout/reconcile_prepaid_payment

Pulls the authoritative state of a FINA-collected down payment and lets FINA reconcile it — the fallback when the down payment webhook is delayed, dropped, or never received.

Webhook first, reconcile as backstop

The Down Payment Webhook is the primary, real-time confirmation. Call this endpoint on demand instead — when the buyer lands on your redirection URL, when a confirmation hasn't arrived within your expected window (poll with backoff, not a tight loop), or when a buyer returns to an awaiting-payment order. Fulfilment decisions key off payment_status here exactly as they would off the webhook. Only applicable to orders using collection_method FINA.

Flat response envelope

Unlike the other endpoints, this response has no data object and error_code is a number, not a string. It is also idempotent with side effects: a paid session is finalized (order authorised), a voided session is re-issued with a fresh payment_url, and an already-authorised order returns its current state unchanged.

Request

order_numberstringrequired

The FINA order id — the order_id returned by Initiate Checkout.e.g. F26070910AB3XKQ70

Response

error_codenumber

0 on success (numeric, not a string).

errorsarray

Failure details, empty on success.

messagestring

Human-readable status.

in_progressboolean

true — a finalize is already running concurrently. Treat as still processing and retry after a short delay.

payment_statusenum

Current state of the prepaid session. Treat PAID / COMPLETED as confirmed — the order is authorised and safe to fulfil.PENDINGINITIATEDVOIDEDPAIDCOMPLETED

payment_urlstring

Hosted checkout URL for the current session. If the session is unpaid or was re-issued, present this to the buyer to complete or retry the payment. Empty once paid.

transaction_idstring

Current payment transaction id.

Errors

Returned as HTTP 200 with a non-zero error_code — see Error Handling.

CodeNameDescriptionResolution
400INVALID_PARAMSA required field is missing or a value failed validation (e.g. totals don't reconcile, invalid phone format, unknown field value).Check errors[] for the failing field. Ensure order.total_amount equals the sum of items[].total_amount plus shipping_amount minus discount_amount.
808INVALID_ORDERNo order was found for the given order_id / order_number.Use the order_id returned by Initiate Checkout.
500INTERNAL_ERRORAn unexpected failure occurred on FINA's side.Retry with backoff; contact FINA support if it persists.
Sandbox
POST /fina/v1/checkout/reconcile_prepaid_payment
curl -X POST "https://apibe.silqfi.xyz/fina/v1/checkout/reconcile_prepaid_payment" \
  -H "Authorization: bearer FINA_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "order_number": "F26070910AB3XKQ70"
  }'

FINA_BEARER_TOKEN is provided by the FINA team, per environment. Contact the FINA team for the production base URL.

Response · 200 · Still unpaid
{
  "error_code": 0,
  "errors": [],
  "message": "success",
  "in_progress": false,
  "payment_status": "INITIATED",
  "payment_url": "https://checkout.example/prepaid/9f2c1b4e",
  "transaction_id": ""
}