Why is GDAX charging maker's fee when using API? Why are we getting charged maker's fee when creating buy orders on the GDAX API.

For example I deposited 100 EUR to GDAX account and wanted to place a limit buying order for size 0.5 ETH at the price of 200 EUR and received HTTP 400: "Insufficient funds" as a response.

I lowered the size to 0.4 and the order went through, but I was left with 19.80 EUR on my account - meaning that 0.25% was taken as well, but my order was at 200 EUR and 0.4 ETH, totaling 80 EUR not 80.2 EUR.

Looking at the API there shouldn't be a maker's fee.

Has anyone else noticed this?

Doing it manually in the GUI I am left with 20 EUR.
There is no maker fee using API, but when place new order, the default parameter for "post_only" is false, which means it is possible set a price to become a taker, hence GDAX will make sure you have enough funds to cover the fees.

Set post_only to true then GDAX will allow you to spend your entire account without reserves for fees.