SellixSellix

Introduction

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

Authentication

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

Errors

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:

STATUSMEANING

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"
}

Webhooks

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:createdorder:updatedorder:partial
order:paidorder:paid:productorder:cancelled
product:createdproduct:stockproduct:edited
query:createdquery:repliedfeedback:received
order:partial:productorder:created:productorder:disputed:product
order:disputedorder:cancelled:productorder: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: 92.222.68.83

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
}

Dynamic Products

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.

Blacklists

ENDPOINTS

GET /blacklists/:uniqid 
GET /blacklists
POST /blacklists
PUT /blacklists/:uniqid
DELETE /blacklists/:uniqid

Blacklist Object

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 Blacklist

GET /blacklist/: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"
}

List Blacklist

GET /blacklist
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"
}

Create a Blacklist

POST /blacklist
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"
}

Edit Blacklist

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 Blacklist

DELETE /blacklists/:uniqid
Deletes a Blacklist.

RESPONSE

{
  "status": 200,
  "data": null,
  "message": "Blacklist Deleted Successfully.",
  "log": null,
  "error": null,
  "env": "staging"
}

Categories

ENDPOINTS

GET /categories/:uniqid 
GET /categories
POST /categories
PUT /categories/:uniqid
DELETE /categories/:uniqid

Category Object

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 a Category

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"
}

List All Categories

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"
}

Create a Category

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"
}

Edit Category

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 Category

DELETE /categories/:uniqid
Deletes a Category.

RESPONSE

{
  "status": 200,
  "data": null,
  "message": "Category Deleted Successfully.",
  "log": null,
  "error": null,
  "env": "staging"
}

Coupons

ENDPOINTS

GET /coupons/:uniqid 
GET /coupons
POST /coupons
PUT /coupons/:uniqid
DELETE /coupons/:uniqid

Coupon Object

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 a Coupon

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"
}

List All Coupons

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"
}

Create a Coupon

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"
}

Edit Coupon

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 Coupon

DELETE /coupons/:uniqid
Deletes a Coupon.

RESPONSE

{
  "status": 200,
  "data": null,
  "message": "Coupon Deleted Successfully.",
  "log": null,
  "error": null,
  "env": "staging"
}

Feedback

ENDPOINTS

GET /feedback/:uniqid 
GET /feedback
POST /feedback/reply/:uniqid

Feedback Object

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 a Feedback

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"
}

List Feedback

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"
}

Reply Feedback

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"
}

Orders

ENDPOINTS

GET /orders/:uniqid 
GET /orders

Order Object

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
PENDINGCOMPLETED
VOIDEDWAITING_FOR_CONFIRMATIONS
PARTIALREFUNDED
REVERSEDCUSTOMER_DISPUTE_ONGOING
HISTORY STATUS
REFUNDEDPAYMENT_CAPTURE_COMPLETED
REFUNDEDPAYMENT_CAPTURE_DENIED
PARTIALCUSTOMER_DISPUTE_RESOLVED
PENDINGPAYMENT_CAPTURE_REFUNDED
COMPLETEDPAYMENT_CAPTURE_REVERSED
VOIDEDPAYMENT_CAPTURE_PENDING
WAITING_FOR_CONFIRMATIONSPAYMENT_AUTHORIZATION_CREATED
CUSTOMER_DISPUTE_ONGOINGCHECKOUT_ORDER_APPROVED
PAYMENT_AUTHORIZATION_VOIDEDCHECKOUT_ORDER_COMPLETED
CUSTOMER_DISPUTE_UPDATEDCUSTOMER_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 an Order

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"
}

List All Orders

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"
  }

Disputes

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_RECEIVEDINCORRECT_AMOUNT
MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBEDPAYMENT_BY_OTHER_MEANS
UNAUTHORISEDCANCELED_RECURRING_BILLING
CREDIT_NOT_PROCESSEDPROBLEM_WITH_REMITTANCE
DUPLICATE_TRANSACTIONOTHER

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
OPENUNDER_REVIEW
WAITING_FOR_BUYER_RESPONSERESOLVED
WAITING_FOR_SELLER_RESPONSEOTHER

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_FAVOURCANCELED_BY_BUYER
RESOLVED_SELLER_FAVOURACCEPTED
RESOLVED_WITH_PAYOUTDENIED
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
INQUIRYARBITRATION
CHARGEBACKPRE_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
BUYERARBITER
SELLER

Products

ENDPOINTS

GET /products/:uniqid 
GET /products
POST /products
PUT /products/:uniqid
DELETE /products/:uniqid

Product Object

and you don't want to delete the stock.

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).

name

string

Name of the 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

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 a Product

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"
}

List All Products

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"
}

Create a Product

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"
}

Edit Product

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 Product

DELETE /products/:uniqid
Deletes a Product.

RESPONSE

{
  "status": 200,
  "data": null,
  "message": "Product Deleted Successfully.",
  "log": null,
  "error": null,
  "env": "staging"
}

Queries

ENDPOINTS

GET /queries 
GET /queries/:uniqid
POST /queries/reply/:uniqid
POST /queries/close/:uniqid
POST /queries/reopen/:uniqid

Query Object

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
0PENDINGWaiting for an answer from the seller
1SHOP_REPLYSeller has replied
2CUSTOMER_REPLYCustomer has replied
3CLOSEDQuery 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 a Query

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"
}

List All Queries

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"
}

Reply Query

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"
}

Close Query

POST /queries/close/:uniqid
Closes to a Query.

RESPONSE

{
  "status": 200,
  "message": "Query Closed Successfully.",
  "log": null,
  "error": null,
  "env": "production"
}

Reopen Query

POST /queries/reopen/:uniqid
Reopen to a Query.

RESPONSE

{
  "status": 200,
  "message": "Query Reopened Successfully.",
  "log": null,
  "error": null,
  "env": "production"
}

Payments

ENDPOINTS

POST /payments 
DELETE /payments/:uniqid

Checkout Flow

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.

Create a Payment

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.

email

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 a Payment

DELETE /payments/:uniqid
Deletes a Payment

RESPONSE

{
  "status": 200,
  "message": "Payment Deleted Successfully.",
  "log": null,
  "error": null,
  "env": "production"
}