Redirect to Checkout
After creating a session, send the buyer to the checkout URL.
Want full branding control instead? Embedded Fields keeps the buyer on your domain and mounts our card / address / wallet elements directly into your page. Same
/v1/payment_intentsserver lifecycle on the back end; no redirect.
Option A: vora-hosted.js (automatic)
The browser snippet creates the session and redirects in one step:
<script src="https://js.vonpay.com/v1/vora-hosted.js"></script>
<script>
VonPay.configure({ apiKey: "vp_pk_live_xxx" });
VonPay.checkout({
amount: 1499,
currency: "USD",
country: "US",
successUrl: "https://mystore.com/confirm",
});
</script>
vora-hosted.js requires a publishable key (vp_pk_*). Secret keys are rejected — see vora-hosted.js for details.
Option B: Server-side redirect
Your server creates the session, then redirects the buyer:
// Express.js example
app.post("/checkout", async (req, res) => {
const session = await vonpay.sessions.create({
amount: req.body.amount,
currency: "USD",
country: "US",
successUrl: `https://mystore.com/order/${req.body.orderId}/confirm`,
});
res.redirect(303, session.checkoutUrl);
});
What the Buyer Sees
The hosted checkout page displays:
- Header — your merchant name
- Order summary — line items with quantities and prices (if provided)
- Billing address form — pre-filled with
buyerNameif you provided it - Payment methods — auto-detected based on device, browser, and location (cards, Apple Pay, Google Pay, Klarna; availability varies by region)
- Pay button
On mobile, a sticky bottom bar shows the total and pay button for easy access.
3D Secure (3DS)
3DS challenges on the hosted page are handled automatically — when the issuer requests a step-up, the buyer is redirected to the bank's challenge page and returned to your successUrl after a result, exactly as if no challenge had fired. There is no integrator work to enable or wire 3DS on hosted checkout. If you need programmatic control over the 3DS step (e.g. fraud-check-before-capture), use Payment Intents directly — those expose next_action.redirect_to_url for you to drive.
Buyer receipt email
Von Payments does not send a confirmation email to the buyer after a successful hosted-checkout payment. Order-confirmation email is your responsibility — wire it off the charge.succeeded webhook (see Webhooks) or off your verified return-URL flow (see Handle the return).
Auto-redirect after payment
On a successful capture, the hosted page automatically redirects the buyer back to your successUrl — no buyer click required. The redirect fires after a short 5-second countdown ("Redirecting in N seconds…"); a return link labeled with your merchant name is also shown so the buyer can return immediately. If you didn't provide a successUrl (or it points back at the hosted success page), no redirect happens and the buyer simply stays on the confirmation screen.
If the payment ends in a failed state, the buyer is automatically redirected to a dedicated Payment Failed screen rather than the order confirmation.
Session Expiry
If the buyer arrives at the checkout URL after the session TTL elapses (expiresIn, default 30 minutes, max 7 days), the request returns an HTTP 410 and they see a generic Checkout Unavailable error page. That error screen does not auto-redirect — if you provided a cancelUrl, a "Return to store" link points the buyer back to your store.
Cancel
If the buyer clicks "back" or closes the page without paying, no redirect happens. If you provided a cancelUrl, a "Return to store" link is available on the error / expiry screen.