My Account
View your wallet balances, profile, ledger, and transaction history.
Get Balances
View all wallet balances across currencies.
GET /my-account/balances
Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Yes | Bearer token for authentication. |
Request
- cURL
- Node.js
- Python
- Go
curl -X GET https://sandbox.payscribe.ng/api/v1/my-account/balances \
-H "Authorization: Bearer $PAYSCRIBE_API_KEY"
const response = await fetch('https://sandbox.payscribe.ng/api/v1/my-account/balances', {
method: 'GET',
headers: {Authorization: `Bearer ${process.env.PAYSCRIBE_API_KEY}`},
});
const result = await response.json().catch(() => null);
if (!response.ok) throw new Error(`Payscribe request failed: ${response.status}`);
console.log(result);
import os
import requests
response = requests.get(
'https://sandbox.payscribe.ng/api/v1/my-account/balances',
headers={'Authorization': f"Bearer {os.environ['PAYSCRIBE_API_KEY']}"},
timeout=20,
)
response.raise_for_status()
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
var body io.Reader
request, err := http.NewRequest(http.MethodGet, "https://sandbox.payscribe.ng/api/v1/my-account/balances", body)
if err != nil { panic(err) }
request.Header.Set("Authorization", "Bearer "+os.Getenv("PAYSCRIBE_API_KEY"))
response, err := http.DefaultClient.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
responseBody, _ := io.ReadAll(response.Body)
if response.StatusCode < 200 || response.StatusCode > 299 { panic(fmt.Sprintf("Payscribe request failed: %s", response.Status)) }
fmt.Println(string(responseBody))
}
Response
Status: 200 OK
{
"status": true,
"description": "Account balance fetched successfully.",
"message": {
"details": [
{
"id": "eyJpdiI6...",
"currency": "NGN",
"collection": 1500000,
"available_balance": 1450000,
"facility_balance": 0,
"threshold": 0,
"kind": null,
"ledger": 20000,
"accounts": [
{
"bank": "9 Payment Service Bank",
"account_name": "My Business",
"account_number": "1234567890",
"reference": "va_ref_abc123"
}
],
"details": []
},
{
"id": "eyJpdiI6...",
"currency": "USD",
"collection": 0,
"available_balance": 4800,
"facility_balance": 0,
"threshold": 0,
"kind": null,
"ledger": 0,
"accounts": [],
"details": []
}
]
},
"status_code": 200
}
id is an encrypted wallet identifier, not a plain integer. collection is the collection-account balance; available_balance is what can actually be spent; ledger mirrors the internal due balance. accounts (virtual account details) is only populated for the NGN wallet, and details is currently always an empty array (reserved).
Get Profile
View the profile details of your integration.
GET /my-account/profile
Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Yes | Bearer token for authentication. |
Request
- cURL
- Node.js
- Python
- Go
curl -X GET https://sandbox.payscribe.ng/api/v1/my-account/profile \
-H "Authorization: Bearer $PAYSCRIBE_API_KEY"
const response = await fetch('https://sandbox.payscribe.ng/api/v1/my-account/profile', {
method: 'GET',
headers: {Authorization: `Bearer ${process.env.PAYSCRIBE_API_KEY}`},
});
const result = await response.json().catch(() => null);
if (!response.ok) throw new Error(`Payscribe request failed: ${response.status}`);
console.log(result);
import os
import requests
response = requests.get(
'https://sandbox.payscribe.ng/api/v1/my-account/profile',
headers={'Authorization': f"Bearer {os.environ['PAYSCRIBE_API_KEY']}"},
timeout=20,
)
response.raise_for_status()
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
var body io.Reader
request, err := http.NewRequest(http.MethodGet, "https://sandbox.payscribe.ng/api/v1/my-account/profile", body)
if err != nil { panic(err) }
request.Header.Set("Authorization", "Bearer "+os.Getenv("PAYSCRIBE_API_KEY"))
response, err := http.DefaultClient.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
responseBody, _ := io.ReadAll(response.Body)
if response.StatusCode < 200 || response.StatusCode > 299 { panic(fmt.Sprintf("Payscribe request failed: %s", response.Status)) }
fmt.Println(string(responseBody))
}
Response
Status: 200 OK
{
"status": true,
"description": "Business profile fetched successfully.",
"message": {
"details": {
"id": 4821,
"name": "My Business",
"email": "admin@mybusiness.com",
"industry": "E-commerce",
"address": "12 Adeola Odeku Street, Victoria Island, Lagos",
"website": "https://mybusiness.com",
"country_code": "NG",
"entity_type": "limited_liability",
"registration_number": "RC1234567",
"status": "active",
"kyb_status": "approved",
"risk_level": "low",
"created_at": "2024-01-15 10:30:00"
}
},
"status_code": 200
}
There is no phone, currency, or updated_at field on this endpoint. kyb_status is incomplete, pending_review, or approved.
Get Ledger
View your ledger entries for a specific currency.
GET /my-account/ledger
Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Yes | Bearer token for authentication. |
Query Parameters
All parameters are optional filters; omitting all of them returns the business's full ledger, most recent first.
| Parameter | Type | Required | Description |
|---|---|---|---|
| currency | string | No | Currency code to filter by (e.g. NGN, USD). |
| direction | string | No | debit or credit. Any other value is ignored. |
| kind | string | No | Filter by ledger entry kind. |
| start_date | string | No | Only include entries on/after this date (YYYY-MM-DD). |
| end_date | string | No | Only include entries on/before this date (YYYY-MM-DD). |
| page | integer | No | Page number to retrieve. Defaults to 1. |
| page_size | integer | No | Records per page (max 100). Defaults to 20. |
Request
- cURL
- Node.js
- Python
- Go
curl -X GET "https://sandbox.payscribe.ng/api/v1/my-account/ledger?currency=NGN&page=1&page_size=20" \
-H "Authorization: Bearer $PAYSCRIBE_API_KEY"
const response = await fetch('https://sandbox.payscribe.ng/api/v1/my-account/ledger?currency=NGN&page=1&page_size=20', {
method: 'GET',
headers: {Authorization: `Bearer ${process.env.PAYSCRIBE_API_KEY}`},
});
const result = await response.json().catch(() => null);
if (!response.ok) throw new Error(`Payscribe request failed: ${response.status}`);
console.log(result);
import os
import requests
response = requests.get(
'https://sandbox.payscribe.ng/api/v1/my-account/ledger?currency=NGN&page=1&page_size=20',
headers={'Authorization': f"Bearer {os.environ['PAYSCRIBE_API_KEY']}"},
timeout=20,
)
response.raise_for_status()
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
var body io.Reader
request, err := http.NewRequest(http.MethodGet, "https://sandbox.payscribe.ng/api/v1/my-account/ledger?currency=NGN&page=1&page_size=20", body)
if err != nil { panic(err) }
request.Header.Set("Authorization", "Bearer "+os.Getenv("PAYSCRIBE_API_KEY"))
response, err := http.DefaultClient.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
responseBody, _ := io.ReadAll(response.Body)
if response.StatusCode < 200 || response.StatusCode > 299 { panic(fmt.Sprintf("Payscribe request failed: %s", response.Status)) }
fmt.Println(string(responseBody))
}
Response
Status: 200 OK
{
"status": true,
"description": "Ledger fetched successfully.",
"message": {
"details": {
"data": [
{
"id": 9001,
"currency": "NGN",
"account": "collection",
"direction": "credit",
"amount": 50000,
"balance_before": 1450000,
"balance_after": 1500000,
"kind": "wallet_funding",
"description": "Wallet funding via bank transfer",
"link_id": null,
"ref_id": "REF_1234567890",
"created_at": "2025-06-15 14:30:00"
},
{
"id": 9002,
"currency": "NGN",
"account": "collection",
"direction": "debit",
"amount": 20000,
"balance_before": 1500000,
"balance_after": 1480000,
"kind": "wallet_debit",
"description": "Payment to merchant PAY_abc",
"link_id": null,
"ref_id": "REF_1234567891",
"created_at": "2025-06-14 09:15:00"
}
],
"pagination": {
"total": 2,
"page": 1,
"page_size": 20,
"pages": 1
}
}
},
"status_code": 200
}
Note the nesting: the entry array is at message.details.data, and pagination is at message.details.pagination — there is no top-level meta key.
Get Transactions
View your transaction history.
GET /my-account/transactions
Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Yes | Bearer token for authentication. |
Query Parameters
All parameters are optional filters; omitting all of them returns every transaction for the business, most recent first.
| Parameter | Type | Required | Description |
|---|---|---|---|
| currency | string | No | Currency code to filter by (e.g. NGN, USD). |
| status | string | No | Transaction status to filter by (e.g. success, pending, failed). |
| product | string | No | Product slug to filter by (e.g. cards, bills, transfers). |
| start_date | string | No | Only include transactions on/after this date (YYYY-MM-DD). |
| end_date | string | No | Only include transactions on/before this date (YYYY-MM-DD). |
| page | integer | No | Page number to retrieve. Defaults to 1. |
| page_size | integer | No | Records per page (max 100). Defaults to 20. |
Request
- cURL
- Node.js
- Python
- Go
curl -X GET "https://sandbox.payscribe.ng/api/v1/my-account/transactions?page=1&page_size=20" \
-H "Authorization: Bearer $PAYSCRIBE_API_KEY"
const response = await fetch('https://sandbox.payscribe.ng/api/v1/my-account/transactions?page=1&page_size=20', {
method: 'GET',
headers: {Authorization: `Bearer ${process.env.PAYSCRIBE_API_KEY}`},
});
const result = await response.json().catch(() => null);
if (!response.ok) throw new Error(`Payscribe request failed: ${response.status}`);
console.log(result);
import os
import requests
response = requests.get(
'https://sandbox.payscribe.ng/api/v1/my-account/transactions?page=1&page_size=20',
headers={'Authorization': f"Bearer {os.environ['PAYSCRIBE_API_KEY']}"},
timeout=20,
)
response.raise_for_status()
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
var body io.Reader
request, err := http.NewRequest(http.MethodGet, "https://sandbox.payscribe.ng/api/v1/my-account/transactions?page=1&page_size=20", body)
if err != nil { panic(err) }
request.Header.Set("Authorization", "Bearer "+os.Getenv("PAYSCRIBE_API_KEY"))
response, err := http.DefaultClient.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
responseBody, _ := io.ReadAll(response.Body)
if response.StatusCode < 200 || response.StatusCode > 299 { panic(fmt.Sprintf("Payscribe request failed: %s", response.Status)) }
fmt.Println(string(responseBody))
}
Response
Status: 200 OK
{
"status": true,
"description": "Transactions fetched successfully.",
"message": {
"details": {
"data": [
{
"trans_id": "TXN-2025061501",
"invoice_id": null,
"amount": 50000,
"fee": 0,
"currency": "NGN",
"status": "success",
"description": "Wallet funding via bank transfer",
"product": "TRANSFERS",
"created_at": "2025-06-15 14:30:00"
},
{
"trans_id": "TXN-2025061401",
"invoice_id": null,
"amount": 20000,
"fee": 100,
"currency": "NGN",
"status": "success",
"description": "Payment to merchant PAY_abc",
"product": "BILLS",
"created_at": "2025-06-14 09:15:00"
}
],
"pagination": {
"total": 2,
"page": 1,
"page_size": 20,
"pages": 1
}
}
},
"status_code": 200
}
As with /my-account/ledger, the row array is nested at message.details.data with pagination at message.details.pagination — not a top-level meta key. There is no id, type, reference, or payment_method field; use trans_id and product instead.
Was this page helpful?