Refunds¶
SecPaid supports both full and partial refund requests. Refunds are reviewed by the SecPaid admin team, who approve or deny them. Approved refunds appear as negative entries in your pay-in transaction list.
How Refunds Work¶
- You submit a refund request via the UI or the API.
- The SecPaid admin team reviews the request.
- If approved, the refund is processed and a negative payment entry is added to your pay-ins.
- If denied, a rejection reason is provided.
UI — Submitting a Refund¶
- Navigate to your transactions in the SecPaid dashboard.
- Click Refund next to the payment you want to refund.
- Select the amount to refund (full or partial).
- Submit and wait for the admin team to review your request.
API — POST /api/v2/refundPayment¶
Headers¶
| Name | Required | Description |
|---|---|---|
token |
Yes | Your API key |
Body Parameters¶
| Name | Type | Required | Description |
|---|---|---|---|
pay_id |
string | Yes | The ID of the payment to refund |
refund_amount |
double | Yes | Amount to refund in EUR. Must not exceed the original payment amount |
isFullRefund |
string | No | Set to "true" to refund all split recipients in one request. Default: "false" |
Example Request¶
curl --location 'https://app.secpaid.com/api/v2/refundPayment' \
--header 'token: YOUR_API_KEY' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'pay_id=42011' \
--data-urlencode 'refund_amount=25.00'
Response 200¶
{
"ResponseCode": 1,
"ResponseMsg": "Refund request submitted successfully",
"Result": "True",
"ServerTime": "CEST"
}
Validation Rules¶
| Condition | Behaviour |
|---|---|
refund_amount > original amount |
Request rejected |
A pending refund already exists for this pay_id |
Request rejected (duplicate) |
| Payment belongs to a cancelled link | Request rejected |
Payment is of type Invoice |
Cannot be refunded via the API |
| Payment has an open or won dispute | Request rejected |
Fetching Refund Entries¶
Approved refunds appear as negative transactions in getPayInTransactions. Look for entries where is_refund is "true" and transaction_type is "Refund".
curl --location 'https://app.secpaid.com/api/v2/getPayInTransactions' \
--header 'token: YOUR_API_KEY' \
--data-urlencode 'since=30'
Filter results by transaction_type == "Refund" in your application to separate refunds from regular payments.