🔍 Problem Statement
Currently, the platform does not support refunding customer balances directly back to their payment cards.
This limitation requires manual intervention or external processing to return unused balances, which increases operational overhead, delays refunds, and may create confusion or dissatisfaction for customers expecting automatic refunds to their original payment method.
💡 User Story
As a customer support or billing administrator,
I want to be able to refund a customer’s balance directly to their saved or original payment card through the platform,
so that refunds are processed seamlessly, accurately, and without manual handling outside the system
🎯 Definition of Done (DoD)
A feature is considered complete when:
✔ Given a payment whose destination was a customer balance,
→ The “Refund” button appears in the Admin Dashboard as it does for normal payments.
✔ When an admin initiates a refund,
→ The refund amount defaults to the original charge amount.
→ If the customer balance is higher than the charge, only the charge amount is refundable (no over-refunds).
✔ Refunds may be full or partial, but cannot exceed the original charge amount.
✔ Each refund is tied to its originating payment and processed via the original payment method and gateway used for the charge.
✔ The refund event triggers (charge.refunded) containing:
Refund amount
Customer ID
Masked card details
Payment and refund transaction IDs
Timestamp
✔ Accounting impact matches the current refund mechanism for standard payments.
🧩 Impacted Components
⚙️ Limitations / Notes
Applies to payments originally charged and credited to customer balance.
Refunds cannot exceed the original charge amount.
Refund logic must respect existing refund policies and gateway constraints.
Product Notes
Designs/Resources/Links/Wireframes/Mockups
Client Users Watchlist
Development Notes
Components which the feature touches
Details on backend/frontend/API/webhooks/SDK implementation
Error handling
Logging events
Technical doc links which have been updated
Breaking changes
Usability risks/limitations
Impact analysis:
(Sample)Added a new JSON key to the object stored in DB, therefor, either a guard in code needs to be added or old lists using Expiry object needs to be adjusted and adding the new JSON key to them.
QA steps needed to validate:
Check functionality of lists created prior this deployment
QA Notes
Planned Test cases: <Testrail link>
Initial Test run: <Testrail link>
Additional Test run(s): <Testrail link>
Open Questions
<Name of concerned member> Question
Please authenticate to join the conversation.
Available
Pelcro Product
Accounting
4 months ago

Rana Haleem
Get notified by email when there are changes.
Available
Pelcro Product
Accounting
4 months ago

Rana Haleem
Get notified by email when there are changes.