Payment gateway for Colombia

Accept PSE, Nequi, Daviplata, Bancolombia, Efecty, cards and crypto through a single integration. A 0.05% fee and payouts to bank accounts or Bre-B keys.

No integration cost. Hosted checkout, ready to use.

Create a charge
curl -X POST https://api.prod.niiopay.com/api/v1/collect \
  -H "X-Api-Key: niio_live_..." \
  -H "X-Api-Secret: niio_secret_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 100000,
    "currency": "COP",
    "reference": "ORDER-1042",
    "webhookUrl": "https://yourstore.com/webhooks/niio"
  }'

Payment methods

One integration, every method your customers actually use in Colombia.

  • PSE PSE Direct debit from Colombian bank accounts.
  • Nequi Nequi The customer approves the payment in their app.
  • Daviplata Daviplata Davivienda's digital wallet.
  • Bancolombia Bancolombia Payment button with account debit.
  • Efecty Efecty Cash payment at physical locations.
  • Visa Mastercard Cards Visa and Mastercard credit and debit.
  • Bank transfer With automatic payment verification.
  • Bitcoin Ethereum USDT USDC Crypto BTC, ETH, USDT and USDC.

See details for each payment method →

How it works

  1. 1

    You create the charge

    A POST to /v1/collect with the amount and your reference. The API returns a unique collectUrl.

  2. 2

    Your customer pays

    Redirect to the collectUrl. The hosted checkout shows the available methods and handles the whole flow.

  3. 3

    You get the webhook

    NIIO notifies your webhookUrl with an HMAC-SHA256 signature. That webhook is the source of truth.

A 0.05% on-top fee

You request the amount you want to receive and the payer covers the fee. What you ask for is what you keep — no surprise deductions from your sale.

You request (baseAmount) $ 100,000 COP
0.05% fee (feeAmount) $ 50 COP
Your customer pays (amount) $ 100,050 COP
You receive $ 100,000 COP

Payouts to Bre-B and bank accounts

Beyond collecting, disburse your balance in Colombian pesos to bank accounts (BANK) or Bre-B keys (BREB). Query destinations with GET /payout/methods and create the payout with POST /payout, which requires idempotency so a retry never pays twice.

Payout documentation →

AI agent payments (x402)

Charge autonomous agents through the x402 protocol: your server replies HTTP 402, the agent signs a USDC payment on Polygon and NIIO settles it on-chain. No account, no card, no human in the loop.

How x402 works →

For developers

Heads up: the full documentation is currently available in Spanish only.

  • Signed webhooks

    Every event carries an HMAC-SHA256 signature in X-NIIO-Signature. Always verify it: the callbackUrl is only the visual return and is unsigned.

  • Idempotency

    Send your own reference when creating the charge and make your handler idempotent: a webhook can arrive more than once.

  • SDKs and plugin

    Examples in Node.js, Python and PHP, a Postman collection and a WooCommerce plugin.

  • OpenAPI and llms.txt

    Spec in OpenAPI, executable reference in Scalar and llms.txt for AI agents.

Frequently asked questions

How much does NIIO Pay charge per transaction?

The fee is 0.05% and it is charged on-top: you request the amount you want to receive and the payer pays that amount plus the fee. The API response returns amount (what the customer pays), baseAmount (what you receive) and feeAmount.

Which payment methods can I accept in Colombia?

PSE, Nequi, Daviplata, Bancolombia, Efecty, Visa and Mastercard credit and debit cards, bank transfer, and cryptocurrencies (BTC, ETH, USDT and USDC). All through a single integration.

How do I integrate PSE into my website?

POST to /api/v1/collect with your X-Api-Key and X-Api-Secret headers and the API returns a collectUrl. Redirect your customer there and the hosted checkout handles the entire payment interface, including the PSE flow with the bank list.

Is there a test environment (sandbox)?

There is no separate sandbox. Testing is done against production using test credentials and small amounts. Read the testing guide before processing real payments.

How do I get API credentials?

Credentials (niio_live_… and niio_secret_…) are requested from the NIIO team. There is no self-service dashboard to generate them yet.

How do I confirm a payment went through?

Through the webhook NIIO sends to your webhookUrl when a payment completes or fails. Always verify the HMAC-SHA256 signature in the X-NIIO-Signature header: the webhook is the source of truth. The callbackUrl is only the customer-facing return, it is unsigned and must not be used to mark a payment as received.

Does the customer pay the same amount I receive?

No. The fee is on-top, so the customer pays slightly more than you receive. If you create a 100,000 COP charge, that is what you keep (baseAmount) and the payer sees the total with the fee added.

Can I pay out to a Bre-B key?

Yes. NIIO payouts disburse your balance to bank accounts (BANK) or Bre-B keys (BREB) in Colombia, in Colombian pesos. Query destinations with GET /payout/methods and create the payout with POST /payout, which requires idempotency.

What happens if a webhook arrives twice?

It can happen, so your handler must be idempotent. Use the reference field (your own unique identifier) when creating the order to recognise the repeated event and avoid crediting it twice.

Do you accept cryptocurrency payments?

Yes. The checkout accepts Bitcoin (BTC), Ethereum (ETH), USDT and USDC, and the merchant is notified through the same webhook as every other method.

Is there a WooCommerce plugin?

Yes, there is a WooCommerce plugin, plus integration examples in Node.js, Python and PHP and a Postman collection.

Can an AI agent pay automatically?

Yes, through the x402 protocol: the server replies HTTP 402, the agent signs a USDC payment on Polygon and NIIO settles it on-chain. The agent needs no account and no card.

Start collecting today

Create your first payment link in five minutes.