Showing results for 
Search instead for 
Did you mean: 

Processing a refund on a card present transaction

We are using AIM and I can issue refunds just fine with payments made over our website, but we are now adding in for our card present transactions. Is there something different you have to do for a card present? Below is the data we are submitting and we are getting back the error "The credit card number is invalid". We do not store the full credit card number for security, but it seems like we have to. Am I missing something when looking at the manuals?



    [x_login] => 1111111111111111
    [x_tran_key] => 1111111111111
    [x_delim_char] => |
    [x_method] => CC
    [x_duplicate_window] => 30
    [x_type] => CREDIT
    [x_market_type] => 2
    [x_device_type] => 2
    [x_response_format] => 1
    [x_invoice_num] => R
    [x_description] => Refund for Order #45748
    [x_trans_id] => 11111111111111
    [x_amount] => 22.75
    [x_card_num] => 1594
    [x_card_code] => 
    [x_exp_date] => 1213


This is caused by one of the minor differences between CP and normal AIM processing. When processing a refund for a Card Present transaction, you need to be sure to send the original transaction ID as "x_ref_trans_id" instead of just "x_trans_id".  The error you are seeing is because the transaction ID was not detected and, as a result,  it is looking for a full card number. 

Administrator Administrator

Does this present a problem with using the testing endpoint ?  I was having problems when submitting requests against the suggested testing endpoint for Card Present:




Without a "x_trans_id" parameter, I received Transaction ID errors.  When I added that parameter instead of "x_ref_trans_id", I got errors when I did not include a full credit card number (and then errors for not having an Expiration Date when I did include the full Card Number).  I'm wondering if perhaps the testing endpoint is problematic for Card Present "Credit" (refund) transactions ?

it seem to work with the x_ref_trans_id. Have you test with an auth_only then do a void with that transactionID?

I have confirmed that x_ref_trans_id is accpeted by the testing server.  I did not realize that the 24 hours (approximately) time period needed for a transaction to "settle" was still required on in the testing environment.