Merienda an order is placed, your account funds will be waterput on hold for the duration of the order.

Welcome to GDAX trader and developer documentation. Thesis documents outline exchange functionality, market details, and APIs.

APIs are separated into two categories: trading and feed. Trading APIs require authentication and provide access to placing orders and other account information. Feed APIs provide market gegevens and are public.

Market overview and genérico information.

GDAX operates a continuous first-come, first-serve order book. Orders are executed te price-time priority spil received by the matching engine.

Self-Trade Prevention

Self-trading is not permitted on GDAX. Two orders from the same user will not pack one another. When placing an order, you can specify the self-trade prevention behavior.

Decrement and antipara

The default behavior is decrement and contrapuerta. When two orders from the same user cross, the smaller order will be canceled and the larger order size will be decremented by the smaller order size. If the two orders are the same size, both will be canceled.

Bastidor oldest

Pantalla the older (resting) order te total. The fresh order resumes to execute.

Biombo newest

Contrapuerta the newer (taking) order te utter. The old resting order remains on the order book.

Pantalla both

Instantly mampara both orders.

Notes for Market Orders

When a market order using dc self-trade prevention encounters an open limit order, the behavior depends on which fields for the market order message were specified. If funds and size are specified for a buy order, then size for the market order will be decremented internally within the matching engine and funds will remain unchanged. The intent is to offset your target size without limiting your buying power. If size is not specified, then funds will be decremented. For a market sell, the size will be decremented when encountering existing limit orders.

Price Improvement

Orders are matched against existing order book orders at the price of the order on the book, not at the price of the taker order.


User A places a Buy order for 1 BTC at 100 USD. User B then wishes to sell 1 BTC at 80 USD. Because User A&rsquo,s order wasgoed very first to the trading engine, they will have price priority and the trade will occur at 100 USD.

Order Lifecycle

Valid orders sent to the matching engine are confirmed instantaneously and are te the received state. If an order executes against another order instantaneously, the order is considered done. An order can execute ter part or entire. Any part of the order not packed instantaneously, will be considered open . Orders will stay ter the open state until canceled or subsequently packed by fresh orders. Orders that are no longer eligible for matching (packed or canceled) are ter the done state.

Trading Fees

GDAX operates a maker-taker specimen. Orders which provide liquidity are charged different fees from orders taking liquidity. The toverfee is assessed spil a percentage of the match amount (price * size). Maker and taker fees are calculated hourly based on the user&rsquo,s 30d USD-equivalent trading volume:


Your taker toverfee is based upon total USD trading volume across all Order Books overheen the trailing 30 day period. For example, a purchase of 1 BTC for $Ten,000 on the BTC-USD book will count spil $Ten,000 towards your 30 day USD volume.


Transactions made on non-USD books are converted to USD based on the most latest pack price on the corresponding USD book. For example, a purchase of 1 ETH for 0.1 BTC on the ETH-BTC book will count spil the most latest pack price of 1 ETH on the ETH-USD Order Book.

Deposit/Withdraw Fees

GDAX does not charge any extra deposit or withdraw fees for moving funds inbetween your Coinbase accounts and your Exchange accounts.

GDAX gegevens centers are ter the Amazon US East N. Virginia ( us-east-1 ) region.

A public sandbox is available for testing API connectivity and web trading. The sandbox provides all of the functionality of the production exchange but permits you to add fake funds for testing.

Login sessions and API keys are separate from production. Use the sandbox web interface to create keys ter the sandbox environment.

To add funds, use the web interface deposit and withdraw buttons spil you would on the production web interface.

Sandbox URLs

When testing your API connectivity, make sure to use the following URLs.

Client libraries can help you integrate with our API quickly.



The Surplus API has endpoints for account and order management spil well spil public market gegevens.

Surplus API Endpoint URL

There is also a FIX API for order management.

All requests and responses are application/json content type and go after typical HTTP response status codes for success and failure.


Unless otherwise stated, errors to bad requests will react with HTTP 4xx or status codes. The assets will also contain a message parameter indicating the cause. Your language&rsquo,s http library should be configured to provide message figures for non-2xx requests so that you can read the message field from the bod.

Common error codes


A successful response is indicated by HTTP status code 200 and may contain an optional bod. If the response has a bod it will be documented under each resource below.

GDAX uses cursor pagination for all Surplus requests which comeback arrays. Cursor pagination permits for fetching results before and after the current pagina of results and is well suited for realtime gegevens. Endpoints like /trades, /fills, /orders, comeback the latest items by default. To retrieve more results subsequent requests should specify which direction to paginate based on the gegevens previously returned.

before and after cursors are available via response headers CB-BEFORE and CB-AFTER . Your requests should use thesis cursor values when making requests for pages after the initial request.



Before and After cursors

The before cursor references the very first voorwerp te a results pagina and the after cursor references the last voorwerp ter a set of results.

To request a pagina of records before the current one, use the before query parameter. Your initial request can omit this parameter to get the default very first pagina.

The response will contain a CB-BEFORE header which will come back the cursor id to use te your next request for the pagina before the current one. The pagina before is a newer pagina and not one that happened before te chronological time.

The response will also contain a CB-AFTER header which will terugwedstrijd the cursor id to use te your next request for the pagina after this one. The pagina after is an older pagina and not one that happened after this one ter chronological time.


Unless otherwise specified, all timestamps from API are returned te ISO 8601 with microseconds. Make sure you can parse the following ISO 8601 format. Most modern languages and libraries will treat this without issues.


Parte numbers are returned spil strings to preserve utter precision across platforms. When making a request, it is recommended that you also convert your numbers to strings to avoid truncation and precision errors.

Rechtschapen numbers (like trade id and sequence) are unquoted.

Most identifiers are UUID unless otherwise specified. When making a request which requires a UUID, both forms (with and without dashes) are accepted.

132fb6ae-456b-4654-b4e0-d681ac05cea1 or 132fb6ae456b4654b4e0d681ac05cea1

When a rate limit is exceeded, a status of 429 Too Many Requests will be returned.

Surplus API

Public endpoints

Wij throttle public endpoints by IP: Three requests vanaf 2nd, up to 6 requests vanaf 2nd ter bursts.

Private endpoints

Wij throttle private endpoints by user ID: Five requests vanaf 2nd, up to Ten requests vanaf 2nd te bursts.

Financial Information eXchange API

The FIX API throttles the number of incoming messages to 50 directives vanaf 2nd.

Private endpoints are available for order management, and account management. Every private request vereiste be signed using the described authentication scheme.

Generating an API Key

Before being able to sign any requests, you voorwaarde create an API key via the GDAX webstek. Upon creating a key you will have Trio lumps of information which you voorwaarde recall:

The Key and Secret will be randomly generated and provided by GDAX, the Passphrase will be provided by you to further secure your API access. GDAX stores the salted hash of your passphrase for verification, but cannot recover the passphrase if you leave behind it.

API Key Permissions

You can restrict the functionality of API keys. Before creating the key, you vereiste choose what permissions you would like the key to have. The permissions are:

  • View – Permits a key read permissions. This includes all GET endpoints.
  • Transfer – Permits a key to transfer currency on behalf of an account, including deposits and withdraws. Enable with caution – API key transfers WILL BYPASS two-factor authentication.
  • Trade – Permits a key to come in orders, spil well spil retrieve trade gegevens. This includes Postbode /orders and several GET endpoints.

Please refer to documentation below to see what API key permissions are required for a specific route.

Creating a Request

All Surplus requests voorwaarde contain the following headers:

  • CB-ACCESS-KEY The api key spil a string.
  • CB-ACCESS-SIGN The base64-encoded signature (see Signing a Message).
  • CB-ACCESS-TIMESTAMP A timestamp for your request.
  • CB-ACCESS-PASSPHRASE The passphrase you specified when creating the API key.

All request bods should have content type application/json and be valid JSON.

Signing a Message

The CB-ACCESS-SIGN header is generated by creating a sha256 HMAC using the base64-decoded secret key on the prehash string timestamp + method + requestPath + figure (where + represents string concatenation) and base64-encode the output. The timestamp value is the same spil the CB-ACCESS-TIMESTAMP header.

The bod is the request bod string or omitted if there is no request assets (typically for GET requests).

The method should be UPPER CASE.

Selecting a Timestamp

The CB-ACCESS-TIMESTAMP header Vereiste be number of seconds since Unix Epoch ter UTC. Quebrado values are permitted.

Your timestamp vereiste be within 30 seconds of the api service time or your request will be considered expired and rejected. Wij recommend using the time endpoint to query for the API server time if you believe there many be time skew inbetween your server and the API servers.

List Accounts

Get a list of trading accounts.

HTTP Request

API Key Permissions

This endpoint requires either the &ldquo,view&rdquo, or &ldquo,trade&rdquo, permission.

Account Fields

Funds on Hold

When you place an order, the funds for the order are placed on hold. They cannot be used for other orders or withdrawn. Funds will remain on hold until the order is packed or canceled.

Get an Account

Information for a single account. Use this endpoint when you know the account_id.

HTTP request

API Key Permissions

This endpoint requires either the &ldquo,view&rdquo, or &ldquo,trade&rdquo, permission.

Account Fields

Get Account History

List account activity. Account activity either increases or decreases your account vaivén. Items are paginated and sorted latest very first. See the Pagination section for retrieving extra entries after the very first pagina.

HTTP request

API Key Permissions

This endpoint requires either the &ldquo,view&rdquo, or &ldquo,trade&rdquo, permission.

Entry Types

Entry type indicates the reason for the account switch.


If an entry is the result of a trade (match, toverfee), the details field will contain extra information about the trade.

Get Holds

Holds are placed on an account for any active orders or pending withdraw requests. Spil an order is packed, the hold amount is updated. If an order is canceled, any remaining hold is liquidated. For a withdraw, merienda it is finished, the hold is eliminated.

HTTP Request

API Key Permissions

This endpoint requires either the &ldquo,view&rdquo, or &ldquo,trade&rdquo, permission.

The type of the hold will indicate why the hold exists. The hold type is order for holds related to open orders and transfer for holds related to a withdraw.

The ref field contains the id of the order or transfer which created the hold.

Place a Fresh Order

You can place two types of orders: limit and market . Orders can only be placed if your account has sufficient funds. Merienda an order is placed, your account funds will be waterput on hold for the duration of the order. How much and which funds are waterput on hold depends on the order type and parameters specified. See the Holds details below.

HTTP Request

API Key Permissions

This endpoint requires the &ldquo,trade&rdquo, permission.


Thesis parameters are common to all order types. Depending on the order type, extra parameters will be required (see below).

limit order parameters

* Requires time_in_force to be GTT

** Invalid when time_in_force is IOC or FOK

market order parameters

* One of size or funds is required.

Product ID

The product_id vereiste match a valid product. The products list is available via the /products endpoint.

Client Order ID

The optional client_oid field vereiste be a UUID generated by your trading application. This field value will be broadcast ter the public feed for received messages. You can use this field to identify your orders ter the public feed.

The client_oid is different than the server-assigned order id. If you are consuming the public feed and see a received message with your client_oid , you should record the server-assigned order_id spil it will be used for future order status updates. The client_oid will NOT be used after the received message is sent.

The server-assigned order id is also returned spil the id field to this HTTP Postbode request.

When placing an order, you can specify the order type. The order type you specify will influence which other order parameters are required spil well spil how your order will be executed by the matching engine. If type is not specified, the order will default to a limit order.

limit orders are both the default and basic order type. A limit order requires specifying a price and size . The size is the number of bitcoin to buy or sell, and the price is the price vanaf bitcoin. The limit order will be packed at the price specified or better. A sell order can be packed at the specified price vanaf bitcoin or a higher price vanaf bitcoin and a buy order can be packed at the specified price or a lower price depending on market conditions. If market conditions cannot pack the limit order instantaneously, then the limit order will become part of the open order book until packed by another incoming order or canceled by the user.

market orders differ from limit orders te that they provide no pricing ensures. They however do provide a way to buy or sell specific amounts of bitcoin or fiat without having to specify the price. Market orders execute instantly and no part of the market order will go on the open order book. Market orders are always considered takers and incur taker fees. When placing a market order you can specify funds and/or size . Funds will limit how much of your quote currency account oscilación is used and size will limit the bitcoin amount transacted.

Zekering orders

Zekering orders become active and wait to trigger based on the movement of the last trade price. There are two types of zekering orders, zekering loss and zekering entry :

zekering: ‘loss’ : Triggers when the last trade price switches to a value at or below the stop_price .

zekering: ‘entry’ : Triggers when the last trade price switches to a value at or above the stop_price .

The last trade price is the last price at which an order wasgoed packed. This price can be found ter the latest match message. Note that not all match messages may be received due to dropped messages.

Note that when triggered, zekering orders execute spil either market or limit orders, depending on the type . They are therefore subject to holds.


The price vereiste be specified ter quote_increment product units. The quote increment is the smallest unit of price. For the BTC-USD product, the quote increment is 0.01 or 1 penny. Prices less than 1 penny will not be accepted, and no fractional penny prices will be accepted. Not required for market orders.

The size voorwaarde be greater than the base_min_size for the product and no larger than the base_max_size . The size can be te any increment of the cojín currency (BTC for the BTC-USD product), which includes satoshi units. size indicates the amount of BTC (or almohadilla currency) to buy or sell.


The funds field is optionally used for market orders. When specified it indicates how much of the product quote currency to buy or sell. For example, a market buy for BTC-USD with funds specified spil 150.00 will spend 150 USD to buy BTC (including any fees). If the funds field is not specified for a market buy order, size voorwaarde be specified and GDAX will use available funds te your account to buy bitcoin.

A market sell order can also specify the funds . If funds is specified, it will limit the sell to the amount of funds specified. You can use funds with sell orders to limit the amount of quote currency funds received.

Time ter force

Time ter force policies provide assures about the lifetime of an order. There are four policies: good till canceled GTC , good till time GTT , instantaneous or tejadillo IOC , and pack or kill FOK .

GTC Good till canceled orders remain open on the book until canceled. This is the default behavior if no policy is specified.

GTT Good till time orders remain open on the book until canceled or the allotted cancel_after is depleted on the matching engine. GTT orders are assured to visera before any other order is processed after the cancel_after timestamp which is returned by the API. A day is considered 24 hours.

IOC Instant or pantalla orders instantly tejadillo the remaining size of the limit order instead of opening it on the book.

FOK Pack or kill orders are rejected if the entire size cannot be matched.

* Note, match also refers to self trades.

Postbode only

The post-only flag indicates that the order should only make liquidity. If any part of the order results te taking liquidity, the order will be rejected and no part of it will execute.


For limit buy orders, wij will hold price x size x (1 + fee-percent) USD. For sell orders, wij will hold the number of Bitcoin you wish to sell. Contemporáneo fees are assessed at time of trade. If you persiana a partially packed or unfilled order, any remaining funds will be released from hold.

For market buy orders where funds is specified, the funds amount will be waterput on hold. If only size is specified, all of your account comprobación (te the quote account) will be waterput on hold for the duration of the market order (usually a trivially brief time). For a sell order, the size te BTC will be waterput on hold. If size is not specified (and only funds is specified), your entire BTC cómputo will be on hold for the duration of the market order.

Self-trade prevention

Self-trading is not permitted on GDAX. Two orders from the same user will not be permitted to match with one another. To switch the self-trade behavior, specify the stp flag.

2 thoughts on “Merienda an order is placed, your account funds will be waterput on hold for the duration of the order.

  1. Right now they’re not compelled to share any gegevens with any government. Imagine an exchange from Japan sharing gegevens of Greek citizens having account with the greek government. Not very likely, right. Also some of them like Binance have no verifications if you withdraw daily up to Two BTC (or its omschrijving) so I don’t see many people withdrawing more daily.

Leave a Reply

Your email address will not be published. Required fields are marked *