unified-payments
  1. Unified Payments
unified-payments
  • Unified Payments
    • Overview
    • Encryption
    • Authentication
    • Card (Non-3DS)
    • Card (3DS)
    • Apple Pay
  • Unified Payments API
    • Payments
      • Initiate Payment
      • List Payments
      • Get Payment
    • Refunds
      • Initiate Refund
      • List Refunds
      • Get Refund
  • Schemas
    • Schemas
      • SuccessResponse
    • ErrorResponse
    • PaymentRequest
    • PaymentResponse
    • WebhookPayload
  1. Unified Payments

Card (Non-3DS)

Non-3DS Card Payments#

Process card payments without 3D Secure authentication for immediate results.

Overview#

Non-3DS payments provide an immediate response (success or failure) without requiring customer authentication. This is ideal for:
Low-risk transactions
Recurring payments (with saved cards)
Merchants with low fraud rates
Faster checkout experience
Trade-off: Higher risk, less liability protection compared to 3DS payments.

Authentication#

All requests must include your Client ID in the Authorization header.
See Authentication Guide for details.

Encryption#

Card data must be encrypted before sending.
See Encryption Guide for implementation details.

Endpoint#

POST /v2/payments
Base URLs:
Sandbox: https://sandbox-acquiring.globalremitfs.com
Production: https://acquiring.globalremitfs.com

Request Parameters#

FieldTypeRequiredDescription
merchant_referencestringYesYour unique order/transaction reference (must be unique)
merchant_metaobjectNoCustom metadata (max 10 key-value pairs)
amountintegerYesAmount in smallest currency unit (cents for USD, pence for GBP)
currencystringYesISO 4217 currency code (USD, GBP, EUR, etc.)
descriptionstringNoPayment description (shown to customer)
payment_methodobjectYesPayment method details
payment_method.typestringYesMust be "card"
payment_method.datastringYesRSA-encrypted card data (see encryption guide)
billing_addressobjectYesCustomer billing address
billing_address.first_namestringYesCustomer first name
billing_address.last_namestringYesCustomer last name
billing_address.emailstringYesCustomer email (must be valid format)
billing_address.address_line_onestringYesThe first line of the billing address
billing_address.address_line_onestringNoThe second line of the billing address
billing_address.countrystringYesISO 3166-1 alpha-2 country code (US, GB, etc.)
billing_address.citystringYesCity name
billing_address.statestringYesState name
billing_address.zipstringNoPostal/ZIP code
ip_addressstringYesCustomer IP address (for fraud detection)
redirect_urlstringNoURL to redirect customer after payment (used for webhooks)
webhook_urlstringNoURL for payment status webhooks
enable_3dsbooleanNoMust be false or omitted for non-3DS. Default: auto-detect

Response Fields#

Success Response (HTTP 200)#

FieldTypeDescription
statusstringAlways "successful"
messagestringSuccess message
dataobjectPayment response data
data.payment_idstringUnique payment identifier (ULID format)
data.merchant_referencestringYour original transaction reference
data.merchant_metaobjectYour custom metadata (as provided in request)
data.amountintegerPayment amount
data.currencystringPayment currency
data.statusstringPayment status: "completed" or "failed"
data.authorization_codestringBank authorization code (if successful)
data.failure_reasonstringFailure reason (if failed)
data.redirect_urlstringURL with payment result params
data.created_atnumberPayment creation timestamp (Unix ms)
data.completed_atnumberPayment completion timestamp (Unix ms)

Error Response (HTTP 4xx/5xx)#

FieldTypeDescription
statusstringAlways "error"
messagestringError description
codestringError code (AUTHERR, INVLDDATA, DUPLRCRD, etc.)

Example Request#

Full JSON#

{
  "merchant_reference": "order_12345",
  "merchant_meta": {
    "customer_id": "cust_789",
    "order_type": "retail"
  },
  "amount": 5000,
  "currency": "USD",
  "description": "Premium Subscription - Annual",
  "payment_method": {
    "type": "card",
    "data": "tbjH0nx6WaEkzHOjgw2crsusmVBuL8s+PxWFqYb5cWZ3k1..."
  },
  "billing_address": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com",
    "country": "US",
    "city": "New York",
    "zip": "10001"
  },
  "ip_address": "203.0.113.42",
  "redirect_url": "https://yoursite.com/payment/callback",
  "webhook_url": "https://yoursite.com/webhooks/payment",
  "enable_3ds": false
}

cURL#

Node.js#

Example Responses#

Successful Payment#

{
  "status": "successful",
  "message": "Payment processed successfully",
  "data": {
    "payment_id": "01HXYZ123ABC456DEF789GHI",
    "merchant_reference": "order_12345",
    "merchant_meta": {
      "customer_id": "cust_789",
      "order_type": "retail"
    },
    "amount": 5000,
    "currency": "USD",
    "status": "completed",
    "authorization_code": "AUTH123456",
    "redirect_url": "https://yoursite.com/payment/callback?payment_id=01HXYZ123ABC456DEF789GHI&merchant_reference=order_12345&status=success",
    "created_at": 1699564800000,
    "completed_at": 1699564802000
  }
}

Failed Payment#

{
  "status": "successful",
  "message": "Payment processed",
  "data": {
    "payment_id": "01HXYZ123ABC456DEF789GHI",
    "merchant_reference": "order_12345",
    "merchant_meta": {
      "customer_id": "cust_789",
      "order_type": "retail"
    },
    "amount": 5000,
    "currency": "USD",
    "status": "failed",
    "authorization_code": null,
    "failure_reason": "Insufficient funds",
    "redirect_url": "https://yoursite.com/payment/callback?payment_id=01HXYZ123ABC456DEF789GHI&merchant_reference=order_12345&status=failed",
    "created_at": 1699564800000,
    "completed_at": 1699564801000
  }
}
Note: Even failed payments return HTTP 200. Check data.status field.

Duplicate Merchant Reference#

{
  "status": "error",
  "message": "A payment with this merchant reference already exists",
  "code": "DUPLRCRD"
}
HTTP Status: 409 Conflict

Invalid Card Data#

{
  "status": "error",
  "message": "Invalid card number",
  "code": "VALIDATIONERR"
}
HTTP Status: 400 Bad Request

Authentication Error#

{
  "status": "error",
  "message": "Client ID not found",
  "code": "AUTHERR"
}
HTTP Status: 401 Unauthorized

Redirect URL Parameters#

After payment completion, the customer can be redirected to your redirect_url with these query parameters:
ParameterDescription
payment_idNuvion payment ID
merchant_referenceYour original transaction reference
statusEither "success" or "failed"
Example:
https://yoursite.com/payment/callback?payment_id=01HXYZ123ABC456DEF789GHI&merchant_reference=order_12345&status=success
Your redirect URL may already have query parameters. Nuvion's parameters are appended safely:
https://yoursite.com/callback?session=abc123&payment_id=01HXYZ...&merchant_reference=order_12345&status=success

Webhooks#

If you provide a webhook_url, Nuvion will send a POST request with the payment result:
{
  "event": "payment.completed",
  "payment_id": "01HXYZ123ABC456DEF789GHI",
  "merchant_reference": "order_12345",
  "merchant_meta": {
    "customer_id": "cust_789",
    "order_type": "retail"
  },
  "status": "completed",
  "amount": 5000,
  "currency": "USD",
  "authorization_code": "AUTH123456",
  "created_at": 1699564800000,
  "completed_at": 1699564802000
}
Always verify webhook signatures (documentation coming soon).

Testing#

Test Card Numbers (Sandbox)#

Card NumberResult
4111111111111111Success
4000000000000002Declined (insufficient funds)
4000000000000069Declined (expired card)
4000000000000127Declined (invalid CVV)
Note: Use any future expiry date and any 3-digit CVV.

Common Errors#

Duplicate merchant_reference#

Solution: Each merchant_reference must be unique. Use a new reference for each payment attempt.

Decryption failed#

Solution: Check your encryption implementation. See Encryption Guide.

Invalid card number#

Solution: Validate card number using Luhn algorithm before encrypting.

Client ID not found#

Solution: Verify your Client ID. See Authentication Guide.

When to Use 3DS Instead#

Consider using 3DS payments for:
Higher-risk transactions
Regulatory requirements (PSD2 in Europe)
Better fraud protection
Liability shift to card issuer

Support#

Email: support@nuvion.com
Documentation: https://acquiring-docs.globalremitfs.com
Modified at 2026-01-13 10:54:37
Previous
Authentication
Next
Card (3DS)
Built with