Step 1: Create a payment intent
A Payment Intent represents your intent to charge a card. No funds are moved at this stage.string
required
ISO 4217 currency code. e.g.
USD.number
required
Amount in the smallest currency unit.
5000 = $50.00 USD.string
required
The ID of the account to credit on successful charge.
string
required
Your unique internal order or transaction reference.
string
A human-readable payment description. Maximum 250 characters.
object
Optional confirmation details. Include this when you want to create the Payment Intent and submit the card payment in the same request.
status: requires_action. No charge happens until you submit an Intent Action.
Create and confirm in one request
If your server already has the encrypted card payload, you can includeintent_action when creating the Payment Intent.
Step 2: Submit an intent action
Submit the card payment usingPOST /intent-actions with payment_type set to card-acq and the encrypted card payload in payment_type_data.data. See Card data encryption for how to create this value.
string
required
The ID of the Payment Intent to charge against. The intent must still have
status: requires_action.string
required
Always
confirm.string
required
Always
collections.string
required
The payment method. Use
card-acq for card payments.string
required
Base64-encoded RSA-OAEP SHA-256 encrypted card object.
object
required
Cardholder billing address.
string
Card authentication model.
3ds_required.object
required
Browser data used for 3DS authentication.
object
required
Cardholder identity details.
string
URL to redirect the cardholder to after 3DS completes. Required unless
auth_model is 3ds_disabled.3DS Authentication
3DS is the default card authentication model. If you omitauth_model, Nuvion treats the payment as 3ds_required, and browser_info becomes required. If the issuer requires customer interaction, the response returns status: pending_user_action, requires_action: true, and a next_action.url to redirect the cardholder to.
next_action.url. After authentication, Nuvion redirects the cardholder to return_url. Payment details such as status will be appended as query params to the return_url. Do not treat the redirect as proof of payment; confirm completion from the payment intent status or webhook.
Like so; <return-url>?payment_intent_action_id=01KVFT796D5M1RQ0S853P4XXXX&status=completed&payment_intent_id=01KVFT2B67R57FWGVDFNZ1XXXX&amount=300¤cy=EUR
Step 3: Check payment status
UseGET /payment-intents/{id} to check the latest status after redirect or while waiting for a webhook.
Apple Pay
For Apple Pay, setintent_action.payment_type to applepay-acq. Apple Pay does not use payment_type_data.data, full billing address fields, or card encryption in this request. The only required billing field is payment_type_data.billing_address.country.
Payment intent statuses
Intent action statuses
Webhooks
Use Payment Intent webhooks as the final confirmation that a card payment succeeded, failed, or was cancelled. This is especially important after a 3DS redirect, because the redirect only tells you the customer returned to your site.
Webhook payloads use Nuvion’s standard webhook envelope:
2xx response after receiving the webhook. If delivery fails, Nuvion retries with exponential backoff. See Webhooks for delivery and retry details.