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.
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 Direct debit from Colombian bank accounts.
-
Nequi The customer approves the payment in their app.
-
Daviplata Davivienda's digital wallet.
-
Bancolombia Payment button with account debit.
-
Efecty Cash payment at physical locations.
-
Cards Visa and Mastercard credit and debit.
-
Bank transfer With automatic payment verification.
-
Crypto BTC, ETH, USDT and USDC.
How it works
-
1
You create the charge
A
POSTto/v1/collectwith the amount and your reference. The API returns a uniquecollectUrl. -
2
Your customer pays
Redirect to the
collectUrl. The hosted checkout shows the available methods and handles the whole flow. -
3
You get the webhook
NIIO notifies your
webhookUrlwith 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.
baseAmount)
$ 100,000 COP
feeAmount)
$ 50 COP
amount)
$ 100,050 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.
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.
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: thecallbackUrlis only the visual return and is unsigned. -
Idempotency
Send your own
referencewhen 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.