Shopify is inserting their own order/invoice number instead of my own in Authorize.net

Solved
Highlighted
Excursionist
13 2 2

I've set-up my Shopify store to use Authorize.Net as the payment processor. I also use that same Authorize.Net account/api key with my Magento store. 

 

All seemed well as I was seeing my Shopify orders appear in Authorize.Net just my Magento orders do.

But that was until I looked closer at the transaction details in Authorize.Net!!

 

On Magento's side, as is as it should be. If my Order number in Magento is "000002222", what I see as the invoice number for the corresponding transaction in Authorize.Net is also "000002222".

 

But with Shopify, when I query the ORDERS API to check one of its orders, I can see that the order_number properu says "1004", its order name says "SU1-1004-A" and its Id says 1331255246947. It's be fine with either of those 3 properties being what appears in the invoice number in Authorize.Net as that then allows me to have a match key for the monthly accounting reconciliation. But what I see in Authorize.Net is not my order number but "c8065915813987.4" ??????

 

In fact every single order I've placed in Shopify look have a corresponding invoice number in Authorize.Net that start with "c80...".

 

As mentionned everything is fine with my other store on Magento.  It is only Shopify that transforms the invoice number into something weird. I think it might have to do with the extra fee that Shopify charges even when not using Shopify Payment as the payment processor.

 

The Shopify platform probably modifies the invoice number with something of its own to protect itself for bad people who would prevent them from take their cut on payment fees. :)

 

While I understand their logic, that does not help me any when it comes time for me to do accounting reconciliation at the end of the month.

 

Without a common unique identifier of both ends (I can't using unsafe matches like just a date plus the amount as a key),  I am up the creak without a paddled when comes time to reconcile our revenues and it's be a return to the dark ages to have our accountant reconcile this manually on paper.

The lack of a common order number will make the headache even bigger whenever a customer also has a refund transaction.

 

I've already checked the Orders API and in all of the json data that it returned to me, there was no part of it that contained that damned "c8065915813987.4" in any of its properties.

 

Does anyone know what API could expose the bogus invoice number that replaced my real one? Is their bogus "c8065915813987.4" even stored/exposed anywhere accessible? 

 

Or can anyone thing of other means to reconcile what I have in Shopify with what I have in Authorize.Net?

 

Thank you for any assistance you can provide on this.

 

 

Highlighted
Shopify Expert
1381 112 211

Hi

 

Order number sequence can not be changed in Shopify. You can just add prefix and suffix in the order number. 

0 Likes
Highlighted
Excursionist
13 2 2

Hi Perennial,

 

Thanks for replying but I was already aware of that and that is not the issue.

 

If Shopify was sending Authorize.Net either the Id of the order (like 1331255246947) , or the order_number (like "1004") or theorder name (like "SU1-1004-A" which uses the prefix and suffix that you mentionned) all would be fine. But what they sent to Authorize.Net is some unknow value of "c8065915813987.4". 

 

So what I need to know where in my Shopify store (or in a Shopify API) could I find that "c8065915813987.4" so that our accounting department can match the monthly file they download from Authorize.Net against my Shopify orders for reconciliation. 

 

Or alternatively, I might also be able to create a workaround if every time Shopify sends a transaction (payment or refund) to Authorize.Net, they would store the Authorize.Net transactionId somewhere that I could access through an API. While more work for me, that would at least allow us to have a way to match Authorize.Net transactions to the corresponding Shopify Order. 

 

Highlighted
Excursionist
13 2 2

I was able to find a work around. I'll share it here in case it might help someone else who faces the problem I encountered.

 

For whatever reason, unlike is the case with my other online stores (like Magento), Shopify is not inserting my actual order number into Authorize.Net.  Instead it fills Authorize.Net with its own stuff that bears no resemblance to my order.

 

So not finding any solutions for this, I tried going about this the other way around. I started looking if at least I could find in Shopify the transaction Id that is generated by Authorize.Net. And, luckily, I eventually did.  

 

Calling the orders.json API did ot help because I cannot see in its response the associated Authorize.Net transaction Ids for the payment and the refund I had done on an order.

 

But by calling the orders/"the order id"/transactions.json API, I was then able to see my Authorize.Net issued payment and refund transaction Ids.

 

One down one to go. :)

 

The above solved my issue for one-time orders made from the regular Shopify Check-out. But for subscription orders made from the ReCharge app checkout, calling the orders/"the order id"/transactions.json API does the return the much needed info. In fact it barely returns any info at all, just high level stuff like Sale or refund but nothing about the gateway. 

 

Guess I'll have to reach out to ReCharge support to solve this one.

 

Francois

0 Likes
Highlighted
Shopify Expert
3 0 0

Hi Francois

 

I have a client that is using Authorize.net and having the same issue. I have spoken with Shopify and have been told it is an Authorize.net issue and client has been told by Authorize.net it is something on Shopify's end. 

Could you explain in a bit more detail how you resolved it? 

 

Thank you

 

Lisa 

0 Likes
Highlighted
Excursionist
13 2 2

Hi Lisa,

 

Just came back from a 3 week vacation so sorry for the delay in the reply. 

 

Also, because its been weeks, I do not have on hand a sample that I could provide you for greater on my earlier solution.

However I will be implementing the solution I had found within our own system in the next week or two so it will come back to me and I will then be able to more easily show you how I've gone about it.

 

if you still need have a need for my working around, and in case I end up forgetting about this post, if you have not seen a reply from me with the solution by September 15, just update this thread. It will send me an email notification and that will remind me to share my workaround with you. :)  

 

Hope this helps,

Francois

 

0 Likes
Highlighted
Shopify Expert
3 0 0

Greetings Francois!! 

I hope you had a lovely holiday. Yes, I would love any assistance you can offer. 

I will check back in a couple of weeks too!! 

Lisa 

0 Likes
Highlighted
New Member
1 0 1

Hello, I ran into this same issue and thought I'd share my workaround.

 

The data you are looking for (c11241060258758.1) is located in a column named "Payment Reference"

 

This column is found on the native Shopify order export function here. You can export your orders by custom date or all together.

"Payment Reference" is column AW on my exports, with column A being my order numbers from my Shopify store.

 

You will need to do the same transaction exports from Authorize.net but at least you'll have everything you need to reconcile transactions as needed.

To make the reconciliation faster it may be of benefit to create a simple excel compare function.

 

I hope this helps!

Highlighted
Shopify Expert
3 0 0

Thank you so much for sharing. Definitely giving this to the client. Thank you!! 

0 Likes
Highlighted
Excursionist
13 2 2

This is an accepted solution.

Hi Hippie_Chick (and all),

 

Sorry it took a while for me to respond, I had forgotten that I said that I'd let you know how I've fixed this.

Since I cannot match Shopify to Authorize.Net based on the order/invoice number I am now doing so using the transaction Id from Authorize.Net. 

 

If you access the following Shopify API:  yourstore/admin/api/2019-07/orders/yourorderid/transactions.json 

you will get a transaction array that will contain your payment transaction (and your refund as well if there is one) and what it returns looks like this:

{

  • transactions: 
     
    [
    •  
      {
      • id: XXX,
      • order_id: XXX,
      • kind: "sale",
      • gateway: "authorize_net",
      • status: "success",
      • message: "This transaction has been approved",
      • created_at: "XXX",
      • test: false,
      • authorization: "XXX",
      • location_id: null,
      • user_id: null,
      • parent_id: null,
      • processed_at: "XXX",
      • device_id: null,
      • receipt: 
         
        {
        • action: "purchase",
        • response_code: 1,
        • response_reason_code: "1",
        • response_reason_text: "This transaction has been approved",
        • avs_result_code: "A",
        • transaction_id"THIS IS YOUR AUTHORIZE.NET ID FOR MATCHING",
        • card_code: "M",
        • authorization_code: "XXX",
        • cardholder_authentication_code: null,
        • account_number: "XXX",
        • test_request: "0",
        • full_response_code: "XXX"
        },....

So you just need to look for the "receipt" object and its property named "transaction_id" is the actual transaction ID that is stored in Authorize.Net.

 

Hope this helps,

Francois

 

0 Likes