Automating eBay Sales via Sell API
One of our clients, an online sports goods store, was losing up to 15% of orders due to overselling. eBay stock levels didn't match reality, and items sold when they were already out of stock. Manual CSV updates took 3 hours daily. We automated synchronization through Sell API: order losses stopped, processing time dropped to 10 minutes per day. We also set up discrepancy notifications. As a result, the client increased sales by 25%, and automation paid for itself within 2–3 months.
This is a typical situation for stores entering eBay: manual item uploads, mismatched inventory, orders coming via email, hours of processing. We offer turnkey integration—from OAuth2 setup to full order synchronization. We use modern REST APIs (Sell API) and flexible algorithms to eliminate discrepancies and speed up fulfillment. Quality is guaranteed—our engineers hold an eBay Developer certificate and have 10+ years of e-commerce experience.
What Problems Does eBay Integration Solve?
Stock discrepancies are a common cause of order cancellations. Our solution syncs data in real time via the Fulfillment API and webhooks, using queues and exponential backoff for retries.
Legacy authentication—eBay is phasing out Trading API keys. We automate OAuth2 token retrieval with a refresh mechanism, storing tokens in secure storage.
Incorrect category mapping—items won't appear in search without proper attributes. Our mapping uses the eBay Taxonomy API to set EAN, brand, color, and other aspects.
Another issue is delays in order processing. With manual handling, it can take hours from receipt to shipment. Automation via Sell API enables instant response.
How to Set Up Integration: Step-by-Step Guide
- Register in the eBay Developer Program—create an account and app to get Client ID and Client Secret.
- Set up OAuth2—implement token retrieval using the client credentials grant (code example below).
- Create inventory items and offers—map products to categories and attributes.
- Process orders—use the Fulfillment API to fetch and update statuses.
- Enable webhooks—configure Platform Notifications for real-time events.
How We Do It: Stack and Implementation
We use a proven stack:
- Python (aiohttp) for high-load operations—creating thousands of listings in minutes.
- PHP (Laravel) for webhook processing and CRM integration.
- React for the admin panel to manage mappings.
Authentication—OAuth2 with client credentials grant.
import requests
import base64
def get_access_token(client_id: str, client_secret: str) -> str:
credentials = base64.b64encode(f"{client_id}:{client_secret}".encode()).decode()
resp = requests.post(
'https://api.ebay.com/identity/v1/oauth2/token',
headers={'Authorization': f'Basic {credentials}'},
data={
'grant_type': 'client_credentials',
'scope': 'https://api.ebay.com/oauth/api_scope',
}
)
return resp.json()['access_token']
Creating a listing involves an inventory item and an offer. This allows selling one product on multiple marketplaces with different prices:
def create_inventory_item(sku: str, product: dict, token: str) -> None:
headers = {'Authorization': f'Bearer {token}', 'Content-Language': 'de-DE'}
# Create inventory item
requests.put(
f'https://api.ebay.com/sell/inventory/v1/inventory_item/{sku}',
headers=headers,
json={
'availability': {'shipToLocationAvailability': {'quantity': product['stock']}},
'condition': 'NEW',
'product': {
'title': product['name'],
'description': product['description'],
'imageUrls': product['images'],
'aspects': {'Brand': [product['brand']]},
'ean': [product['ean']],
},
}
)
# Create offer (listing)
requests.post(
'https://api.ebay.com/sell/inventory/v1/offer',
headers=headers,
json={
'sku': sku,
'marketplaceId': 'EBAY_DE',
'format': 'FIXED_PRICE',
'pricingSummary': {
'price': {'value': str(product['price']), 'currency': 'EUR'}
},
'fulfillmentPolicyId': FULFILLMENT_POLICY_ID,
'paymentPolicyId': PAYMENT_POLICY_ID,
'returnPolicyId': RETURN_POLICY_ID,
'merchantLocationKey': WAREHOUSE_KEY,
'categoryId': product['ebay_category_id'],
}
)
Fetching orders via the Fulfillment API with a date filter:
def get_orders(token: str, since: str) -> list:
resp = requests.get(
'https://api.ebay.com/sell/fulfillment/v1/order',
headers={'Authorization': f'Bearer {token}'},
params={'filter': f'creationdate:[{since}..{datetime.utcnow().isoformat()}Z]', 'limit': 50}
)
return resp.json().get('orders', [])
For real-time updates, we use Platform Notifications—eBay sends XML to your endpoint:
// eBay Platform Notifications handler
Route::post('/webhooks/ebay', function (Request $request) {
// eBay sends XML notifications
$xml = simplexml_load_string($request->getContent());
$eventType = (string) $xml->BuyerUserID; // depends on notification type
// ... processing
return response('');
});
Details on webhook setup
To receive notifications, register an endpoint in the eBay Developer Portal, configure HMAC signing and idempotency. We implement duplicate handling and retries on failures.
Why Upgrade to Sell API?
According to eBay Developer, using Sell API reduces response time 3x compared to Trading API. It provides access to new capabilities (ad campaigns, analytics). Many clients are migrating, and eBay incentivizes this through an Incentive program. Results: 40% reduction in operational costs and 25% sales growth due to accurate inventory.
API Comparison: Trading vs Sell
| Characteristic | Trading API (Legacy) | Sell API (REST) |
|---|---|---|
| Authentication | Auth'n'Auth | OAuth2 |
| Data format | XML | JSON |
| Response speed | up to 2 sec | ~0.5 sec |
| Support | Being phased out | Active |
| Flexibility | Low | High |
Our Work Process
We follow a transparent scheme:
| Stage | Duration | Result |
|---|---|---|
| Analysis | 2–3 days | Requirements specification |
| Design | 3–5 days | Architecture, data schemas |
| Implementation | 10–15 days | Working module |
| Testing | 3–5 days | Report |
| Deployment | 1–2 days | Launch |
Timeline and Cost
A standard integration takes 14 to 25 working days. The cost is calculated individually. Typically, the project pays for itself within 2–3 months through automation. Average operational cost savings are 40%.
What's Included
- Integration documentation
- eBay Developer Portal access setup
- Authentication module (OAuth2)
- Product synchronization module with category mapping
- Order processing module
- Webhooks for notifications
- Team training (1–2 hours)
- 30 days of technical support
Order a turnkey integration and forget about manual listing management. Contact us for a free consultation—we will evaluate your project and find the optimal solution.







