curl https://api.kwugwo.africa/v1/ugwo/ugw.VCvr.7K2qPmRtV9xLnQ8sD1cYwHfE/activities/act.VCvr.qnbBJaElzSTHOcaTzxbuDlIs \
-H "Authorization: Bearer $KWUGWO_SECRET_KEY"
const activity = await fetch(
`https://api.kwugwo.africa/v1/ugwo/${ugwoUid}/activities/${activityUid}`,
{ headers: { Authorization: `Bearer ${process.env.KWUGWO_SECRET_KEY}` } }
).then(r => r.json());
<?php
$url = "https://api.kwugwo.africa/v1/ugwo/{$ugwoUid}/activities/{$activityUid}";
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('KWUGWO_SECRET_KEY')],
]);
$activity = json_decode(curl_exec($ch), true);
curl_close($ch);
import os, requests
activity = requests.get(
f"https://api.kwugwo.africa/v1/ugwo/{ugwo_uid}/activities/{activity_uid}",
headers={"Authorization": f"Bearer {os.environ['KWUGWO_SECRET_KEY']}"},
).json()
url := fmt.Sprintf("https://api.kwugwo.africa/v1/ugwo/%s/activities/%s", ugwoUid, activityUid)
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KWUGWO_SECRET_KEY"))
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
{
"uid": "act.VCvr.qnbBJaElzSTHOcaTzxbuDlIs",
"activity_type": "charge",
"checkout": {
"uid": "chk.VCvr.vBtGwathtd99FpQGIGwIAATX",
"currency": "NGN",
"mediums": [{ "medium": "bank_transfer" }, { "medium": "ussd" }]
},
"ugwo_medium": null,
"psp": "paystack_ng",
"psp_external_id": "5kfxw34ugz",
"status": "successful",
"created_at": "2026-05-14T19:55:50+00:00",
"error": null,
"updated_at": "2026-05-14T20:02:13+00:00",
"amount": 500000,
"nzube_subscription_charge": 2500,
"refunded_amount": 0,
"charged_amount": 500000,
"next_action": {
"uid": "uac.VCvr.Rk4mZpQ7wLsD2vT8xNbHyCeU",
"action": {
"type": "user_action",
"instruction": "Transfer to bank",
"headers": {
"bank_name": "Test Bank",
"account_number": "1260881821",
"account_name": "PAYSTACK CHECKOUT",
"expires_at": "2026-05-14T20:10:50+00:00"
}
},
"status": "fulfilled",
"last_error": null,
"expires_at": "2026-05-14T20:10:50+00:00",
"created_at": "2026-05-14T19:55:51+00:00",
"updated_at": "2026-05-14T20:02:13+00:00"
},
"is_double_charge": false
}
{
"code": 404,
"message": "nzube.ugwo.ugwo_activity.error.not_found"
}
Activities
Get an activity
Fetch one payment attempt by ID.
GET
/
v1
/
ugwo
/
{ugwoUid}
/
activities
/
{activityUid}
curl https://api.kwugwo.africa/v1/ugwo/ugw.VCvr.7K2qPmRtV9xLnQ8sD1cYwHfE/activities/act.VCvr.qnbBJaElzSTHOcaTzxbuDlIs \
-H "Authorization: Bearer $KWUGWO_SECRET_KEY"
const activity = await fetch(
`https://api.kwugwo.africa/v1/ugwo/${ugwoUid}/activities/${activityUid}`,
{ headers: { Authorization: `Bearer ${process.env.KWUGWO_SECRET_KEY}` } }
).then(r => r.json());
<?php
$url = "https://api.kwugwo.africa/v1/ugwo/{$ugwoUid}/activities/{$activityUid}";
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('KWUGWO_SECRET_KEY')],
]);
$activity = json_decode(curl_exec($ch), true);
curl_close($ch);
import os, requests
activity = requests.get(
f"https://api.kwugwo.africa/v1/ugwo/{ugwo_uid}/activities/{activity_uid}",
headers={"Authorization": f"Bearer {os.environ['KWUGWO_SECRET_KEY']}"},
).json()
url := fmt.Sprintf("https://api.kwugwo.africa/v1/ugwo/%s/activities/%s", ugwoUid, activityUid)
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KWUGWO_SECRET_KEY"))
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
{
"uid": "act.VCvr.qnbBJaElzSTHOcaTzxbuDlIs",
"activity_type": "charge",
"checkout": {
"uid": "chk.VCvr.vBtGwathtd99FpQGIGwIAATX",
"currency": "NGN",
"mediums": [{ "medium": "bank_transfer" }, { "medium": "ussd" }]
},
"ugwo_medium": null,
"psp": "paystack_ng",
"psp_external_id": "5kfxw34ugz",
"status": "successful",
"created_at": "2026-05-14T19:55:50+00:00",
"error": null,
"updated_at": "2026-05-14T20:02:13+00:00",
"amount": 500000,
"nzube_subscription_charge": 2500,
"refunded_amount": 0,
"charged_amount": 500000,
"next_action": {
"uid": "uac.VCvr.Rk4mZpQ7wLsD2vT8xNbHyCeU",
"action": {
"type": "user_action",
"instruction": "Transfer to bank",
"headers": {
"bank_name": "Test Bank",
"account_number": "1260881821",
"account_name": "PAYSTACK CHECKOUT",
"expires_at": "2026-05-14T20:10:50+00:00"
}
},
"status": "fulfilled",
"last_error": null,
"expires_at": "2026-05-14T20:10:50+00:00",
"created_at": "2026-05-14T19:55:51+00:00",
"updated_at": "2026-05-14T20:02:13+00:00"
},
"is_double_charge": false
}
{
"code": 404,
"message": "nzube.ugwo.ugwo_activity.error.not_found"
}
Returns the activity. Use it to refresh the
next_action after the customer submits input, or to poll when you
can’t receive webhooks.
Prefer webhooks to polling. If you must poll, poll every few seconds
while the customer is on your page, and stop once
status leaves
requires_action / processing.Path parameters
string
required
The ugwo the activity belongs to,
ugw.XXXX.YYYY....string
required
The activity ID,
act.XXXX.YYYY....Response
An Activity object.curl https://api.kwugwo.africa/v1/ugwo/ugw.VCvr.7K2qPmRtV9xLnQ8sD1cYwHfE/activities/act.VCvr.qnbBJaElzSTHOcaTzxbuDlIs \
-H "Authorization: Bearer $KWUGWO_SECRET_KEY"
const activity = await fetch(
`https://api.kwugwo.africa/v1/ugwo/${ugwoUid}/activities/${activityUid}`,
{ headers: { Authorization: `Bearer ${process.env.KWUGWO_SECRET_KEY}` } }
).then(r => r.json());
<?php
$url = "https://api.kwugwo.africa/v1/ugwo/{$ugwoUid}/activities/{$activityUid}";
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('KWUGWO_SECRET_KEY')],
]);
$activity = json_decode(curl_exec($ch), true);
curl_close($ch);
import os, requests
activity = requests.get(
f"https://api.kwugwo.africa/v1/ugwo/{ugwo_uid}/activities/{activity_uid}",
headers={"Authorization": f"Bearer {os.environ['KWUGWO_SECRET_KEY']}"},
).json()
url := fmt.Sprintf("https://api.kwugwo.africa/v1/ugwo/%s/activities/%s", ugwoUid, activityUid)
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KWUGWO_SECRET_KEY"))
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
{
"uid": "act.VCvr.qnbBJaElzSTHOcaTzxbuDlIs",
"activity_type": "charge",
"checkout": {
"uid": "chk.VCvr.vBtGwathtd99FpQGIGwIAATX",
"currency": "NGN",
"mediums": [{ "medium": "bank_transfer" }, { "medium": "ussd" }]
},
"ugwo_medium": null,
"psp": "paystack_ng",
"psp_external_id": "5kfxw34ugz",
"status": "successful",
"created_at": "2026-05-14T19:55:50+00:00",
"error": null,
"updated_at": "2026-05-14T20:02:13+00:00",
"amount": 500000,
"nzube_subscription_charge": 2500,
"refunded_amount": 0,
"charged_amount": 500000,
"next_action": {
"uid": "uac.VCvr.Rk4mZpQ7wLsD2vT8xNbHyCeU",
"action": {
"type": "user_action",
"instruction": "Transfer to bank",
"headers": {
"bank_name": "Test Bank",
"account_number": "1260881821",
"account_name": "PAYSTACK CHECKOUT",
"expires_at": "2026-05-14T20:10:50+00:00"
}
},
"status": "fulfilled",
"last_error": null,
"expires_at": "2026-05-14T20:10:50+00:00",
"created_at": "2026-05-14T19:55:51+00:00",
"updated_at": "2026-05-14T20:02:13+00:00"
},
"is_double_charge": false
}
{
"code": 404,
"message": "nzube.ugwo.ugwo_activity.error.not_found"
}