Skip to main content
This endpoint creates an order, picks your store’s payment gateway and returns the checkout URL. Your website just needs to redirect the buyer to that URL.
  • Authentication: not required. The store is identified by shopUrl.
  • Amounts: in cents (the currency’s minor unit). 2500 is €25.00.
Errors are returned as HTTP 200 with redirectUrl: null. Checking the HTTP code isn’t enough: always make sure redirectUrl is set before redirecting.

Request body

string
required
ID of the cart or order in your system. It makes the call idempotent: if you repeat it with the same value, you get the same order. See Idempotency.
string
required
Store URL exactly as registered in Hurry. It must match an active store exactly, character for character. If it’s missing or doesn’t match, no order is created.
Item[]
required
Cart lines. Can’t be empty.
string
default:"USD"
Charge currency, in ISO 4217 format (EUR, USD…).
string
Currency shown to the buyer. Only needed in multi-currency stores.
string
Store shipping option. If you don’t send it, the first active option is used.
string
URL of the page the buyer was on. Used as event_source_url in the pixels’ server events.
string
Order notes.
string
Checkout logo. Only used if the store doesn’t have one configured.

Tracking signals

All optional. Send them so your pixels’ server events attribute the sale correctly.
string
Meta _fbc cookie.
string
Meta _fbp cookie.
string
Visitor ID (hy_vid). It’s the same external_id the pixel sends from the browser.
string
TikTok click ID.
string
TikTok _ttp cookie.
string
Google Ads click ID (gclid, gcl_au or gcl_aw).
string
Pinterest click ID (_epik cookie).
You don’t need to send the buyer’s IP or User-Agent: Hurry takes them from the request itself. Pixel IDs and the option to show your own terms are read from the store settings.

Response

string | null
Checkout URL you must redirect the buyer to. It’s null if the order couldn’t be created.
string
Order ID in Hurry.
string
Gateway used (STRIPE, SHOPIFY…). Only present with some gateways, such as Shopify Payments.
string
Payment status: pending, paid, cancelled, refunded or fulfilled. Only present with some gateways.
string
Same as redirectUrl. Only present with some gateways.
string
Payment session ID in Hurry. Only present with some gateways.
string
Payment session ID in the gateway. Only present with some gateways.

Errors

The request responds HTTP 200 with redirectUrl: null when:
  • shopUrl is missing, doesn’t exist or the store is disabled.
  • The account is suspended.
  • Charges are paused because the daily cap of volume routing has been reached. They resume at 00:00.
  • The store has no active payment gateway.
  • The body isn’t valid, for example with empty items.
The only request that returns an HTTP error is one that arrives without externalId.

Idempotency

If you repeat the call with the same externalId (page reload, double click, retry), you get the same order as long as it can still be charged through its gateway. If that gateway is no longer available (you’ve disabled it or the store no longer uses it), Hurry creates a new order routed with your current settings. Subsequent calls with the same externalId receive that new order.

Amount calculation

Total
In multi-currency stores, the amount is converted from showCurrency to currency at the day’s exchange rate plus the surcharge you’ve set on the store.

Order statuses