Fabrication file - pick and place *.pos file y-coords backwards?

This topic has been brought up once before as a bug on GitLabs (https://gitlab.com/kicad/code/kicad/-/issues/13101) but the proposed solution (inverting the Y-axis in the settings) did not work for me and I figured I should ask the forums before declaring this a software bug.

Problem: All the Y-axis coordinates in the POS file I am generating are inverted (i.e. all Y-axis coordinates have been multiplied by -1). This remains even when I invert the Y-axis in the settings.

In the image below, the Y-axis has been set to increase when moving down. In the POS file generated using this setting, you can see that C1 is supposed to be located at X: 42.745, Y: 24.265. But checking the position of C1 on the Gerbers you can see that the component is located at roughly X: 42.75 and Y: -24.25.

After inverting the Y-axis in the settings, and regenerating the Gerbers and POS file, the same result:

My manufacturer is requiring that the coordinates in the POS file match the component’s location on the Gerber. How can I make the two match?

Here’s my KiCAD version, if it helps:

Application: KiCad x64 on x64
Version: 9.0.6, release build
Libraries:
    wxWidgets 3.2.8
    FreeType 2.13.3
    HarfBuzz 10.2.0
    FontConfig 2.15.0
    libcurl/8.13.0-DEV Schannel zlib/1.3.1
Platform: Windows 11 (build 26100), 64-bit edition, 64 bit, Little endian, wxMSW
OpenGL: Intel, Intel(R) Arc(TM) Graphics, 4.6.0 - Build 32.0.101.6078
Build Info:
    Date: Oct 30 2025 19:36:12
    wxWidgets: 3.2.8 (wchar_t,wx containers)
    Boost: 1.88.0
    OCC: 7.9.1
    Curl: 8.13.0-DEV
    ngspice: 45.2
    Compiler: Visual C++ 1944 without C++ ABI
    KICAD_IPC_API=ON
Locale: 
    Lang: en_US
    Enc: UTF-8
    Num: 1,234.5
    Encoded кΩ丈: D0BACEA9E4B888 (sys), D0BACEA9E4B888 (utf8)

Preferences / PCB Editor / Origins & Axes is only for the visual canvas in the PCB editor. It does not influence coordinates inside KiCad or output files.

If you want to verify coordinates of the component placement files, then it’s best to use a program that can load both the Gerbers (IPC…) and the POS files. It appears that the .POS file can not be loaded by KiCad’s own Gerber viewer, but many people prefer to use software from another manufacturer anyway, just to exclude the possibility that an error in the Gerber files is interpreted in the same erroneous way by both the “Fabrication Output” function and the gerber viewer.

Read:

to find how to promote yourself to be able to attach a file to your post.

Prepare a simple project showing your problem. Pack it (File - ??? (I have no KiCad here and don’t remember the name of function I have never used) and post it here.

I believe someone using V9 (I have not moved to V9 yet) will open your project and check what is going on.

I have never noticed (since V5, through V6 and V7 to V8) any problems with gerber and position files but I have never looked inside them to check coordinates of anything.

IIRC the Gerber files and the CPL file have their own origin points. I forget which one affects the CPL and I don’t have time at the moment to look at a past PCBA project of mine, as I think it was done on v7 and I’d have to migrate it, and I’m not even on v9 yet, waiting to get a round tuit to upgrade my OS and KiCad.

Have a look at the instructions for a fabrication plugin or those of the fabricator. IIRC JLC tells you which origin to set, but they still manage to align it correctly in their preview even if you don’t get it right. Good luck.

@paulvdh - I was poking around the web for a combined Gerber and Pick & Place viewer but was unable to find one. Is there one you could recommen?

@Piotr - Thanks for pointing out the lack of a demo file. I have tried generating a minimalist example but learned that, as a new user, I cannot upload files. :smiling_face_with_tear:

Our CM has since provided us a more detailed report that wasn’t just “your Pick and Place file is broken” and looks like it’s only a subset of components, so it seems the flip in Y-axis wasn’t the issue for them after all. It could be that the mismatch between the Gerber Viewer coordinate system and the Pick & Place file is just a quirk of the tool and not indicative of an actual mismatch.

Thanks to everyone for your comments! :folded_hands:

You have read linked by me FAQ and you still cannot?

In past (KiCad V5) you were not able to flip Y-axis but production output files were correct.

I did a short test in the Ucamco viewer (They are the creators / maintainers of the Gerber format)

https://gerber-viewer.ucamco.com/

Together with the normal PCB layers, I also created a placement file with the settings below:

And Ucamco’s viewer shows them as dots:

I’m just a hobbyist myself and I guess there is no size information of the parts in these placement files.

Thank you so much for suggesting the Ucamco viewer! That’s just the tool I need.

I have managed to get to the bottom of my placement woes in the meantime: My colleague had converted the POS file to a CSV, and that process had moved a bunch of commas.

KiCad’s own Gerber viewer display the Gerber placement files just as well.

Not just dots:

There is a large dot for the centre, a diamond for pin 1 and small dots for the other pins.