Transfers API

Topic summary

  • Central issue: Merchants and developers are repeatedly requesting an official Transfers API to export/import transfer data, integrate with back-end systems, and support purchase order workflows. Even basic tasks like printing a transfer are noted as unsupported.

  • Current state: No official REST or GraphQL endpoint exists. Although an internal admin endpoint (/admin/transfers.json and /admin/transfers/{id}.json) returns JSON, it’s unsupported and incomplete (e.g., missing destination location), limiting reliable integration.

  • Workarounds: One participant shared a hack using browser cookies and a Node.js fetch (with steps and code) to pull the JSON; cookies expire ~24 hours. Images and code snippets are central to this workaround.

  • Third-party option: A developer promotes an app (Simple Purchase Orders) that creates POs and updates inventory, but it cannot integrate with a non-existent Transfers API.

  • Sentiment and debate: Many “+1” requests and frustration about the delay (noted as 2.4 years, later 6 years). Some argue Shopify focuses on enterprise/Plus features and cite layoffs/stock performance; others push back on the cynicism.

  • Outcome: No official response, timeline, or endpoint. The request remains open; key asks are an official Transfers API (REST/GraphQL) or at least import/export functionality.

Summarized with AI on January 3. AI used: gpt-5.

Both developers and clients have been asking for this for ages. Any chance of a trabsfers API being done soon?

It is really exasperating that there is no app for exporting or extracting transfer data. There is even an API that I can use in a browser to see the data in JSON format. /admin/transfers.json WHY is there no support for getting this data? It is really frustrating.

I undertstand that this admin endpoint is not part of the official API but how long would it take to expose transfers officially. There are heaps of threads on both the developer forums (the latest said it was promised to be coming at a conference) and there are also threads in the normal shopify forums to be able to export transfers. There are no apps to do this because there is no supported API.
Being able to export transfers would enable the building of a simple Purchase order.

22 Likes

Hi, my app Simple Purchase Orders https://apps.shopify.com/simple-po has people on a weekly basis ask if we integrate with the Transfer API. The app allows you to set up suppliers and import products and their cost prices. You can then automatically generate purchase orders to reorder stock and transfer it into your Shopify inventory when it arrives.

Its pretty much got all the functionality of the Transfer API with the ability to make POs. Please check it out and let me know if you have any questions.

+1 same here

I’d also like to add to this request. It has been requested in other threads and this seems like a basic feature for every Shopify store with any other system on the backend.

Without this API released the feature is basically useless for many merchants

1 Like

Same here. Please make this available. This basic feature would be incredibly useful.

1 Like

Looking forward to this API.

1 Like

I find it odd that even a basic task like just printing a transfer isn’t supported within Shopify.

It’s been 2.4 years since you posted this … the browser link works … any luck on the API, perhaps from graphQL? Thanks! jb

3 Likes

I also need a transfer API or graphQL endpoint. Kinda confused why this functionality doesn’t exist yet. Even the functionality to ‘import’ or ‘export’ transfers would be helpful.

1 Like

the way I do this is a bit hacky, but for me it works, so I’d like to share it in the hopes that it will help someone else. (at least untill shopify gives us a way to do this through an official endpoint.) only issue currently is that the destination location is missing (only source location is available, but if you dont have too many transfers between more than 2 locations it will work for you

or you can use the query parameter to look for a certain locations transfers: admin/transfers.json?query=location_name if the source is the same as the location name you know it was not to this location, and you could skip it, this way you would only get transfers to this location (I haven’t used this part, and I know it’s not ideal, but better than nothing)

I use nodejs to fetch the transfers json.

if you are in the shopify admin, open up transfers, add .json after the url and press enter:

Thomas_Lang1_0-1624821143177.png

open the google chrome webinspector, and find the get request to the transfers.json endpoint, then copy it as nodejs fetch:

paste it into an editor like webstorm, add the node-fetch module and you will be able to fetch the json (the cookies are valid for about 24 hours, so if you need to fetch again you will need to do above steps again.

your code should look something like this (i removed my cookie data and sessionids ofcourse):

const fetch = require('node-fetch');

async function getTransfers() {
    let res = await fetch("https://xx.myshopify.com/admin/transfers.json", {
        "headers": {
            "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
            "accept-language": "en-US,en;q=0.9,nl;q=0.8",
            "cache-control": "no-cache",
            "pragma": "no-cache",
            "sec-ch-ua": "\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"",
            "sec-ch-ua-mobile": "?0",
            "sec-fetch-dest": "document",
            "sec-fetch-mode": "navigate",
            "sec-fetch-site": "none",
            "sec-fetch-user": "?1",
            "upgrade-insecure-requests": "1",
            "cookie": "_master_udr=verylongstring; new_admin=1; _secure_admin_session_id=session_id; _secure_admin_session_id_csrf=csrf; koa.sid=sid; koa.sid.sig=sid.sig; _ab=1; __ssid=sig; secure_customer_sig=; _shopify_m=session; _tracking_consent=%D; identity-state=xx; _s=xx _shopify_y=xx; _shopify_s=xx; _orig_referrer=; _landing_page=%2Fadmin%2Ftransfers; _shopify_evids="
        },
        "referrerPolicy": "strict-origin-when-cross-origin",
        "body": null,
        "method": "GET",
        "mode": "cors"
    });

    let jsonResult = await res.json();
   console.log("transfer json result:", jsonResult);
}

getTransfers();

there is also another endpoint available which will give you a single transfer by id (although the other endpoint has all the data, maybe it’s useful for you)

/admin/transfers/(yourtransferid).json

Bump?

2 Likes

I don’t understand why it’s so hard to write 4 endpoints..I think it’s very important in development to pay attention to the needs of the customers … after all this time and finally … :slightly_smiling_face:

1 Like

Yes. Please make this available.

2 Likes

Any news on this? could be really nice with the transfer api

3 Likes

Also need this, please Shopify.

4 Likes

Upvote

5 Likes

Shopify - any news?

2 Likes

Any news on this?

1 Like

For some reason, unknown to … well, any of us … it just has not been a priority enough to pretty up the so-called transfers data (Shopify name for orders on the books). My own guess is that this is information useful to existing in-depth developers, and it is always bumped by information useful to the bulk of less-sophisticated developers (and especially to not-yet developers).

just a guess.

cheers jb

1 Like

@den232 One of the reasons is likely that Shopify’s focus seems to be on massive enterprises now rather than on making the platform flexible. You only have to look at their ‘editions’ (that they seem very proud of) to see that almost every feature is focused on, or only available to, subscribers of Shopify Plus.

Shopify have lost touch with grassroots, the very thing that gave them their success.

This shows in their dropping stock price and is reflected in the 10% layoffs in 2022, with more layoffs rumoured to be announced very soon (if you believe the news).

Note to Shopify: Add a Transfer/Purchase Order API before you fire any more developers…

Cynically,

Online_Seller