Skip to main content
GET
A polling endpoint: after the cardholder completes card entry and passkey approval on Prava’s secure surface, poll it to read the outcome and, for non-quote checkouts, the single-use credentials. GET /v1/sessions/{sessionId}/payment-result · Authenticated with your secret key.

Path parameters

string
required
The session id from Create Session.

Response

string
string | null
string
Overall session status: pending, processing, awaiting_result, completed, or failed. processing means authentication or tokenization is in flight, or a quote-backed merchant checkout is not yet terminal.
object[]
object
Present for quote-backed sessions when merchant lifecycle data exists. Omitted for non-quote checkouts and sessions without that data. This projection contains only a normalized status and an optional merchant order ID.
object
Present for an explicitly simulated sandbox session once an eligible terminal payment outcome is observed. Omitted for ordinary results and outcomes that cannot be simulated.
object
Present for a terminal quote-backed failure: { code, message }. Confirmed payment failures use canonical codes such as CARD_DECLINED, INSUFFICIENT_FUNDS, or the fallback PAYMENT_FAILED. See Errors.

Notes

  • For non-quote checkouts, token and dynamic_cvv contain the virtual card credentials your agent uses at checkout.
  • Read transactions[].card_id as the source of truth for the card bound to the transaction, whether it was preselected or chosen on the collection surface.
  • For quote-backed checkouts, Prava performs the merchant checkout. Results contain credential-free transaction summaries (txn_id, card_id, and status); they never include token, CVV, expiry, or line-item credentials.
  • merchant_res contains only status and optional orderId. Read canonical failure details from the top-level error. Keep polling while the top-level status is pending or processing.
  • Sandbox simulation can return effective completed and merchant_res.status: "paid" while observed_result.status is failed. Those effective statuses are returned only after Core’s sandbox completion succeeds; they do not establish merchant settlement. The simulation request is supplied at session creation and is not echoed as a response-side sandbox_simulation object.
  • Responses use Cache-Control: no-store.
  • Prava performs a lazy mandate expiry check on every request — expired mandates are reflected in the status.
  • After using non-quote checkout credentials, report the outcome via Report Status.

Error responses

Authorizations

Authorization
string
header
required

Your secret key: sk_test_* (sandbox) or sk_live_* (production).

Path Parameters

sessionId
string
required

The session ID returned from Create Session

Response

Payment result

session_id
string
required
order_id
string | null
required
status
enum<string>
required

Overall session status. processing means the payment operation is still in flight: a non-quote checkout is authenticating or tokenizing, or a quote-backed merchant checkout has not reached a terminal outcome.

Available options:
pending,
processing,
awaiting_result,
completed,
failed
transactions
object[]
required
error
object

Terminal quote-backed failure: a canonical payment error (including the PAYMENT_FAILED fallback), MERCHANT_PREPARE_FAILED, or MERCHANT_ACTION_REQUIRED. Read this with the top-level status; merchant_res contains only lifecycle status and optional orderId.

observed_result
object

Actual terminal payment outcome for an explicitly simulated sandbox session. Omitted for ordinary results and outcomes that cannot be simulated. Effective top-level completed can coexist with an observed failed payment.

merchant_res
object

Present for quote-backed sessions when merchant lifecycle data exists; omitted for non-quote results and absent lifecycle data. Narrow credential-free projection. Effective completed results map to paid, including successful sandbox simulation; observed_result retains the actual simulated-session outcome.