Skip to main content
This documentation covers:
  • Virtual account listing
  • Updating and expiring NGN virtual accounts
  • Virtual account transaction history
  • Transactions index
  • Transaction details for payins (payment links) and payouts
All sample payloads below are anonymized for safe sharing.

Environments

  • Sandbox API: https://smtp.yativo.com
  • Sandbox (alternate host): https://smtp.yativo.com
  • Production API: https://api.yativo.com
On sandbox you can simulate an inbound deposit onto a virtual account (credits the wallet and sends virtual_account.deposit) without waiting for a bank. See Testing on sandbox.

Authentication

All business endpoints need an authenticated request. Server-to-server requests use your team’s API key and secret:
The Yativo dashboard sends the signed-in user’s Authorization: Bearer <ACCESS_TOKEN> instead. Since 15 October 2026, bearer tokens are only accepted from the dashboard, and the legacy POST /api/v1/auth/login (account_id + app_secret) flow is deprecated. Don’t send a bearer token together with the key pair. See Authentication.

1) List Virtual Accounts

Endpoint

Sample Response (Anonymized)

Response Key Table


1a) Update or Expire an NGN Virtual Account

These two endpoints only work on NGN virtual accounts. Any other currency returns 422 (Updating is not supported for this account / Expiring is not supported for this account).

Update

Send at least one of the two fields, otherwise the request returns 422. The response is the updated virtual account record; the new values also appear in account_info (account_name, expected_amount).

Expire

Permanently stops the account from accepting funds. The account record and its transaction history are kept, and its status becomes expired. This can’t be undone. Calling it on an account that is already expired returns 200 with the message Virtual account already expired. Deleting an NGN account with DELETE /api/v1/business/virtual-account/delete-virtual-account/{account_id} also expires it first. A successful delete returns the deleted account_id and sends a virtual_account.deleted webhook. An ID that doesn’t exist or isn’t yours returns 404 (Account with the provided ID does not exists).

2) Virtual Account Transaction History

Endpoint

Important Crediting Notes

  • currency + amount: value credited to the wallet.
  • amount_recevied (API spelling): amount originally sent by sender.
  • sender_information: payer account and identity details.
  • transaction_fee: your own platform fee.
  • If amount_recevied is greater than amount, the difference can come from rail/provider deductions (for example, FedWire fees) before settlement.

Wallet Settlement Rules

  • GBP virtual account (Faster Payments) settles into USD wallet.
  • MXNUSD virtual account accepts MXN over SPEI and settles into USD wallet.
  • COPUSD virtual account accepts COP over Bre-B and settles into USD wallet.
  • EUR virtual account accepts EUR and settles in EUR only.
  • NGN virtual account accepts NGN and settles in NGN.
For accounts that settle into USD, the deposit is converted at the prevailing rate when it is credited. amount_recevied shows what the sender paid in the local currency, and amount shows the USD credited.

Sample USD History Response (Anonymized)

Sample EUR History Response (Anonymized)

Response Key Table


3) Transactions Index

Endpoint

Purpose

Returns all account transactions (for example: crypto deposits, payins, payouts), paginated.

Sample Response (Anonymized)

Response Key Table


4) Transaction Details by ID

Endpoint

Use this endpoint to fetch a single transaction in full detail.

Sample Payout Response (Anonymized)

Response Key Table (Transaction Details)


Notes for Integrators

  • Keep amount and amount_recevied separate in your UI and reconciliation logic.
  • Treat amount as wallet credit.
  • Treat amount_recevied as sender-side transfer value.
  • Show transaction_fee as your own platform fee.
  • Rail/provider fee deductions (for example FedWire) can explain differences between sent and credited amounts.