Skip to main content
Every card collection starts the same way: your backend creates a session (POST /v1/sessions) and gets back a session_token and an iframe_url. From there you choose how the cardholder enters their card — and you pick by setting one field, integration_type, on the session.

Embedded

Prava’s card UI runs inside your app via the SDK. You control the surrounding page and get the result in-app.

Hosted (default)

You redirect the cardholder to a Prava-hosted page. No SDK, minimal code — Prava returns them to your callback_url when done.
Either way, the card is entered on Prava’s secure surface and tokenized — your app never touches the raw card number. There is no mode where you collect the PAN yourself.

At a glance

Both modes use the same session and the same iframe_url — embed it, or open it directly.

Embedded mode

Create the session with integration_type: "embedding", then mount the card UI with the SDK.
The result arrives in onSuccess without leaving your page. See Collect Card Details for every option and callback, and remember to call prava.destroy() on cleanup.

Hosted mode (default)

Leave integration_type off (it defaults to "full_checkout") and give Prava a callback_url. Then send the cardholder to the returned iframe_url — no SDK needed.
When the cardholder finishes, Prava redirects them back to your callback_url. Your backend then reads the outcome with Get Payment Result and reports the final status with Report Status.
callback_url must be an https URL. Without it, a hosted checkout has nowhere to return the user.

Which should I use?

Choose Embedded

You want the card step to feel native, keep the user on your page, and react to the result in-app.

Choose Hosted

You want to ship fast with minimal frontend code and are happy to redirect out and back.

Next steps

SDK Overview

The library behind embedded mode.

Create Session

integration_type, callback_url, and the full request/response.