PayintoDocs

Collections

Choose how to accept payments, then confirm them safely.

There are three ways to collect money with Payinto.

MethodBest forYour customer seesKey
Dynamic virtual accountA checkout you build yourselfA temporary account numberSecret
Static virtual accountWallets and repeat top-upsA permanent account numberSecret
Checkout SDKA ready-made payment popupThe Payinto Checkout popupPublic

Collect an order payment

This tutorial collects ₦1,500.00 for an order with a dynamic virtual account.

Create the account

Use your order ID in merchant_reference, so a retry can't create a second account.

curl https://api.payinto.co/api/v1/business/virtual-accounts/dynamic \
  --header "Authorization: Bearer $PAYINTO_SECRET_KEY" \
  --header "Content-Type: application/json" \
  --header "Accept: application/json" \
  --data '{
    "amount": 150000,
    "amount_control": "Fixed",
    "valid_for": 1800,
    "merchant_reference": "order-10001",
    "metadata": { "order_id": "10001" }
  }'

Show the payment details

Show bank_name, account_number, and account_name to your customer, with a countdown to expired_at.

Wait for the webhook

When the deposit is credited, Payinto sends virtual_account.transfer.received. Verify the signature, then match the data.virtual_account.merchant_reference, currency, and amount to your order.

Fall back to a status query

If you don't receive a webhook, read the virtual account's payments with GET /virtual-accounts/{id}/transactions.

Hosted Checkout

Use the Checkout SDK when you'd like Payinto to host the payment experience. It opens a secure popup on your site, takes card and bank transfer payments, and needs only your public key in the browser.

On this page