Skip to content

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

  1. You submit a refund request via the UI or the API.
  2. The SecPaid admin team reviews the request.
  3. If approved, the refund is processed and a negative payment entry is added to your pay-ins.
  4. If denied, a rejection reason is provided.

UI — Submitting a Refund

  1. Navigate to your transactions in the SecPaid dashboard.
  2. Click Refund next to the payment you want to refund.
  3. Select the amount to refund (full or partial).
  4. 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.