Yes, as of build 1.3.0, the Coinbase Payment Gateway module supports refunds through the Coinbase API. Refunds are processed directly from the module, eliminating the need to switch to the Coinbase dashboard for routine operations. However, there is one key limitation: you cannot send partial refunds. Refunds can only be sent for the original full amount of the transaction.
This refund capability matters for any .NET-based storefront because it enables faster order fulfillment adjustments, reduces chargeback risk, and improves customer experience when handling returns or cancellations. The module was updated to call the official Coinbase refund endpoint while enforcing the full-amount rule to maintain transaction integrity on both platforms.
#Prerequisites
Before attempting any refund, confirm the following items are in place. Running an older module build will simply lack the refund methods, resulting in disabled UI controls or runtime errors. API credentials must include the necessary scopes, and the original charge must still be in a refund-eligible state per Coinbase rules—typically within 180 days and not already disputed.
- Coinbase Payment Gateway module at build 1.3.0 or newer
- Valid Coinbase Commerce API key and webhook secret configured in module settings
- Administrative access to the order management interface
- Original transaction settled and not previously refunded
#Processing a Refund
Once prerequisites are met, refunds are issued from within the standard order workflow. The module retrieves the original charge identifier, constructs the refund request, and submits it to the Coinbase API. Because partial amounts are unsupported, the interface will not accept any value other than the captured total. After submission, the module updates the order status and can optionally send customer notification emails.
- Log into the website administrative dashboard and navigate to Orders
- Open the details page for the transaction paid via Coinbase
- Locate the Payment Actions or Refund section provided by the module
- Confirm the displayed refund amount exactly matches the original transaction total
- Execute the refund and refresh the page to verify the updated status
#Technical Implementation and Example
Internally the module calls the Coinbase refund endpoint using the charge code captured at checkout. For teams extending the module or building custom flows, the pattern follows a simple authenticated POST. Always supply the full amount or omit it to trigger a complete refund; supplying any lesser figure will be rejected by the module wrapper.
// Example of calling refund through the module wrapper in C#
using ASPNix.Coinbase;
public void IssueFullRefund(string orderId)
{
var gateway = new CoinbaseGateway(Configuration.ApiKey, Configuration.WebhookSecret);
var transaction = GetTransactionByOrder(orderId);
// Only full amount permitted by module
bool success = gateway.Refund(transaction.ChargeCode);
if (success)
{
UpdateOrderStatus(orderId, "Refunded");
Log.Info("Full refund completed for charge " + transaction.ChargeCode);
}
}
#Limitations, Pitfalls, and Troubleshooting
The primary limitation remains the inability to issue partial refunds. Attempting to force a partial amount either through the UI or direct API wrapper will throw an exception or return a clear error. Other frequent issues include stale API keys, webhook misconfiguration that prevents status updates, or attempting refunds on test-mode charges from a live module.
- Double-check module build number before troubleshooting further
- Inspect application event logs for Coinbase API response bodies
- Confirm the charge has not already been refunded or disputed in the Coinbase dashboard
In practice, the full-refund-only constraint means some merchants handle partial returns by issuing store credit separately while refunding the entire cryptocurrency payment. Keep the module updated and monitor Coinbase API changelogs for any future expansion of refund options.
Takeaway: Full refunds work reliably when the module is on build 1.3.0 or later and correctly configured. Review your installation and API setup guide for details on enabling webhooks, which ensure timely status synchronization after a refund completes.
Comments
No comments yet