Accept via account details
Entities can receive funds directly into their Nuvion account using provisioned banking coordinates — no hosted checkout or payment session required. Share the account details with your payer and Nuvion notifies you via webhook when funds arrive.How it works
- Provision account details for the entity (
POST /account-details,asset_type: fiatorstablecoin). - Share the returned banking coordinates — account number, sort code or routing number, BIC/SWIFT — with the payer.
- The payer initiates a bank transfer from their own bank to those coordinates.
- Nuvion credits the entity’s account and fires
inflows.completed.
Webhook: inflows.completed
Listen for inflows.completed to be notified when funds arrive. This is the authoritative signal that the account has been credited.
Unique identifier for the inflow transaction.
Amount received in the smallest currency unit. e.g.
10000 = $100.00 USD.ISO 4217 currency code of the received funds.
Idempotency reference for the transaction. Use this to deduplicate webhook deliveries.
Identifier for the sender’s account.
The ID of the Nuvion account that was credited.
The ID of the entity whose account was credited.
Always
successful for this event.Payment reference provided by the sender.
Fee applied to the inflow in the smallest currency unit.
Always
inflow.Accept via bank transfer
Nuvion hosts the bank transfer checkout page. Your server creates a funding session, redirects the user to the hosted URL, and receives a webhook when funds settle. Supported currencies:GBP, EUR
Create a funding session
Amount in the smallest currency unit.
10000 = £100.00 GBP. Minimum: 1.ISO 4217 currency code. One of
GBP, EUR.The ID of the account to credit when the payment settles.
HTTPS URL to redirect the user to after they complete or abandon the checkout. Must use HTTPS.
A unique idempotency key for this session. 1–255 characters. Submitting a duplicate reference returns a
409 with the original session’s payment_id.Display text shown to the user on the checkout page. Max 255 characters.
ISO 3166-1 alpha-2 country code of the payer. e.g.
GB, DE. Used to tailor the checkout experience to the payer’s country.Optional key-value metadata to attach to the session.
Redirect the user
Redirect your user to thecheckout_url returned in the response. Nuvion handles bank authentication, authorisation, and error states on the hosted page.
Handle the return
When the user completes or abandons the checkout, they are redirected to yourredirect_url. Do not treat the redirect as confirmation of payment — always verify status via webhook or API.
Check session status
Funding session statuses
| Status | Terminal | Description |
|---|---|---|
awaiting_user | No | Session created, user has not started |
processing | No | User has initiated the bank transfer |
pending_settlement | No | Transfer accepted by the bank, awaiting settlement |
settled | Yes | Funds credited to the account |
failed | Yes | Transfer rejected by the bank |
expired | Yes | Session expired before the user completed payment |
cancelled | Yes | Session was cancelled |
failed, the response includes a failure_code:
| Code | Retryable | Reason |
|---|---|---|
insufficient_funds | Yes | Payer account has insufficient funds |
bank_rejected | Yes | Bank rejected the transfer |
account_closed | No | Payer account is closed |
authorization_revoked | No | Authorisation was revoked |
provider_error | Yes | Internal provider error |
Webhook
Listen forfunding_session.updated to receive real-time status changes. Nuvion retries webhook delivery for 72 hours with exponential backoff.
Accept via card
Nuvion’s card acquiring API uses a two-step flow: create a Payment Intent to declare the charge, then submit an Intent Action to execute it with the card details.Step 1: Create a payment intent
A Payment Intent represents your intent to charge a card. No funds are moved at this stage.ISO 4217 currency code. e.g.
USD.Amount in the smallest currency unit.
5000 = $50.00 USD.The ID of the account to credit on successful charge.
Your internal order or transaction reference.
A human-readable description shown in the Nuvion dashboard.
status: requires_action. No charge happens until you submit an Intent Action.
Step 2: Submit an intent action
Submit the card details against the intent usingPOST /intent-actions. Card data must be encrypted using Nuvion’s public key before submission.
Without 3DS
Use this path when the card does not require strong customer authentication.charge_amount is the total debited from the card — amount plus applicable_fee. Save provider_reference for reconciliation with your payment processor records.With 3DS
Includebrowser_info collected from the cardholder’s browser to enable 3DS authentication. If the issuer requires a challenge, the response returns status: pending_user_action and a next_action.url to redirect the cardholder to.
next_action.url. After the 3DS challenge completes, they are sent to your return_url. Listen for payment_intent.completed or payment_intent.failed to confirm the outcome.
Apple Pay
For Apple Pay, setpayment_type to applepay-acq. The payment_type_data does not require a data field — only billing_address.
Intent action parameters
The ID of the Payment Intent to charge against.
Always
confirm.Always
collections.The payment method. One of
card-acq or applepay-acq.Base64-encoded encrypted card data. Required for
card-acq.Cardholder billing address. Fields:
address_line_one, city, state, country, zip.Browser fingerprint for 3DS authentication. Include to enable 3DS. Fields:
user_agent, language, color_depth, screen_height, screen_width, timezone_offset, java_enabled, javascript_enabled, accept_header.URL to redirect the cardholder to after 3DS completes.
Payment intent statuses
| Status | Description |
|---|---|
requires_action | Intent created — no action submitted yet |
pending_user_action | Awaiting 3DS completion from the cardholder |
completed | Charge successful |
failed | Payment could not be completed — check status_reason |
Webhooks
| Event | Trigger |
|---|---|
payment_intent.completed | Charge successful — funds credited to the account |
payment_intent.failed | Charge declined or failed |
What’s next
Send a payout
Send funds from an account to any bank account globally.
Stablecoins
Accept USDC and USDT via a provisioned wallet address.
Transfers API reference
Full endpoint documentation for payment intents and transfers.
