ChapaChapa Docs

Refund

Process refunds using Chapa's API with detailed steps and parameters

This documentation provides detailed information on how to process refunds using our API. It includes steps for initiating a refund, required parameters, and handling responses.

Initiating Refund

Endpoint: https://api.chapa.co/v1/refund/{tx_ref}
Method: POST
Authorization: Pass your secret key as a bearer token in the request header to authorize this call.

{tx_ref} is the reference that is provided by Chapa after the payment is initiated.

Body Parameters

ParameterRequiredTypeDescription
reasonNostringReason for refund
amountNostringAmount to refund. If not provided, the full transaction amount will be refunded
metaNoobjectAdditional metadata that will be returned in the response and webhook. Can contain any custom key-value pairs
referenceNostringA unique identifier for this refund request. Must be unique within your business.
cURL
JavaScript
PHP
Python

Successful Response

{
  "message": "Refund initiated successfully. Processing time: 1-3 business days",
  "status": "success",
  "data": {
    "id": 730,
    "chapa_reference": "APezQ1KKswbb",
    "bank_reference": "BLC9JI3G21",
    "amount": "1.00",
    "ref": "MERC-DIS-REF-s223VGvQFJk",
    "currency": "ETB",
    "status": "Refund Initiated",
    "reason": null,
    "merchant_reference": "OTAS379IOSHJ",
    "created_at": "2024-12-13T17:33:27.000000Z",
    "updated_at": "2024-12-13T17:33:27.000000Z"
  }
}

Response Parameters

ParameterTypeDescription
messagestringResponse message
statusstringStatus of the request (success/failed)
data.idnumberUnique refund identifier
data.chapa_referencestringChapa's reference for the original transaction
data.bank_referencestringBank reference for the refund
data.amountstringRefund amount
data.refstringRefund reference ID
data.currencystringCurrency code (ETB, USD)
data.statusstringRefund status (Refund Initiated)
data.reasonstring|nullReason for refund (if provided)
data.merchant_referencestringYour reference for the refund
data.created_atstringTimestamp when refund was created
data.updated_atstringTimestamp when refund was last updated

Failed Response

{
  "message": "Refund amount cannot exceed the original transaction amount",
  "status": "failed",
  "data": null
}

If amount is not provided, we will refund the full transaction amount.

Important: Chapa charges are non-refundable. This means we take the transaction amount plus charges from the available balance. The refund amount will be deducted from your available balance.

Refer to our Error Codes page for all responses for this request.

Processing Time

Refunds typically take 1-3 business days to process. The exact processing time depends on the payment method and bank processing times.

Use Cases

  • Customer Returns: Process refunds for returned products or services
  • Order Cancellations: Refund cancelled orders before fulfillment
  • Service Issues: Refund payments when services cannot be delivered
  • Partial Refunds: Refund a portion of the transaction amount

Best Practices

  • Verify Transaction First: Always verify the transaction exists and status before initiating a refund
  • Document Reasons: Provide clear reasons for refunds to maintain records
  • Use Unique References: Use unique merchant references for tracking refunds
  • Monitor Balance: Ensure sufficient balance before processing refunds
  • Track Refund Status: Monitor refund status to ensure completion

Next Steps

On this page