Skip to main content
Version: v2

Unlinked Refunds

Unlinked refunds let merchants credit a customer's card directly without referencing a previous payment. This is useful for goodwill credits, promotional refunds, or when a linked refund cannot be processed due to payment unavailability or expiration.

Get Started

To integrate Unlinked Refunds, follow the Integration Guide for step-by-step instructions and API details.


Key Benefits​

Real-world Example

A customer experienced a service issue and the merchant wants to issue a $25 goodwill credit. The original payment was 6 months ago and is no longer available for linked refund. Using unlinked refund, the merchant credits $25 directly to the customer's card on fileβ€”no original transaction needed.

Without Unlinked RefundsWith Unlinked Refunds
Must have an original payment to reverseCredit any saved card independently
Cannot issue goodwill credits through payment systemDirect promotional credits and adjustments
Failed linked refunds require manual interventionAutomated credit to customer's card
Expired or disputed payments block refundsWorks regardless of original payment status

How It Works​

Unlinked Refund Flow​


Business Rules​

Pre-Conditions​

  • Valid customer information required (first name, last name, HSID)
  • Payment method must be CARD type only (ACH/bank accounts not supported)
  • Payment method must belong to the specified customer
  • Each refund requires a unique merchantTransactionId
  • Payment method must be active and not expired

Post-Conditions​

OutcomeBehaviour
βœ… Refund successfulStatus β†’ COMPLETED, merchant receives REFUND_SUCCESS webhook
❌ Validation failsStatus β†’ FAILED, merchant receives REFUND_FAILED webhook with error details
❌ Card invalid/expiredStatus β†’ FAILED, funds not returned

Constraints​

ConstraintDetail
Payment Method TypeCARD only β€” ACH and bank account payment methods are rejected
Maximum Amount$10,000 USD per refund
Minimum Amount1Β’ per refund
Customer RequiredCustomer must exist and be associated with the payment method
Unique Transaction IDEach refund requires a unique merchantTransactionIdβ€”duplicates are rejected
No RetriesFailed refunds must be manually corrected and resubmitted with new transaction ID
Single RefundOne unlinked refund per merchantTransactionIdβ€”cannot be reused

Scenarios​

βœ… Standard Scenarios
#ScenarioFinal OutcomeMerchant Action
1Goodwill credit to active cardβœ… COMPLETEDNone
2Promotional refund without prior paymentβœ… COMPLETEDNone
3Credit issued after linked refund failsβœ… COMPLETEDNone
4Refund to customer with new card replacementβœ… COMPLETEDNone
5Customer not found in system❌ FAILEDVerify customer HSID and ensure customer exists
6Payment method not associated with customer❌ FAILEDUpdate customer-payment method association
7ACH payment method provided❌ FAILEDUse CARD payment method only
8Card expired or deleted❌ FAILEDUse alternate card or manual credit

Edge Cases​

Probability

The probability of these edge cases occurring in production is low (< 1%). CCG validates upfront and returns clear error messages.

Edge Cases
#ScenarioOutcomeRecovery
1Duplicate merchantTransactionId used❌ FAILEDGenerate new unique transaction ID and resubmit
2Amount exceeds $10,000 USD limit❌ FAILEDReduce amount to $10,000 or split into multiple refunds
3Customer created but payment method association fails❌ FAILEDVerify payment method belongs to customer in system
4Stripe account has insufficient balance⚠️ PENDINGRefund held until balance available; configure autodebit

Notifications​

CCG sends one refund webhook per request:

OutcomeWebhook Event
Card credited successfullyREFUND_SUCCESS
Validation or processing failedREFUND_FAILED
Refund queued (rare)REFUND_PENDING
Note

Unlinked refund webhooks do not include a paymentId field since there's no associated payment. The payload includes refundId, merchantTransactionId, and paymentMethod details.


Status Reference​

StatusMeaningMerchant Action
INITIATEDRefund request accepted; validation startedWait for final status
PENDINGRefund queued by processor (rare)Wait for webhook or poll status
COMPLETEDCredit successfully issued to cardNone
FAILEDRefund could not be processedReview error details and correct issue