What’s Changed
The following three new mutations have been added to replace the legacy synchronous mutations:transactionRefund
(replacesrefundTransaction
)transactionVoid
(replacesvoidTransaction
)transactionVoidOrRefund
(replacesvoidOrRefundTransaction
)
- Operations are now asynchronous and may take longer to complete
- New response structure separates request status from transaction results
- Transaction lists in responses are nullable and may be empty initially
- Status checking is required to determine operation completion
Migration Timeline
All refunds and voids for firms onboarded using the new sponsor bank will
return a Not implemented error.
Implementation Guide
Refunds
Legacy Mutation (Deprecated)
New Mutation
refundTransactions
list is nullable and may be empty initially for asynchronous operations.
Recommended Implementation Pattern:
- Check
refundRequest.status
first:SUCCESS
: Refund completed, checkrefundTransactions
for resultsAWAITING_RESULT
: Refund is processing, listen for atransaction.refunded
ortransaction.partially_refunded
webhookFAILED
: CheckrefundRequest.errorMessage
for details
- If status is
AWAITING_RESULT
, you’ll need to listen to webhooks to get the final result
Voids
Legacy Mutation (Deprecated)
New Mutation
voidTransactions
list is nullable and may be empty initially for asynchronous operations.
Recommended Implementation Pattern:
- Check
voidRequest.status
first:SUCCESS
: Void completed, checkvoidTransactions
for resultsAWAITING_RESULT
: Void is processing, listen for atransaction.voided
webhookFAILED
: CheckvoidRequest.errorMessage
for details
- If status is
AWAITING_RESULT
, you’ll need to listen to webhooks to get the final result
Void or Refund
Legacy Mutation (Deprecated)
New Mutation
voidOrRefundTransactions
list is nullable and may be empty initially for asynchronous operations.
Recommended Implementation Pattern:
- Check
voidOrRefundRequest.status
first:SUCCESS
: Operation completed, checkvoidOrRefundTransactions
for resultsAWAITING_RESULT
: Operation is processing, listen for atransaction.voided
ortransaction.refunded
webhookFAILED
: CheckvoidOrRefundRequest.errorMessage
for details
- Check
voidOrRefundRequest.type
to determine if aVOID
orREFUND
was performed - If status is
AWAITING_RESULT
, you’ll need to listen to webhooks to get the final result
Handling Asynchronous Operations
Webhooks
Implement webhook handlers to receive notifications when operations complete. This provides real-time updates when your refund, void, or void-or-refund operations finish processing. Relevant webhook events:transaction.refunded
- Triggered when a refund completestransaction.partially_refunded
- Triggered when a partial refund completestransaction.voided
- Triggered when a void completes
Troubleshooting
- Null transaction lists: This is expected behavior for asynchronous operations. Always check the request status first.
- AWAITING_RESULT status: The operation is still processing. Use webhooks to get updates.
- Error handling: Always check for
errorMessage
fields in both request and transaction objects.