Welcome to the Sellix REST API. You can use our API to access Sellix API endpoints to build your own systems on top of our platform.
You can view code examples to the right, at the moment the only available language to view example code is PHP, more will come in the future.
API ROOT URL
https://dev.sellix.io/v1
Sellix's API uses a Bearer authentication with your API Secret Key. You will have to send your API Secret Key via the Authorization header.
Your API key can be accessed and re-generated here in the security tab.
All API requests must be made over HTTPS.
SETUP AUTHENTICATION HEADER
Authorization: Bearer testingjHdAZK6jG2pN6cabSQdZhlS2XqE8UvOSdqSDtlZAeOuF2jfr3a87KKs3Z
Sellix offers the ability to paginate any list endpoint.
If you do not specify a page, we will return all the resources available for the listing.
Parameters
page integer | The page number. |
PAGINATING ORDERS EXAMPLE
/blacklists?page=1
Errors will only ever be present with a 400 to 503 HTTP response status. All errors will include a message attribute detailing the error message.
Validation errors will feature a errors attribute containing an array of error message strings.
The Sellix API uses the following error codes:
STATUS | MEANING |
---|---|
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Unable to authenticate |
403 | Forbidden - The request is not allowed |
404 | Not Found - The specified resource could not be found. |
406 | Not Acceptable - You requested a format that isn't json. |
429 | Too Many Requests - You have reached the rate limit |
500 | Internal Server Error - We had a problem with our server. Try again later. These are rare. |
503 | Service Unavailable - We're temporarily offline for maintenance. Please try again later. |
VALIDATION ERROR
{
"status": 400,
"data": null,
"message": null,
"log": null,
"error": "Invalid Product Title.",
"env": "production"
}
AUTHENTICATION ERROR
{
"status": 401,
"data": null,
"message": null,
"log": "testingjHdAZK6jG2pN6cabSQdZhlS2XqE8UvOSdqSDtlZAeOuF2jfr3a87KKs3Z",
"error": "Unauthorized",
"env": "production"
}
NOT FOUND ERROR
{
"status": 404,
"data": null,
"message": null,
"log": null,
"error": "Not Found.",
"env": "production"
}
Sellix provides a webhooks system allowing you to subscribe to to events with Webhook Endpoints, alongside Product/Payment Order status webhooks and Dynamic Product webhooks.
Please note only HTTPS webhook URLs are supported.
A webhook simulator is available allowing you to simulate webhooks to a URL. It can be accessed here.
Signing/Validating
To verify the authenticity of a webhook request and its payload, each webhook request includes a X-Sellix-Signature header with a HMAC signature comprised of the JSON encoded request body and your webhook secret. Your webhook secret can be changed in your settings page.
Events
Each webhook request will feature a X-Sellix-Event header containing the webhook event type. A list of supported events from Webhook Endpoints can be found below.
EVENT | ||
---|---|---|
order:created | order:updated | order:partial |
order:paid | order:paid:product | order:cancelled |
product:created | product:stock | product:edited |
query:created | query:replied | feedback:received |
order:partial:product | order:created:product | order:disputed:product |
order:disputed | order:cancelled:product | order:updated:product |
Logs
Each webhook request will create a Webhook Log. The object is created by the request has been sent. Before the request response has actually been received, the response_code will be 0, indicating it is pending.
Whitelist Us
Every request will be sent from this IP: 52.214.247.206
VALIDATING SIGNED WEBHOOK SIGNATURE
1 2 3 4 5 6 7 8 9
$payload = file_get_contents('php://input'); $secret = "testing981y25n89byoas7by"; // replace with your webhook secret $header_signature = $_SERVER["HTTP_X_SELLIX_SIGNATURE"]; // get our signature header $signature = hash_hmac('sha512', $payload, $secret); if (hash_equals($signature, $header_signature)) { // handle valid webhook }
We have an additional webhook event for dynamic products: product:dynamic.
This webhook will have as payload the order object.
You can find the quantity for which we expect the response as payload.data.quantity.
Any other logic works as expected following our webhooks.
Please note that we will only send one request (no retries) to provide the best experience to your customers, therefore it’s on you providing the uptime of your API.
ENDPOINTS
GET /blacklists/:uniqid
GET /blacklists
POST /blacklists
PUT /blacklists/:uniqid
DELETE /blacklists/:uniqid
id int | Unique id, auto incremented for the object. |
uniqid string | Unique identifier for the object. |
shop_id int | ID of the shop whose resource is assigned to (your DEFAULT shop). |
type string | Can be email, ip or country. |
data string | Blocked data. Either country code, email or IP address. |
note string | Internal note for the reasoning of the blacklist. |
created_at timestamp | The date and time that the resource was created. |
updated_at timestamp | The date and time that the resource was last updated. If never updated, it will be zero. |
updated_by int | The id of the user that has updated the resource. If never updated, it will be zero. |
THE BLACKLIST OBJECT
{
"id": 0,
"uniqid": "testing63d725",
"shop_id": 0,
"type": "ip",
"data": "1.2.3.5.6",
"note": "Demo Blacklist",
"created_at": 1586045814,
"updated_at": 1586515431,
"updated_by": 0
}
GET /blacklists/:id
Retrieves a Blacklist by ID
RESPONSE
{
"status": 200,
"data": {
"blacklist": {
"id": 0,
"uniqid": "testing63d725",
"shop_id": 0,
"type": "ip",
"data": "1.2.3.5.6",
"note": "Demo Blacklist",
"created_at": 1586045814,
"updated_at": 1586515431,
"updated_by": 0
}
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
GET /blacklists
Returns a list of the Blacklist. The blacklist are sorted by creation date, with the most recently created blacklist being first.
page integer | Page number for use in pagination |
RESPONSE
{
"status": 200,
"data": {
"blacklists": [
{
"id": 0,
"uniqid": "testing63d725",
"shop_id": 0,
"type": "ip",
"data": "1.2.3.5.6",
"note": "Demo Blacklist",
"created_at": 1586045814,
"updated_at": 1586515431,
"updated_by": 0
}
]
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
POST /blacklists
Creates a Blacklist and returns the Uniqid.
Arguments
type string REQUIRED | Can be email, ip or country. |
data string REQUIRED | Blocked data. Either country code, email or IP address |
note string | Internal note for the reasoning of the blacklist. |
CREATE BLACKLIST REQUEST
{
"type": "ip",
"data": "1.2.3.4",
"note": "demo"
}
RESPONSE
{
"status": 200,
"data": {
"uniqid": "testingbb6ac5"
},
"message": "Blacklist Created Successfully.",
"log": null,
"error": null,
"env": "production"
}
PUT /blacklists/:uniqid
Edits a Blacklist.
Arguments
type string | Can be email, ip or country. |
data string | Blocked data. Either country code, email or IP address. |
note string | Internal note for the reasoning of the blacklist. |
EDIT BLACKLIST REQUEST
{
"type": "country",
"data": "IT",
"note": "demo editing"
}
RESPONSE
{
"status": 200,
"data": null,
"message": "Blacklist Edited Successfully.",
"log": null,
"error": null,
"env": "staging"
}
DELETE /blacklists/:uniqid
Deletes a Blacklist.
RESPONSE
{
"status": 200,
"data": null,
"message": "Blacklist Deleted Successfully.",
"log": null,
"error": null,
"env": "staging"
}
ENDPOINTS
GET /categories/:uniqid
GET /categories
POST /categories
PUT /categories/:uniqid
DELETE /categories/:uniqid
id int | Unique id, auto incremented for the object. |
uniqid string | Unique identifier for the object. |
shop_id int | ID of the shop whose resource is assigned to (your DEFAULT shop). |
title string | Title of the category, displayed in the site. |
unlisted int | 0 or 1, if 1 the category is not displayed on the shop page. |
sort_priority int | Used to order the categories on the shop page, ordered by ASC. |
products_bound array | Array of products objects that the category contains. |
products_count int | Count of how many items the products_bound array contains. |
created_at timestamp | The date and time that the resource was created. |
updated_at timestamp | The date and time that the resource was last updated. If never updated, it will be zero. |
updated_by int | The id of the user that has updated the resource. If never updated, it will be zero. |
THE CATEGORY OBJECT
{
"id": 0,
"uniqid": "testing9ced89",
"shop_id": 0,
"title": "Demo Category",
"unlisted": 0,
"sort_priority": 1,
"products_bound": [],
"products_count": 0,
"created_at": 1587110377,
"updated_at": 0,
"updated_by": 0
}
GET /categories/:uniqid
Retrieves a Category by Uniqid.
RESPONSE
{
"status": 200,
"data": {
"category": {
"id": 0,
"uniqid": "testing9ced89",
"shop_id": 0,
"title": "Demo Category",
"unlisted": 0,
"sort_priority": 1,
"products_bound": [],
"products_count": 0,
"created_at": 1587110377,
"updated_at": 0,
"updated_by": 0
}
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
GET /categories
Returns a list of all the Categories. The categories are sorted by creation date, with the most recently created categories being first.
page integer |
RESPONSE
{
"status": 200,
"data": {
"categories": [
{
"id": 0,
"uniqid": "testing9ced89",
"shop_id": 0,
"title": "Demo Category",
"unlisted": 0,
"sort_priority": 1,
"products_bound": [],
"products_count": 0,
"created_at": 1587110377,
"updated_at": 0,
"updated_by": 0
}
]
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
POST /categories
Creates a Category and returns the Uniqid.
Arguments
title string REQUIRED | Title of the category, displayed in the site. |
unlisted int or boolean | 0 or 1, true or false, if 1/true the category is not displayed on the shop page. |
sort_priority string | Used to order the categories on the shop page, ordered by ASC. |
products_bound array | Array of products uniqids that the category will contain. |
CREATE CATEGORY REQUEST
{
"title": "Demo Category",
"unlisted": false,
"sort_priority": 1,
"products_bound": [
"testing26bf06"
]
}
RESPONSE
{
"status": 200,
"data": {
"uniqid": "testing391049"
},
"message": "Category Created Successfully.",
"log": null,
"error": null,
"env": "production"
}
PUT /categories/:uniqid
Edits a Category.
Arguments
title string | Title of the category, displayed in the site. |
unlisted int or boolean | 0 or 1, true or false, if 1/true the category is not displayed on the shop page. |
sort_priority string | Used to order the categories on the shop page, ordered by ASC. |
products_bound array | Array of products uniqids that the category will contain. |
EDIT CATEGORY REQUEST
{
"title": "Demo Category Edited",
"unlisted": false,
"sort_priority": 1,
"products_bound": [
"testing8h9ba4s"
]
}
RESPONSE
{
"status": 200,
"data": {
"uniqid": "testing391049"
},
"message": "Category Edited Successfully.",
"log": null,
"error": null,
"env": "production"
}
DELETE /categories/:uniqid
Deletes a Category.
RESPONSE
{
"status": 200,
"data": null,
"message": "Category Deleted Successfully.",
"log": null,
"error": null,
"env": "staging"
}
ENDPOINTS
GET /coupons/:uniqid
GET /coupons
POST /coupons
PUT /coupons/:uniqid
DELETE /coupons/:uniqid
id int | Unique id, auto incremented for the object. |
uniqid string | Unique identifier for the object. |
shop_id int | ID of the shop whose resource is assigned to (your DEFAULT shop). |
code string | Coupon code, used by customers to reedem the discount. |
use_type int | 0 or 1, if 0 means that the coupon is linked to specific products, 1 it’s valid for all. |
discount float | Percentage value of the discount. |
used int | How many times the coupon has been used. |
max_uses int | How many times can the coupon be used, -1 for unlimited. |
products_bound array | Array of products uniqids that the coupon is valid for. |
products_count int | Count of how many items the products_bound array contains. |
created_at timestamp | The date and time that the resource was created. |
updated_at timestamp | The date and time that the resource was last updated. If never updated, it will be zero. |
updated_by int | The id of the user that has updated the resource. If never updated, it will be zero. |
THE COUPON OBJECT
{
"id": 0,
"uniqid": "testing1990aa",
"shop_id": 0,
"code": "demo",
"use_type": 0,
"discount": 65,
"used": 0,
"max_uses": -1,
"products_bound": [
"testing1990aa"
],
"products_count": 1,
"created_at": 1585490881,
"updated_at": 1586354410,
"updated_by": 0
}
GET /coupons/:uniqid
Retrieves a Coupon by Uniqid.
RESPONSE
{
"status": 200,
"data": {
"coupon": {
"id": 0,
"uniqid": "testing1990aa",
"shop_id": 0,
"code": "demo",
"use_type": 0,
"discount": 65,
"used": 0,
"max_uses": -1,
"products_bound": [
"testing1990aa"
],
"products_count": 1,
"created_at": 1585490881,
"updated_at": 1586354410,
"updated_by": 0
}
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
GET /coupons
Returns a list of all the Coupons. The coupons are sorted by creation date, with the most recently created coupons being first.
page integer |
RESPONSE
{
"status": 200,
"data": {
"coupons": [
{
"id": 0,
"uniqid": "testing1990aa",
"shop_id": 0,
"code": "demo",
"use_type": 0,
"discount": 65,
"used": 0,
"max_uses": -1,
"products_bound": [
"testing1990aa"
],
"products_count": 1,
"created_at": 1585490881,
"updated_at": 1586354410,
"updated_by": 0
}
]
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
POST /coupons
Creates a Coupon and returns the Uniqid.
Arguments
code string REQUIRED | Code of the Coupon. |
discount_value float REQUIRED | Percentage amount of the discount. |
max_uses int | How many times can the coupon be used, defaulted to -1. |
products_bound array | Array of products uniqids that the category will contain. |
CREATE COUPON REQUEST
{
"code": "demo",
"discount_value": 65,
"max_uses": -1,
"products_bound": [
"testing1990aa"
]
}
RESPONSE
{
"status": 200,
"data": {
"uniqid": "testing391049"
},
"message": "Coupon Created Successfully.",
"log": null,
"error": null,
"env": "production"
}
PUT /coupons/:uniqid
Edits a Coupon.
Arguments
code string | Code of the Coupon. |
discount_value float | Percentage amount of the discount. |
max_uses int | How many times can the coupon be used, defaulted to -1. |
products_bound array | Array of products uniqids that the category will contain. |
EDIT COUPON REQUEST
{
"code": "demo",
"discount_value": 65,
"max_uses": -1,
"products_bound": [
"testing1990aa"
]
}
RESPONSE
{
"status": 200,
"data": {
"uniqid": "testing391049"
},
"message": "Coupon Edited Successfully.",
"log": null,
"error": null,
"env": "production"
}
DELETE /coupons/:uniqid
Deletes a Coupon.
RESPONSE
{
"status": 200,
"data": null,
"message": "Coupon Deleted Successfully.",
"log": null,
"error": null,
"env": "staging"
}
ENDPOINTS
GET /feedback/:uniqid
GET /feedback
POST /feedback/reply/:uniqid
id int | Unique id, auto incremented for the object. |
uniqid string | Unique identifier for the object. |
invoice_id string | Unique identifier for the feedback’s invoice. |
product_id string | Unique identifier for the feedback’s product. |
shop_id int | ID of the shop whose resource is assigned to (your DEFAULT shop). |
message string | Customer feedback message. |
reply string | Seller’s reply to the customer message. |
feedback string | Can be neutral, positive, negative. |
score int | Range from 0 (feedback not left yet) to 5. |
invoice object | Contains the full invoice object for this feedback. |
product object | Contains the full product object for this feedback. |
created_at timestamp | The date and time that the resource was created. |
updated_at timestamp | The date and time that the resource was last updated. If never updated, it will be zero. |
updated_by int | The id of the user that has updated the resource. If never updated, it will be zero. |
THE FEEDBACK OBJECT
{
"id": 0,
"uniqid": "demo-a877c78890",
"invoice_id": "demo-bcbf00a68c",
"product_id": "demo930bf1",
"shop_id": 0,
"message": "demo",
"reply": "demo reply",
"feedback": "neutral",
"score": 5,
"created_at": 1586207430,
"updated_at": 1588684803,
"updated_by": 0,
"invoice": {
...
},
"product": {
...
}
}
GET /feedback/:uniqid
Retrieves a Feedback by Uniqid.
RESPONSE
{
"status": 200,
"data": {
"feedback": {
"id": 0,
"uniqid": "demo-a877c78890",
"invoice_id": "demo-bcbf00a68c",
"product_id": "demo930bf1",
"shop_id": 0,
"message": "demo",
"reply": "demo reply",
"feedback": "neutral",
"score": 5,
"created_at": 1586207430,
"updated_at": 1588684803,
"updated_by": 0,
"invoice": {
...
},
"product": {
...
}
}
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
GET /feedback
Returns a list of all the Feedback. The feedback are sorted by creation date, with the most recently created feedback being first.
Invoice and Product objects are not shown in the list endpoint.
page integer |
RESPONSE
{
"status": 200,
"data": {
"feedback": [
{
"id": 0,
"uniqid": "demo-a877c78890",
"invoice_id": "demo-bcbf00a68c",
"product_id": "demo930bf1",
"shop_id": 0,
"message": "demo",
"reply": "demo reply",
"feedback": "neutral",
"score": 5,
"created_at": 1586207430,
"updated_at": 1588684803,
"updated_by": 0
}
]
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
POST /feedback/:uniqid
Replies to a Feedback.
Arguments
reply string REQUIRED | Desired reply to the feedback. |
REPLY FEEDBACK REQUEST
{
"reply": "demo feedback reply"
}
RESPONSE
{
"status": 200,
"data": null,
"message": "Feedback Replied Successfully.",
"log": null,
"error": null,
"env": "staging"
}
ENDPOINTS
GET /orders/:uniqid
GET /orders
id int | Unique id, auto incremented for the object. |
uniqid string | Unique identifier for the object. |
total float | Total of the invoice in USD. |
total_display float | Total of the invoice in the product’s currency. |
currency float | Invoice currency, taken from the product’s. |
shop_id int | ID of the shop whose resource is assigned to (your DEFAULT shop). |
name string | Name of the shop. |
username string | username of the user who created the product and earned the invoice your username). |
product_id string | Unique identifier for the invoice’s product. |
product_type string | Quick access, invoice’s product type, can be serials, file or service. |
product_title string | Title of the invoice product. |
file_attachment_uniqid string | If the product_type is file, the invoice has a linked file uniqid. |
gateway string | Can be bitcoin, litecoin, bitcoincash, ethereum, paypal, skrill, perfectmoney. |
paypal_email string | User’s PayPal email used to create the PayPal Order (your PayPal email). |
paypal_order_id string | PayPal transaction ID used to process the order. |
paypal_payer_email string | Email of the customer who bought through PayPal. |
skrill_email string | User’s Skrill email used to create the Skrill Order (your Skrill email). |
skrill_sid string | Skrill transaction ID used to process the order. |
skrill_link string | Skrill link where the customer is redirected to proceed with the order. |
perfectmoney_id string | PerfectMoney user account id (your account id). |
crypto_address string | Crypto Address where the crypto_amount should be sent to. |
crypto_amount float | Crypto Amount needed to fulfill the order. |
crypto_received float | Crypto Amount received so far. |
crypto_uri string | URI to create the Crypto QRCode. |
crypto_confirmations_needed int | How many confirmations are needed to confirm a transaction. |
country string | Customer’s country. |
location string | Customer’s location |
ip string | Customer’s IP |
is_vpn_or_proxy bool | True if the customer IP is a VPN or a Proxy. |
user_agent string | Customer’s user agent. |
quantity int | Products quantity. |
coupon_id string | If a coupon is used, this will contain its ID. |
custom_fields object | Contains every custom field submitted for the order. |
developer_invoice bool | If true, this invoice was created through Sellix Developer’s API. |
developer_title string | Can be NULL, title specified when creating the invoice through Sellix Developer’s API. |
developer_webhook string | Can be NULL, webhook specified when creating the invoice through Sellix Developer’s API. |
developer_return_url string | Can be NULL, return url specified when creating the invoice through Sellix Developer’s API. |
status int | Invoice’s status, see more info about statuses below. |
to_process bool | True if the invoice is marked to be processed. |
discount float | If a coupon was applied, display how much was the discount. |
fee_fixed float | How much was taken into fees. |
fee_percentage float | How much was taken into percentage fees. |
day_value int | Used for analytics purpose, day of invoice creation. |
day string | Used for analytics purpose, string value of the day of invoice creation. |
month string | Used for analytics purpose, month of invoice creation. |
year int | Used for analytics purpose, year of invoice creation. |
created_at timestamp | The date and time that the resource was created. |
serials array | Can be EMPTY, list of serials linked with this invoice. |
status_history array | History of all the statuses that this order went through. |
paypal_dispute object | Information related to the dispute (if any) opened on this order. |
file object | Can be NULL, info of the file linked with this invoice. |
webhooks array | Can be EMPTY, list of webhooks sent for this invoice. |
crypto_payout bool | If true, the seller cut has been sent (you have received your money.). |
crypto_payout_transaction object | Can be NULL, contains info about the payout transaction. |
crypto_transactions array | Can be EMPTY, list of all the crypto transactions for this invoice. |
product object | Contains the full product object for this feedback. |
STATUS | ||
---|---|---|
PENDING | COMPLETED | |
VOIDED | WAITING_FOR_CONFIRMATIONS | |
PARTIAL | REFUNDED | |
REVERSED | CUSTOMER_DISPUTE_ONGOING |
HISTORY STATUS | ||
---|---|---|
REFUNDED | PAYMENT_CAPTURE_COMPLETED | |
REFUNDED | PAYMENT_CAPTURE_DENIED | |
PARTIAL | CUSTOMER_DISPUTE_RESOLVED | |
PENDING | PAYMENT_CAPTURE_REFUNDED | |
COMPLETED | PAYMENT_CAPTURE_REVERSED | |
VOIDED | PAYMENT_CAPTURE_PENDING | |
WAITING_FOR_CONFIRMATIONS | PAYMENT_AUTHORIZATION_CREATED | |
CUSTOMER_DISPUTE_ONGOING | CHECKOUT_ORDER_APPROVED | |
PAYMENT_AUTHORIZATION_VOIDED | CHECKOUT_ORDER_COMPLETED | |
CUSTOMER_DISPUTE_UPDATED | CUSTOMER_DISPUTE_CREATED |
THE ORDER OBJECT
{
"id": 0,
"uniqid": "demo-c8cee7cfa1",
"total": 1.00,
"total_display": 1.00,
"currency": "USD",
"shop_id": 0,
"name": "Demo",
"username": "demo",
"customer_email": "[email protected]",
"product_id": "demo8d66e",
"product_type": "SERIALS",
"product_title": "Demo Product Title",
"file_attachment_uniqid": null,
"gateway": "PAYPAL",
"paypal_email": null,
"paypal_order_id": null,
"paypal_payer_email": null,
"skrill_email": null,
"skrill_sid": null,
"skrill_link": null,
"perfectmoney_id": null,
"crypto_address": null,
"crypto_amount": 0,
"crypto_received": 0,
"crypto_uri": null,
"crypto_confirmations_needed": 1,
"country": "IT",
"location": "Italy, Europe",
"ip": "1.2.3.4",
"is_vpn_or_proxy": false,
"user_agent": "PostmanRuntime/7.6.0",
"quantity": 2,
"coupon_id": null,
"custom_fields": {
"Discord": "[email protected]"
},
"status_history": [
{
"created_at": "1595103297",
"details": "demo",
"id": "1",
"invoice_id": "000000-0000000000-000000",
"status": "PENDING"
}
],
"paypal_dispute": {
"created_at": "1595103544",
"id": "PP-D-00000000",
"invoice_id": "000000-0000000000-000000",
"life_cycle_stage": "INQUIRY",
"messages": [{ "posted_by": "BUYER", "content": "demo", "created_at": "1595103544"}],
"outcome": null,
"reason": "MERCHANDISE_OR_SERVICE_NOT_RECEIVED",
"seller_response_due_date": "1596831544",
"shop_id": "1",
"status": "WAITING_FOR_SELLER_RESPONSE",
"updated_at": "1595103566"
},
"developer_invoice": false,
"developer_title": null,
"developer_webhook": null,
"developer_return_url": null,
"status": "COMPLETED",
"discount": 0,
"fee_fixed": 0,
"fee_percentage": 0,
"day_value": 23,
"day": "Thu",
"month": "Apr",
"year": 2020,
"created_at": 1587656376,
"updated_at": 1587656403,
"updated_by": 0,
"serials": [
"demo"
],
"file": {
"id": 0,
"uniqid": "demo98agy",
"storage": "products",
"name": "demo",
"original_name": "originaldemo.jpg",
"extension": "jpg",
"shop_id": 0,
"size": 1000,
"created_at": 1587656403
},
"webhooks": [
{
"uniqid": "demo81e98f",
"url": "https://demo.sellix.io/api/v1/webhook",
"event": "order:created",
"retries": 0,
"response_code": 200,
"created_at": 1587656376
}
],
"crypto_payout": true,
"crypto_payout_transaction": {
"to_address" : "demotoaddress98uao8g9pan",
"from_address" : "demofromaddress98uao8g9pan",
"crypto_amount" : 0.001234,
"hash" : "demohash98yno8angs78aygn",
"created_at" : 1587656376
},
"crypto_transactions": [
{
"crypto_amount": 0.009876,
"hash": "demohash09889adn78a",
"confirmations": 2,
"created_at": 1587656376,
"updated_at": 1587656403
}
],
"product": {
...
}
}
GET /orders/:uniqid
Retrieves an Order by Uniqid.
RESPONSE
{
"status": 200,
"data": {
"order": {
"id": 0,
"uniqid": "demo-c8cee7cfa1",
"total": 1.00,
"total_display": 1.00,
"currency": "USD",
"shop_id": 0,
"name": "Demo",
"username": "demo",
"customer_email": "[email protected]",
"product_id": "demo8d66e",
"product_type": "SERIALS",
"product_title": "Demo Product Title",
"file_attachment_uniqid": null,
"gateway": "PAYPAL",
"paypal_email": null,
"paypal_order_id": null,
"paypal_payer_email": null,
"skrill_email": null,
"skrill_sid": null,
"skrill_link": null,
"perfectmoney_id": null,
"crypto_address": null,
"crypto_amount": 0,
"crypto_received": 0,
"crypto_uri": null,
"crypto_confirmations_needed": 1,
"country": "IT",
"location": "Italy, Europe",
"ip": "1.2.3.4",
"is_vpn_or_proxy": false,
"user_agent": "PostmanRuntime/7.6.0",
"quantity": 2,
"coupon_id": null,
"custom_fields": {},
"developer_invoice": false,
"developer_title": null,
"developer_webhook": null,
"developer_return_url": null,
"status": "COMPLETED",
"discount": 0,
"fee_fixed": 0,
"fee_percentage": 0,
"day_value": 23,
"day": "Thu",
"month": "Apr",
"year": 2020,
"created_at": 1587656376,
"updated_at": 1587656403,
"updated_by": 0,
"serials": [],
"file": null,
"webhooks": [],
"crypto_payout": true,
"crypto_payout_transaction": null,
"crypto_transactions": [],
"product": {
...
}
}
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
GET /orders
Returns a list of all the Order. The order are sorted by creation date, with the most recently created order being first.
Product objects and additional info are not shown in the list endpoint.
page integer |
RESPONSE
{
"status": 200,
"data": {
"orders": [
{
"id": 0,
"uniqid": "demo-c8cee7cfa1",
"total": 1.00,
"total_display": 1.00,
"currency": "USD",
"shop_id": 0,
"name": "demo",
"customer_email": "[email protected]",
"product_id": "demo8d66e",
"product_type": "SERIALS",
"product_title": "Demo Product Title",
"file_attachment_uniqid": null,
"gateway": "PAYPAL",
"paypal_email": null,
"paypal_order_id": null,
"paypal_payer_email": null,
"skrill_email": null,
"skrill_sid": null,
"skrill_link": null,
"perfectmoney_id": null,
"crypto_address": null,
"crypto_amount": 0,
"crypto_received": 0,
"crypto_uri": null,
"crypto_confirmations_needed": 1,
"country": "IT",
"location": "Italy, Europe",
"ip": "1.2.3.4",
"is_vpn_or_proxy": false,
"user_agent": "PostmanRuntime/7.6.0",
"quantity": 2,
"coupon_id": null,
"custom_fields": {},
"developer_invoice": false,
"developer_title": null,
"developer_webhook": null,
"developer_return_url": null,
"status": "COMPLETED",
"discount": 0,
"fee_fixed": 0,
"fee_percentage": 0,
"day_value": 23,
"day": "Thu",
"month": "Apr",
"year": 2020,
"created_at": 1587656376,
"updated_at": 1587656403,
"updated_by": 0
]
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
Dispute Reason
Occasionally, something goes wrong with a customer's order. To dispute a charge, a customer can create a dispute with PayPal. A customer can also ask his or her bank or credit card company to dispute and reverse a charge, which is known as a chargeback.
When a customer disputes a charge, we will notify you with an email, a Discord notification (if you have setup our Bot) and a webhook with even order:dispute
The dispute reason is why the customer has opened a dispute against your order.
MERCHANDISE_OR_SERVICE_NOT_RECEIVED The customer did not receive the merchandise or service.
MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED The customer reports that the merchandise or service is not as described.
UNAUTHORISED The customer did not authorize purchase of the merchandise or service.
CREDIT_NOT_PROCESSED The refund or credit was not processed for the customer.
DUPLICATE_TRANSACTION The transaction was a duplicate.
INCORRECT_AMOUNT The customer was charged an incorrect amount.
PAYMENT_BY_OTHER_MEANS The customer paid for the transaction through other means.
CANCELED_RECURRING_BILLING The customer was being charged for a subscription or a recurring transaction that was canceled.
PROBLEM_WITH_REMITTANCE A problem occurred with the remittance.
OTHER Other.
DISPUTE REASON | ||
---|---|---|
MERCHANDISE_OR_SERVICE_NOT_RECEIVED | INCORRECT_AMOUNT | |
MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED | PAYMENT_BY_OTHER_MEANS | |
UNAUTHORISED | CANCELED_RECURRING_BILLING | |
CREDIT_NOT_PROCESSED | PROBLEM_WITH_REMITTANCE | |
DUPLICATE_TRANSACTION | OTHER |
Dispute Status
Each dispute is automatically updated when we receive an update from PayPal, the status indicates how it is going.
The status of the dispute. The possible values are:
OPEN The dispute is open.
WAITING_FOR_BUYER_RESPONSE The dispute is waiting for a response from the customer.
WAITING_FOR_SELLER_RESPONSE The dispute is waiting for a response from the merchant.
UNDER_REVIEW The dispute is under review with PayPal.
RESOLVED The dispute is resolved.
OTHER The default status if the dispute does not have one of the other statuses.
DISPUTE STATUS | ||
---|---|---|
OPEN | UNDER_REVIEW | |
WAITING_FOR_BUYER_RESPONSE | RESOLVED | |
WAITING_FOR_SELLER_RESPONSE | OTHER |
Dispute Outcome
When a dispute it’s solved, its outcome is updated.
The outcome of a resolved dispute. The possible values are:
RESOLVED_BUYER_FAVOUR The dispute was resolved in the customer's favor.
RESOLVED_SELLER_FAVOUR The dispute was resolved in the merchant's favor.
RESOLVED_WITH_PAYOUT PayPal provided the merchant or customer with protection and the case is resolved.
CANCELED_BY_BUYER The customer canceled the dispute.
ACCEPTED PayPal accepted the dispute.
DENIED PayPal denied the dispute.
NONE A dispute was created for the same transaction ID, and the previous dispute was closed without any decision.
DISPUTE OUTCOME | ||
---|---|---|
RESOLVED_BUYER_FAVOUR | CANCELED_BY_BUYER | |
RESOLVED_SELLER_FAVOUR | ACCEPTED | |
RESOLVED_WITH_PAYOUT | DENIED | |
NONE |
Dispute Lyfe Cycle Stage
The stage in the dispute lifecycle. The possible values are:
INQUIRY A customer and merchant interact in an attempt to resolve a dispute without escalation to PayPal. Occurs when the customer: Has not received goods or a service. Reports that the received goods or service are not as described. Needs more details, such as a copy of the transaction or a receipt.
CHARGEBACK A customer or merchant escalates an inquiry to a claim, which authorizes PayPal to investigate the case and make a determination. Occurs only when the dispute channel is INTERNAL. This stage is a PayPal dispute lifecycle stage and not a credit card or debit card chargeback. All notes that the customer sends in this stage are visible to PayPal agents only. The customer must wait for PayPal’s response before the customer can take further action. In this stage, PayPal shares dispute details with the merchant, who can complete one of these actions: Accept the claim. Submit evidence to challenge the claim. Make an offer to the customer to resolve the claim.
PRE_ARBITRATION The first appeal stage for merchants. A merchant can appeal a chargeback if PayPal's decision is not in the merchant's favor. If the merchant does not appeal within the appeal period, PayPal considers the case resolved.
ARBITRATION The second appeal stage for merchants. A merchant can appeal a dispute for a second time if the first appeal was denied. If the merchant does not appeal within the appeal period, the case returns to a resolved status in pre-arbitration stage.
DISPUTE LIFE CYCLE STAGE | ||
---|---|---|
INQUIRY | ARBITRATION | |
CHARGEBACK | PRE_ARBITRATION |
Dispute Message Posted By
Indicates whether the customer, merchant, or dispute arbiter posted the message. The possible values are:
BUYER The customer posted the message.
SELLER The merchant posted the message.
ARBITER The arbiter of the dispute posted the message.
DISPUTE MESSAGE POSTED BY | ||
---|---|---|
BUYER | ARBITER | |
SELLER |
ENDPOINTS
GET /products/:uniqid
GET /products
POST /products
PUT /products/:uniqid
DELETE /products/:uniqid
id int | Unique id, auto incremented for the object. |
uniqid string | Unique identifier for the object. |
shop_id int | ID of the shop whose resource is assigned to (your DEFAULT shop). |
price float | In USD, price of the product. |
price_display float | In the selected currency, price of the product. |
currency string | Product price_display's currency. |
title string | Product title, it will be displayed in your shop page. |
image_name string | Filename of the product image (hash.extension). |
image_storage string | Where the image is stored (PRODUCTS/GROUPS/SHOPS). |
image_attachment string | Uniqid of the file attachment. |
file_attachment string | Uniqid of the image attachment. |
description string | Product description, markdown can be used. |
quantity_min int | Minimum amount of products needed to proceed with an invoice. |
quantity_max int | Maximum amount of products allowed to proceed with an invoice. |
quantity_warning int | When the product reaches this quantity, an email will be sent to you. |
delivery_text string | Text sent to the customer once he has bought the product. |
service_text string | Additional product info sent to the customer if the product type is service. |
custom_fields array of objects | Custom fields asked to the customer before proceeding with the payment. |
type string | Product type, can be file, serials or service. |
gateways array | Array of available gateways to purchase the product with. |
crypto_confirmations_needed int | How many confirmations are needed before confirming a crypto transaction. |
max_risk_level int | Maximum value for triggering the security checks. |
block_vpn_proxies bool | If true, proxies and vpns will be blocked for proceeding with non-crypto invoices. |
private bool | If true, this product is not shown to your page nor can be bought, it's useful if you need to temporarily remove it from your shop | and you don't want to delete the stock.
stock int | Valid for every type, availalbe amount that can be bought (-1 for unlimited). |
stock_delimiter string | How the serials will be separated, defaulted to a comma. |
serials array | Array of serials, defaulted to an empty array. |
serials_remove_duplicates bool | Remove Duplicates |
dynamic_webhook string | Webhook |
unlisted bool | If true, this product is not shown in your shop page. |
sort_priority int | Used to order the products on the shop page, ordered by ASC. |
terms_of_service string | Terms of Service for this product, shown at the checkout page. |
warranty int | In seconds, warranty for this product. |
warranty_text string | Warranty details for the product (what the warranty covers). |
created_at timestamp | The date and time that the resource was created. |
updated_at timestamp | The date and time that the resource was last updated. If never updated, it will be zero. |
updated_by int | The id of the user that has updated the resource. If never updated, it will be zero. |
file_attachment_info object | Can be NULL, info of the file linked with this product. |
image_attachment_info object | Can be NULL, info of the image linked with this product. |
webhooks array | Can be EMPTY, list of webhooks linked to this product. |
feedback object | Feedback counter for this product, contains four keys: total, positive, negative, neutral. |
THE PRODUCT OBJECT
{
"id": 0,
"uniqid": "demo71930bf1",
"shop_id": 0,
"name": "Demo",
"price": 0.50,
"price_display": 0.50,
"currency": "USD",
"title": "Demo Product",
"image_name": "demo329e431a4594f27ecc0002a375c91928b45b09761826a.jpg",
"image_storage": "PRODUCTS",
"image_attachment": null,
"file_attachment": null,
"description": "Demo Description",
"quantity_min": 1,
"quantity_max": -1,
"quantity_warning": 0,
"dynamic_webhook": "webhook url",
"delivery_text": "Delivery Text Demo",
"service_text": "some",
"custom_fields": [
{
"name": "Username",
"type": "text",
"required": false
}
],
"type": "serials",
"gateways": [
"PAYPAL",
"BITCOIN"
],
"crypto_confirmations_needed": 1,
"max_risk_level": 0,
"block_vpn_proxies": false,
"private": false,
"stock": 5,
"stock_delimiter": ",",
"serials": [
"demo:key:edited",
],
"unlisted": false,
"sort_priority": 1,
"terms_of_service": "demo",
"warranty": 900,
"warranty_text": "demo",
"linked": true,
"created_at": 1585489689,
"updated_at": 1587745941,
"file_attachment_info": {
...
},
"image_attachment_info": {
...
},
"webhooks": [],
"feedback": {
"total": 0,
"positive": 0,
"neutral": 0,
"negative": 0
}
}
GET /products/:uniqid
Retrieves a Product by Uniqid.
RESPONSE
{
"status": 200,
"data": {
"product": {
"id": 0,
"uniqid": "demo71930bf1",
"shop_id": 0,
"name": "Demo",
"price": 0.50,
"price_display": 0.50,
"currency": "USD",
"title": "Demo Product",
"image_name": "demo329e431a4594f27ecc0002a375c91928b45b09761826a.jpg",
"image_storage": "PRODUCTS",
"image_attachment": null,
"file_attachment": null,
"description": "Demo Description",
"quantity_min": 1,
"quantity_max": -1,
"quantity_warning": 0,
"delivery_text": "Delivery Text Demo",
"service_text": "some",
"custom_fields": [
{
"name": "Username",
"type": "text",
"required": false
}
],
"type": "serials",
"gateways": [
"PAYPAL",
"BITCOIN"
],
"crypto_confirmations_needed": 1,
"max_risk_level": 0,
"block_vpn_proxies": false,
"private": false,
"stock": 5,
"stock_delimiter": ",",
"serials": [
"demo:key:edited",
],
"unlisted": false,
"sort_priority": 1,
"terms_of_service": "demo",
"warranty": 900,
"warranty_text": "demo",
"linked": true,
"created_at": 1585489689,
"updated_at": 1587745941,
"file_attachment_info": {
...
},
"image_attachment_info": {
...
},
"webhooks": [],
"feedback": {
"total": 0,
"positive": 0,
"neutral": 0,
"negative": 0
}
}
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
GET /products
Returns a list of all the Products. The products are sorted by creation date, with the most recently created products being first. This endpoint will return less info than the Get Product one.
page integer |
RESPONSE
{
"status": 200,
"data": {
"products": [
{
"id": 0,
"uniqid": "demo1930bf1",
"shop_id": 0,
"username": "demo",
"price": 0.5,
"price_display": 0.5,
"currency": "USD",
"title": "Demo Product",
"image_name": "demo329e431a4594f27ecc0002a375c91928b45b09761826a.jpg",
"image_storage": "PRODUCTS",
"image_attachment": "demod487c8c4d03d9da",
"file_attachment": null,
"description": "Product Demo Description",
"quantity_min": 1,
"quantity_max": -1,
"quantity_warning": 0,
"delivery_text": "Product Delivery Demo",
"service_text": "demo",
"custom_fields": [
{
"name": "Demo",
"type": "text",
"required": false
}
],
"type": "serials",
"gateways": [
"ETHEREUM",
"LITECOIN"
],
"crypto_confirmations_needed": 1,
"max_risk_level": 0,
"block_vpn_proxies": false,
"private": false,
"stock": 5,
"stock_delimiter": ",",
"unlisted": false,
"sort_priority": 1,
"terms_of_service": "demo",
"warranty": 900,
"warranty_text": "demo",
"created_at": 1585489689,
"updated_at": 1587745941,
"updated_by": 0
}
]
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
POST /products
Creates a Product and returns the Uniqid.
Arguments
title string REQUIRED | Title of the Product. |
description string REQUIRED | Product description, markdown can be used. |
price float REQUIRED | Price of the Product. |
gateways array REQUIRED | Array of the available gateways to purchase the product with. |
type string REQUIRED | Type of the Product, can be serials, file and service. |
discount_value float REQUIRED | Percentage amount of the discount. |
currency string | Price Currency, defaulted to USD. |
quantity.min int | Minimum products that can be bought in an invoice, defaulted to 1. |
quantity.max int | Maximum products that can be bought in an invoice, defaulted to -1 (unlimited). |
stock_delimiter string | How the serials will be separated, defaulted to a comma. |
serials array | Array of serials, defaulted to an empty array. |
serials_remove_duplicates bool | Remove Duplicates |
delivery_text string | Delivery Text of the product, defaulted to an empty string. |
service_text string | Service Text of the product if type is service. |
stock int | Available stock for this product, defaulted to -1 and automatically calculated for type SERIALS. |
custom_fields array of objects | Defaulted to an empty array. |
crypto_confirmations_needed int | Defaulted to 1. |
max_risk_level int | Defaulted to 100. |
block_vpn_proxies bool | Defaulted to false. |
sort_priority int | Defaulted to 1. |
unlisted bool | Defaulted to false. |
terms_of_service string | Terms of Service for this product, shown at the checkout page. |
warranty int | In seconds, warranty for this product. Must be higher than 900. |
warranty_text string | Text, under 6000 chars, which covers what the warranty is valid for. |
private bool | Defaulted to false. |
webhooks array | Defaulted to an empty array. |
CREATE PRODUCT REQUEST
{
"title": "Product Demo",
"price": 10,
"currency": "EUR",
"description": "demo description",
"gateways": [
"BITCOIN",
"PAYPAL"
],
"quantity": {
"min": 1,
"max": -1
},
"type": "serials",
"stock_delimiter": "\n",
"serials": [
"demo:key:serial",
],
"delivery_text": "demo delivery text",
"service_text": null,
"custom_fields": [
{
"name": "Demo Name",
"type": "text",
"required": true
}
],
"crypto_confirmations_needed": 1,
"max_risk_level": 10,
"block_vpn_proxies": false,
"sort_priority": 1,
"unlisted": false,
"terms_of_service": "demo",
"warranty": 900,
"warranty_text": "demo",
"private": false,
"webhooks": [
"https://demo.sellix.io/webhook"
]
}
RESPONSE
{
"status": 200,
"data": {
"uniqid": "demo391049"
},
"message": "Product Created Successfully.",
"log": null,
"error": null,
"env": "production"
}
PUT /products/:uniqid
Edits a Product. Arguments are the same as the create product endpoint, with the addition of remove_image and remove_file.
Arguments
title string | Title of the Product. |
price float | Price of the Product. |
gateways array | Array of the available gateways to purchase the product with. |
type string | Type of the Product, can be serials, file and service. |
discount_value float | Percentage amount of the discount. |
currency string | Price Currency, defaulted to USD. |
quantity.min int | Minimum products that can be bought in an invoice, defaulted to 1. |
quantity.max int | Maximum products that can be bought in an invoice, defaulted to -1 (unlimited). |
stock_delimiter string | How the serials will be separated, defaulted to a comma. |
serials array | Array of serials, defaulted to an empty array. |
serials_remove_duplicates bool | Remove Duplicates |
delivery_text string | Delivery Text of the product, defaulted to an empty string. |
service_text string | Service Text of the product if type is service. |
stock int | Available stock for this product, defaulted to -1 and automatically calculated for type SERIALS. |
custom_fields array of objects | Defaulted to an empty array. |
crypto_confirmations_needed int | Defaulted to 1. |
max_risk_level int | Defaulted to 100. |
block_vpn_proxies bool | Defaulted to false. |
sort_priority int | Defaulted to 1. |
unlisted bool | Defaulted to false. |
terms_of_service string | Terms of Service for this product, shown at the checkout page. |
warranty int | In seconds, warranty for this product. Must be higher than 900. |
warranty_text string | Text, under 6000 chars, which covers what the warranty is valid for. |
private bool | Defaulted to false. |
webhooks array | Defaulted to an empty array. |
EDIT PRODUCT REQUEST
{
"title": "Product Demo Edit",
"price": 10,
"currency": "EUR",
"description": "demo edited description",
"gateways": [
"ETHEREUM"
],
"quantity": {
"min": 1,
"max": -1
},
"type": "serials",
"stock_delimiter": "\n",
"serials": [
"demo:key:edited",
],
"delivery_text": "demo delivery text",
"service_text": null,
"custom_fields": [
{
"name": "Demo Name",
"type": "text",
"required": true
}
],
"crypto_confirmations_needed": 1,
"max_risk_level": 10,
"block_vpn_proxies": false,
"sort_priority": 1,
"unlisted": false,
"terms_of_service": "demo",
"warranty": 900,
"warranty_text": "demo",
"private": false,
"webhooks": [
"https://demo.sellix.io/webhook"
],
"remove_file": false,
"remove_image": true
}
RESPONSE
{
"status": 200,
"data": {
"uniqid": "demo391049"
},
"message": "Product Edited Successfully.",
"log": null,
"error": null,
"env": "production"
}
DELETE /products/:uniqid
Deletes a Product.
RESPONSE
{
"status": 200,
"data": null,
"message": "Product Deleted Successfully.",
"log": null,
"error": null,
"env": "staging"
}
ENDPOINTS
GET /queries
GET /queries/:uniqid
POST /queries/reply/:uniqid
POST /queries/close/:uniqid
POST /queries/reopen/:uniqid
id int | Query ID, auto increment for storing purposes. |
uniqid string | Unique identifier for the object. |
customer_email string | Email of the customer who created the query. |
shop_id int | ID whose query is referred to. |
title string | Query's title. |
status string | Status of the query, see more info about statuses below. |
messages array of objects | Each object is a message, they are ordered by creation DESC, so the latest messages will be at the top. |
day_value int | Used for analytics purpose, day of query creation. |
day string | Used for analytics purpose, string value of the day of query creation. |
month string | Used for analytics purpose, month of query creation. |
year int | Used for analytics purpose, year of query creation. |
created_at timestamp | The date and time that the resource was created. |
updated_at timestamp | The date and time that the resource was last updated. If never updated, it will be zero. |
updated_by int | The id of the user that has updated the resource. If never updated, it will be zero. |
STATUS | ||
---|---|---|
0 | PENDING | Waiting for an answer from the seller |
1 | SHOP_REPLY | Seller has replied |
2 | CUSTOMER_REPLY | Customer has replied |
3 | CLOSED | Query is closed |
THE QUERY OBJECT
{
"id": 0,
"uniqid": "demo2ab29-9b1d36",
"customer_email": "[email protected]",
"shop_id": 0,
"title": "Demo Title",
"status": "PENDING",
"messages": [
{
"role": "CUSTOMER",
"message": "demo",
"created_at": 1586627494
}
...
],
"day_value": 11,
"day": "Sat",
"month": "Apr",
"year": 2020,
"created_at": 1586627494,
"updated_at": 1586627494,
"updated_by": 0
}
GET /queries/:uniqid
Retrieves a Query by Uniqid.
RESPONSE
{
"status": 200,
"data": {
"query": {
"id": 0,
"uniqid": "demo2ab29-9b1d36",
"customer_email": "[email protected]",
"shop_id": 0,
"title": "Demo Title",
"status": "PENDING",
"messages": [
{
"role": "CUSTOMER",
"message": "demo",
"created_at": 1586627494
}
...
],
"day_value": 11,
"day": "Sat",
"month": "Apr",
"year": 2020,
"created_at": 1586627494,
"updated_at": 1586627494,
"updated_by": 0
}
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
GET /queries
Returns a list of all the Queries. The queries are sorted by creation date, with the most recently created queries being first. The query object does not contain all the info.
page integer |
RESPONSE
{
"status": 200,
"data": {
"queries": [
{
"id": 0,
"uniqid": "demo2ab29-9b1d36",
"customer_email": "[email protected]",
"shop_id": 0,
"title": "Demo Title",
"status": "PENDING",
"day_value": 11,
"day": "Sat",
"month": "Apr",
"year": 2020,
"created_at": 1586627494,
"updated_at": 1586627494,
"updated_by": 0
}
]
},
"message": null,
"log": null,
"error": null,
"env": "production"
}
POST /queries/reply/:uniqid
Replies to a Query.
Arguments
reply string REQUIRED | Reply message |
CREATE QUERY REQUEST
{
"reply": "demo"
}
RESPONSE
{
"status": 200,
"message": "Reply Sent Successfully.",
"log": null,
"error": null,
"env": "production"
}
POST /queries/close/:uniqid
Closes to a Query.
RESPONSE
{
"status": 200,
"message": "Query Closed Successfully.",
"log": null,
"error": null,
"env": "production"
}
POST /queries/reopen/:uniqid
Reopen to a Query.
RESPONSE
{
"status": 200,
"message": "Query Reopened Successfully.",
"log": null,
"error": null,
"env": "production"
}
ENDPOINTS
POST /payments
DELETE /payments/:uniqid
We currently support two types of checkout flows for Sellix Payments, Integrated and White-label.
Integrated
With the integrated checkout option, Sellix handles the checkout aspect for you by only returning a unique payment URL. This unique URL contains our realtime checkout page.
White-label
The white-label checkout flow provides the raw order created rather than a payment URL. With the raw order information, you are able to develop and integrate your own checkout experience completely separate from Sellix.
This has the added downside of not having the realtime status updates that the integrated checkout flow offers, but this can of course be implemented on your side using the webhooks.
Products
We offer the possibility to create payments for your products too. You can specify a product_id and we will take care of the rest.
POST /payments
Creates a Payment. Returns an invoice object.
Arguments
title string REQUIRED | Product Title, required if product_id is not specified. |
product_id string REQUIRED | Product Unique identifier. |
quantity int REQUIRED | Payment quantity, if a product_id is passed it will multiply the product's price. |
gateway string REQUIRED | Can be bitcoin, litecoin, bitcoincash, ethereum, paypal, skrill, perfectmoney. |
value float REQUIRED | Payment amount, required if product_id is not specified. |
confirmations int | Crypto confirmations, defaulted to 1. |
sring REQUIRED | Customer email, the product will be sent here. |
custom_fields array of objects | Custom fields for the payment. |
white_label bool | Check "Checkout Flow" for more informations. |
return_url string REQUIRED | Return url, required if white_label is false. |
CREATE PAYMENT REQUEST
{
"title": "Demo Payment",
"product_id": "demo930bf1",
"gateway": "BITCOIN",
"value": 10,
"currency": "EUR",
"quantity": 3,
"confirmations": 1,
"email": "[email protected]",
"custom_fields": {
"Demo Username": "demoUID"
},
"webhook": "https://demo.sellix.io/webhook",
"white_label": true,
"return_url": "https://demo.sellix.io/return"
}
WHITE LABEL RESPONSE
{
"status": 200,
"data": {
"invoice": {
"id": 0,
"uniqid": "demo01a32-4df6e9",
"total": 1.50,
"total_display": 1.50,
"currency": "USD",
"exchange_rate": 1,
"crypto_exchange_rate": 9994.79,
"shop_id": 0,
"name": "Demo",
"customer_email": "[email protected]",
"product_id": "demo30bf1",
"product_type": "SERIALS",
"product_price": 0.50,
"file_attachment_uniqid": null,
"gateway": "BITCOIN",
"paypal_email": null,
"paypal_order_id": null,
"paypal_payer_email": null,
"skrill_email": null,
"skrill_sid": null,
"skrill_link": null,
"perfectmoney_id": null,
"crypto_address": "demonjsckUWTShLE7C",
"crypto_amount": 0.00015008,
"crypto_received": 0,
"crypto_uri": "bitcoin:demoE7C?amount=0.00015008",
"crypto_confirmations_needed": 1,
"country": "IT",
"location": "Italy, Europe",
"ip": "1.2.3.4.5.6.7",
"is_vpn_or_proxy": false,
"user_agent": "PostmanRuntime/7.6.0",
"quantity": 3,
"coupon_id": null,
"custom_fields": {
"Demo Username": "demoUID"
},
"developer_invoice": true,
"developer_title": "Demo Payment",
"developer_webhook": "https://demo.sellix.io/webhook",
"developer_return_url": "https://demo.sellix.io/return",
"status": "PENDING",
"discount": 0,
"fee_fixed": 0,
"fee_percentage": 0,
"day_value": 8,
"day": "Fri",
"month": "May",
"year": 2020,
"created_at": 1588976278,
"updated_at": 0,
"updated_by": 0,
"serials": [],
"file": null,
"webhooks": [
...
],
"crypto_payout": false,
"crypto_payout_transaction": null,
"crypto_transactions": [],
"product": {
"title": "Product Demo",
"price_display": 0.50,
"currency": "USD"
},
"total_conversions": {
"USD": 1.5,
"EUR": 1.38,
"GBP": 1.22,
"JPY": 159.56,
"AUD": 2.3,
"CAD": 2.09,
"CHF": 1.46,
"CNY": 10.62,
"SEK": 14.64,
"NZD": 2.45,
"PLN": 6.29
},
"theme": "dark"
}
},
"message": null,
"log": null,
"error": null,
"env": "staging"
}
NON WHITE LABEL RESPONSE
{
"status": 200,
"data": {
"url": "https://sellix.io/payment/demo"
},
"message": "Payment Created Successfully.",
"log": null,
"error": null,
"env": "production"
}
DELETE /payments/:uniqid
Deletes a Payment
RESPONSE
{
"status": 200,
"message": "Payment Deleted Successfully.",
"log": null,
"error": null,
"env": "production"
}