Refund Failed on Authorize.net Self Host

Hello Hillel and others,

When I try to refund a payment, I am getting a failure. It seems that the system doesn’t have the card details stored to be able to refund. Am I doing something wrong, or is this a bug?

Also, I would rather not store the card details on my system, instead just store the reference number from Authorize.net. Can we not use that reference number to initiate a refund?

Thank you for your help!

InvalidRequestException in AbstractRequest.php line 201:
The card parameter is required
in AbstractRequest.php line 201
at AbstractRequest->validate(‘card’) in AIMRefundRequest.php line 38
at AIMRefundRequest->getData() in AbstractRequest.php line 610
at AbstractRequest->send() in AIMRefundRequest.php line 55
at AIMRefundRequest->send() in BasePaymentDriver.php line 769
at BasePaymentDriver->refundPayment(object(Payment), ‘2’) in PaymentService.php line 183
at PaymentService->bulk(‘1’, ‘refund’, array(‘refund_amount’ => ‘2’)) in PaymentController.php line 237
at PaymentController->bulk()
at call_user_func_array(array(object(PaymentController), ‘bulk’), array()) in compiled.php line 9496
at Controller->callAction(‘bulk’, array()) in compiled.php line 9558
at ControllerDispatcher->call(object(PaymentController), object(Route), ‘bulk’) in compiled.php line 9538
at ControllerDispatcher->Illuminate\Routing{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 10020
at Pipeline->then(object(Closure)) in compiled.php line 9539
at ControllerDispatcher->callWithinStack(object(PaymentController), object(Route), object(Request), ‘bulk’) in compiled.php line 9526
at ControllerDispatcher->dispatch(object(Route), object(Request), ‘App\Http\Controllers\PaymentController’, ‘bulk’) in compiled.php line 8596
at Route->runController(object(Request)) in compiled.php line 8583
at Route->run(object(Request)) in compiled.php line 8297
at Router->Illuminate\Routing{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Authenticate.php line 102
at Authenticate->handle(object(Request), object(Closure), ‘user’)
at call_user_func_array(array(object(Authenticate), ‘handle’), array(object(Request), object(Closure), ‘user’)) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request)) in DatabaseLookup.php line 18
at DatabaseLookup->handle(object(Request), object(Closure), ‘user’)
at call_user_func_array(array(object(DatabaseLookup), ‘handle’), array(object(Request), object(Closure), ‘user’)) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 10020
at Pipeline->then(object(Closure)) in compiled.php line 8298
at Router->runRouteWithinStack(object(Route), object(Request)) in compiled.php line 8289
at Router->dispatchToRoute(object(Request)) in compiled.php line 8279
at Router->dispatch(object(Request)) in compiled.php line 2419
at Kernel->Illuminate\Foundation\Http{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing{closure}(object(Request)) in HandlePreflight.php line 38
at HandlePreflight->handle(object(Request), object(Closure))
at call_user_func_array(array(object(HandlePreflight), ‘handle’), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Debugbar.php line 51
at Debugbar->handle(object(Request), object(Closure))
at call_user_func_array(array(object(Debugbar), ‘handle’), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request)) in StartupCheck.php line 188
at StartupCheck->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartupCheck), ‘handle’), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request)) in QueryLogging.php line 32
at QueryLogging->handle(object(Request), object(Closure))
at call_user_func_array(array(object(QueryLogging), ‘handle’), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request)) in DuplicateSubmissionCheck.php line 39
at DuplicateSubmissionCheck->handle(object(Request), object(Closure))
at call_user_func_array(array(object(DuplicateSubmissionCheck), ‘handle’), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 3225
at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 44
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), ‘handle’), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 13546
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), ‘handle’), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 12036
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), ‘handle’), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 13285
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), ‘handle’), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 13222
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), ‘handle’), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 3286
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), ‘handle’), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 10020
at Pipeline->then(object(Closure)) in compiled.php line 2366
at Kernel->sendRequestThroughRouter(object(Request)) in compiled.php line 2350
at Kernel->handle(object(Request)) in index.php line 52

We don’t store cards with Authorize.net. We also don’t support refunds, it should just mark the payment as refunded. We’ll include a fix with our next release.

Why not support refunds? I was looking at the omnipay’s authorize.net module, and that supports refund. Is there a technical reason?

It just hasn’t been implemented.

Has this been implemented now? When I refund through InvoiceNinja (self-hosted using AIM Authorize.net integration), Invoice Ninja indicates the refund was processed, but no refunds show in the Authorize.net account.

No, this hasn’t been implemented.