Skip to main content
POST
/
api
/
v1
/
wallet
/
transfer
curl -X POST "https://olive-gateway-a6ba.onrender.com/api/v1/wallet/transfer" \
  -H "Authorization: Bearer olive_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "from_account_id": "acc_abc123",
    "to_account_id": "acc_xyz789",
    "amount": "1000.00",
    "pin": "1234",
    "description": "Settlement payment"
  }'
{
  "success": true,
  "message": "Transfer completed successfully",
  "transaction_id": "txn_abc123",
  "amount": "1,000.00 SLE",
  "from_balance": "49,000.00 SLE",
  "to_balance": "11,000.00 SLE"
}
Internal transfers move funds between subscriber accounts using account IDs. For transfers by card serial, use P2P Transfer.

Request

Authorization
string
required
Bearer olive_live_xxx or Bearer eyJ... (JWT)

Body Parameters

from_account_id
string
required
Source account UUID
to_account_id
string
required
Destination account UUID
amount
string
required
Amount to transfer
pin
string
required
Source account PIN
description
string
Transfer description

Response

success
boolean
Whether transfer succeeded
transaction_id
string
Unique transaction ID
message
string
Result message

Examples

curl -X POST "https://olive-gateway-a6ba.onrender.com/api/v1/wallet/transfer" \
  -H "Authorization: Bearer olive_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "from_account_id": "acc_abc123",
    "to_account_id": "acc_xyz789",
    "amount": "1000.00",
    "pin": "1234",
    "description": "Settlement payment"
  }'
{
  "success": true,
  "message": "Transfer completed successfully",
  "transaction_id": "txn_abc123",
  "amount": "1,000.00 SLE",
  "from_balance": "49,000.00 SLE",
  "to_balance": "11,000.00 SLE"
}

Use Cases

ScenarioDescription
Agent SettlementTransfer from agent to OLIVE
Corporate PayrollBulk employee payments
RefundsReturn funds to subscriber
Account AdjustmentAdministrative corrections

Errors

StatusCodeDescription
400INVALID_AMOUNTAmount format invalid
400INSUFFICIENT_FUNDSBalance too low
400INVALID_PINPIN verification failed
401UNAUTHORIZEDInvalid API key
404ACCOUNT_NOT_FOUNDAccount not found
500INTERNAL_ERRORServer error