Skip to main content
Developers

Payments in your product. A few lines of code.

The Paylio API is RESTful, predictable, and built for developers who value clarity over clever. One SDK, full coverage.

transfer.js
const paylio = require('@paylio/node')

const client = new paylio.Client(
 apiKey: process.env.PAYLIO_KEY
})

const transfer = await client.transfers.create(
 amount: 2500000, 
 currency: 'NGN',
 recipient: {accountNumber, bankCode},
 reference: 'txn_01J9X4...'
})

// ✓ transfer.status === 'success'
// ✓ transfer.completedAt: '2024-06-23T...'

API Reference

Core endpoints

POST/v1/transfers

Initiate a bank transfer

GET/v1/transactions

List account transactions

POST/v1/cards/virtual

Create a virtual card

GET/v1/accounts/:id

Retrieve account details

POST/v1/webhooks

Register a webhook endpoint

GET/v1/balance

Get real-time balance

SDKs

Start in your language of choice.

Node.js

npm install @paylio/node

🐍

Python

pip install paylio

Go

go get github.com/paylio/go

🐘

PHP

composer require paylio/paylio-php

Sandbox

Build and test with no real money involved.

The sandbox environment mirrors production exactly. Every endpoint, every webhook, every error code. Flip one environment variable when you are ready to go live.

  • Full API parity with production
  • Pre-loaded test accounts and recipients
  • Trigger any transaction status (pending, success, failed)
  • Webhook delivery with replay and inspection
.env
# Sandbox
PAYLIO_KEY=pk_test_4xK9m2...
PAYLIO_ENV=sandbox

# Production
PAYLIO_KEY=pk_live_9mN3x7...
PAYLIO_ENV=production

Webhooks

React to events in real time.

Paylio sends a signed webhook to your endpoint the moment a transfer completes, a card is frozen, or a fraud flag is raised. No polling. No missed events.

transfer.success

Fires when a transfer clears successfully

transfer.failed

Fires when a transfer is declined or reversed

card.frozen

Fires when a card is frozen by the user or the system