Skip to main content
Nuvei is a global payment provider that provides comprehensive payment processing solutions across multiple payment methods and regions. PSE is a popular online payment method in Colombia that allows customers to pay directly from their bank account using the Colombian banking system. It is widely used for e-commerce transactions in Colombia.

Setup

Please follow the common Nuvei instructions to get set up with Nuvei. After setting up your Nuvei account, make sure PSE is enabled as a payment method on your account.

Features

Nuvei PSE payments support the following features:
  • Transaction synchronization - Keep payment statuses synchronized with Nuvei

Supported countries

Nuvei supports transactions from buyers in CO.

Supported currencies

Nuvei supports processing payments in COP, USD.

Limitations

The following features are not supported by this connector:
  • Refunds - Cannot refund PSE transactions
  • Delayed capture - Authorization and capture must happen together
  • Partial capture - Cannot capture a portion of the authorized amount
  • Void - Cannot cancel transactions once initiated
  • Payment method tokenization - Cannot store payment methods for recurring transactions
  • Zero auth - Zero-dollar verification transactions are not supported
  • Settlement reporting - Settlement reporting is not available

Integration

For PSE, the default integration for Nuvei is through a redirect to a hosted payments page. The PSE connection via Nuvei requires a few fields in the transaction request:
  • buyer.billing_details.first_name and buyer.billing_details.last_name - Customer name
  • buyer.billing_details.email_address - Customer’s email
  • connection_options.nuvei-pse.userType - Customer type (“N” for personal, “J” for a legal entity)
  • connection_options.nuvei-pse.userFisNumber - Customer’s document type
  • connection_options.nuvei-pse.fiscalNumber - Customer’s document number
  • connection_options.nuvei-pse.bankCode - The bank code of the selected bank
Start by creating a new transaction with the required fields:
var transaction = await client.Transactions.CreateAsync(
  transactionCreate: new TransactionCreate()
  {
    Amount = 4000,
    Currency = "COP",
    Country = "CO",
    PaymentMethod =
      TransactionCreatePaymentMethod.CreateCheckoutSessionWithUrlPaymentMethodCreate(
        new RedirectPaymentMethodCreate()
        {
          Method = "pse",
          RedirectUrl = "https://example.com/callback",
        }
      ),
    Buyer = new TransactionCreateBuyer()
    {
      BillingDetails = new BillingDetails()
      {
        FirstName = "John",
        LastName = "Doe",
        EmailAddress = "john.doe@example.com"
      }
    },
    ConnectionOptions = new Dictionary<string, object>()
    {
      ["nuvei-pse"] = new Dictionary<string, string>()
      {
        ["userType"] = "N",
        ["userFisNumber"] = "CC",
        ["fiscalNumber"] = "1148217216",
        ["bankCode"] = "1022"
      }
    }
  }
);
After the transaction is created, the API response includes payment_method.approval_url and the buyer_approval_pending status.
{
  "type": "transaction",
  "id": "ea1efdd0-20f9-44d9-9b0b-0a3d71e9b625",
  "payment_method": {
    "type": "payment-method",
    "approval_url": "https://cdn.sandbox.spider.gr4vy.app/connectors/nuvei/apm.html?token=..."
  },
  "method": "pse"
}
Redirect the buyer to the approval_url so they can complete authentication and approve the payment. After approval the buyer is redirected to the redirect_url you provided when creating the transaction. Do not rely solely on the redirect - either poll the transaction or (recommended) rely on webhooks to detect the final status (for example capture_succeeded or failure states).

Testing

It is recommended to use bankCode 1022 for testing. Nuvei has instructions on how to test PSE.