Ship to Ukrainian customers from your Shopify store
Production REST API for European integrators connecting Shopify, WooCommerce, BigCommerce, or custom stacks to a bonded Ukrainian warehouse. 18 methods, JSON, HTTPS, 99.5% SLA. Gateway to a 40M-consumer market with EU-compatible logistics.
If you run an EU-based Shopify or WooCommerce store and want to ship into Ukraine without a local entity, this API is the shortest path. Request an ApiKey, plug in order and status endpoints, and Nova Poshta handles last-mile delivery. Customs paperwork is a separate workflow — our integration team handles it for you at onboarding.
1
Request an ApiKey
Contact your integration manager or call GetToken with your credentials. The key is bearer-style and does not expire until revoked.
Your manager issues a staging ApiKey with isolated data. Call AddOrder with dummy data; we return the order ID and status.
4
Subscribe to status webhooks
Register a URL and we POST JSON on every status change (new → picked → shipped → delivered). Retries 3x with exponential backoff.
02
Authentication
The API expects the ApiKey in the request body, not as an HTTP header. This is a legacy design from the original 1C (Ukraine ERP) integrators, preserved for backward compatibility. Include an ApiKey field at the root of every JSON body.
Security: store the ApiKey server-side only — never in browser JavaScript. Rotate every 90 days. For CI/CD, use environment secret variables (GitHub Actions, GitLab CI).
03
Endpoint groups
Endpoints are grouped by domain model. Full parameters and response schemas are in the OpenAPI specification.
Auth 1 method
GetToken — get ApiKey from login/password
Orders 6 methods
AddOrder — create a customer order
EditOrder — edit before picking starts
CancelOrder — cancel an order
ReportStatusOrder — status changes within a period
getStatusOrder — current status of one order
ListOrder — order register
Products 1 method
AddProduct — add SKU to the catalog
Inventory 2 methods
ReportSklad — warehouse stock levels
ReportMoveProduct — goods movement over a period
Delivery 3 methods (v2)
ListDeliveryRequest — list inbound delivery requests
AddDeliveryRequest — new inbound delivery
ReportDeliveryRequest — report on deliveries
Returns 1 method
ListReturnOrder — return shipments register
Reference 4 methods
getCities — Nova Poshta city directory
getWarehouses — branches in a city
getStreet — streets for courier delivery
senderDetails — sender registration data
04
Code examples
Ready-to-use snippets for creating orders. Paste your ApiKey, map fields to your store's data model.
import os, requests
r = requests.post(
'https://fulfillment.in.ua:34443/MTPGroupFulfillment/hs/api/AddOrder',
json={
'ApiKey': os.environ['MTP_API_KEY'],
'OrderNumber': order['id'],
'Recipient': {'Name': order['name'], 'Phone': order['phone']},
'Delivery': {'Carrier': 'NovaPoshta', 'City': order['city'], 'Warehouse': order['branch']},
'Items': [{'SKU': i['sku'], 'Qty': i['qty'], 'Price': i['price']} for i in order['items']]
}
)
r.raise_for_status()
05
Interactive playground
The Swagger UI below reads our OpenAPI 3.1 spec and lets you fire real requests from this page. For authenticated endpoints, paste your ApiKey into the request body. Reference methods (getCities, getWarehouses) work without a key.
06
Errors and rate limits
The API returns HTTP 200 even for business-level errors — operation status lives in the Result field of the response body. Network errors (400/401/500) indicate a malformed request or auth problem.
Result
Meaning
Action
0
OK
Operation succeeded
1
Auth failed
Check the ApiKey
2
Validation error
Read the Message field
3
Not found
Resource (order, SKU) does not exist
9
Internal
Contact support with the request ID
Rate limits: 60 requests/minute per ApiKey. Bulk report endpoints (ReportSklad, ReportMoveProduct) are capped at 1/min. Exceeding the limit returns HTTP 429.
07
Developer FAQ
Is there a sandbox environment?
Yes. Your integration manager issues a separate staging ApiKey. Same URL, different key — data does not touch the production warehouse.
How do I subscribe to status webhooks?
Register a URL in your integration profile. We POST JSON on every status change. Retries 3x with exponential backoff.
Do you support GraphQL?
No, REST only. GraphQL is not on the roadmap — 18 methods do not justify the overhead.
Is there an official SDK?
Not yet. Node.js and PHP libraries are on the 2026 Q3 roadmap. Current workaround: your own HTTP client around the spec.
How do I integrate Shopify / WooCommerce?
Write a middleware service that listens to Shopify/Woo order webhooks, transforms payloads into our schema, and calls AddOrder. Status updates flow back to Shopify via its Fulfillment API. Typical build: one week for a senior dev.
Do you support batch operations?
Partially — AddOrder accepts an array of up to 100 orders per request. For higher volumes, queue on your side with rate-limit control.