Payment Link Issue Report
Reporting an issue on a protected payment-link transaction, and releasing funds
For a with transaction protection enabled, the payer can either confirm receipt (releasing the held funds to the recipient) or report an issue before the auto-release window elapses. There is no separate case-management system with evidence upload, timelines, or admin arbitration - it's a two-endpoint flow, and unresolved reports are handled by support.
Report Issue Request
POST /link/:linkId/transactions/:transactionId/report-issue (authenticated, or guest via ?token=)
{
"reason": "NOT_RECEIVED",
"description": "I have not received my order after 2 weeks",
"evidence": [
"https://api.ugc.africa/evidence/abc123.jpg"
]
}| Field | Type | Description |
|---|---|---|
| reason | string | One of the reason codes below |
| description | string | Free-text explanation (max 2000 characters) |
| evidence | string[] | Optional array of already-uploaded file URLs (max 5) |
Response:
{
"success": true,
"data": {
"message": "Contact support with your transaction reference to report an issue."
}
}Reporting an issue pauses the auto-release window - support resolves the report manually (refund, release, or partial) rather than an automated arbitration flow.
Reason Codes
| Reason | Description |
|---|---|
| WRONG_ITEM | Received the wrong item |
| DAMAGED | Item arrived damaged |
| NOT_RECEIVED | Order not received |
| NOT_AS_DESCRIBED | Product does not match description |
| DEFECTIVE | Item is defective |
| OTHER | Anything else - use description for detail |
Confirm Receipt Request
POST /link/:linkId/transactions/:transactionId/confirm-receipt (authenticated, or guest via ?token=)
Confirming receipt releases the held funds to the recipient immediately, ahead of the auto-release window.
Response:
{
"success": true,
"data": {
"transactionId": "txn_abc123",
"status": "COMPLETED",
"amountReleased": 50000,
"currency": "NGN",
"message": "Funds have been released to the recipient."
}
}Notes
- Both endpoints require the caller to be the payer on the transaction (or hold a valid guest token) - a 403 is returned otherwise.
- A 400 is returned if the transaction is not in a protected/held state (e.g. protection was disabled, or funds were already released).
- For the full auto-release window mechanics, see How You Get Paid.
Did this solve your problem?