OTC Trading
Over-the-counter trading for high-volume currency conversions. Requires OTC access to be approved by an admin before use.
Auth required: JWT
Base path: /api/v1/otc
Note: All OTC endpoints require your business to have OTC access enabled. Contact support to request access.
Get Available Accounts
Returns the platform OTC accounts you can trade with (bank details, supported currencies).
http
GET /api/v1/otc/accounts
Authorization: Bearer <token>
Permission: otc:viewGet Quote
http
GET /api/v1/otc/quote
Authorization: Bearer <token>
Permission: otc:viewQuery parameters
| Param | Description |
|---|---|
from | Source currency (e.g. GBP) |
to | Target currency (e.g. NGN) |
amount | Amount in source currency |
Response
json
{
"rate": "1950.50",
"from": "GBP",
"to": "NGN",
"amount": "5000.00",
"converted": "9752500.00",
"expires_at": "2025-06-18T12:05:00Z"
}Create Order
Lock in a quote and create a trade order.
http
POST /api/v1/otc/orders
Authorization: Bearer <token>
Permission: otc:trade
Content-Type: application/jsonjson
{
"from": "GBP",
"to": "NGN",
"amount": "5000.00",
"account_id": "acc_123"
}Response
json
{
"id": "order_abc",
"status": "pending_payment",
"rate": "1950.50",
"from_amount": "5000.00",
"to_amount": "9752500.00",
"payment_details": {
"bank_name": "...",
"account_number": "...",
"sort_code": "..."
},
"expires_at": "2025-06-18T12:35:00Z"
}Mark Order as Paid
After sending the bank transfer, mark the order as paid so the platform can verify and release funds.
http
POST /api/v1/otc/orders/:id/paid
Authorization: Bearer <token>
Permission: otc:tradeGet Order
http
GET /api/v1/otc/orders/:id
Authorization: Bearer <token>
Permission: otc:viewRefresh Quote
If the quote has expired before you've paid, refresh it to get the latest rate.
http
POST /api/v1/otc/orders/:id/refresh
Authorization: Bearer <token>
Permission: otc:tradeTrade History
http
GET /api/v1/otc/history
Authorization: Bearer <token>
Permission: otc:viewOTC AML Compliance
OTC access requires completing an AML (Anti-Money Laundering) form via the KYC endpoints:
| Endpoint | Description |
|---|---|
GET /api/v1/kyc/otc/status | Check OTC AML status |
PUT /api/v1/kyc/otc/draft | Save draft AML form |
POST /api/v1/kyc/otc/submit | Submit AML form for review |
