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.

We offer multiple SDKs to interact with our API, find your programming language below. If it's not available, we're working on it!

API Root URL

https://dev.sellix.io/v1

Authentication

Bearer Token

Sellix's API uses a Bearer authentication with your API Secret Key. You will have to send your API Secret Key via theAuthorization 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

Multiple Shops

If you have more than one shop (merchant) under your Sellix account, you can send API requests with their authorization by passing theX-Sellix-Merchant header to each request.

The X-Sellix-Merchant header must be equal to the merchant you want to authorize. For example if your Sellix account has two merchants (1. Jack, 2. James) and you want to make API requests as James, you need to pass the X-Sellix-Merchant header with value James.

Errors

Errors will only ever be present with a 400 to503 HTTP response status. All errors will include a messageattribute detailing the error message.

Validation errors will feature a errorsattribute 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"
}

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.

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: 99.81.24.41

Events
order:createdorder:updatedorder:partialorder:paidorder:paid:productorder:cancelledproduct:createdproduct:stockproduct:editedproduct:dynamicquery:createdquery:repliedfeedback:receivedorder:partial:productorder:created:productorder:disputed:productorder:disputedorder:cancelled:productorder:updated:productsubscription:trial:startedsubscription:trial:endedsubscription:createdsubscription:updatedsubscription:renewedsubscription:cancelledsubscription:upcoming

Webhook validation example

1<?php
2  $payload = file_get_contents('php://input');
3  $secret = 'testing981y25n89byoas7by'; // replace with your webhook secret, you can find it in your security settings on the sellix dashboard.
4  $header_signature = $_SERVER['HTTP_X_SELLIX_SIGNATURE']; // get our signature header
5  $signature = hash_hmac('sha512', $payload, $secret);
6
7  if (hash_equals($signature, $header_signature)) {
8    // handle valid webhook
9  } else {
10    // invalid webhook
11  }
12?>

Dynamic Products

If you do not want to specify the product's value with the serials type, you can setup your own webhook and dynamically return to us the product you want to ship to your customers. Specify a URL where we will send the request to retrieve the product, please note that your webhook must support our payload (we will return the invoice quantity in the payload object along with all the other info) in order to retrieve the exact amount of products bought.

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.

When we send the request, the whole response body will be taken and used as the product.
If you’re returning a PDF, for example, we will provide the PDF to the customer. If you need to sell an activation key or tokens, return raw text.

Product Querystrings

Merchants can share links to their products on their Sellix website, similar to this example: https://exampleStore.mysellix.io/product/demobde8a50

These links can have querystring parameters added to them, like this example: https://exampleStore.mysellix.io/product/demode8a50?quantity=5&gateway=LITECOIN&step=1



Available Querystring Parameters

Here is a list of all available querystring parameters, along with a brief description of each:

quantity

Specifies the number of the same product to purchase

gateway

Specifies which payment gateway should be selected

step

Specifies which step of the checkout process should be displayed. Possible values are:
  • 0 - The default checkout step (product details)
  • 1 - The gateway choice step
  • 3 - The email and pay button step

email

The customer's email address

couponCode

The code of a coupon that should be applied automatically to the purchase

Any other querystring parameters that are added will be passed as invisible custom fields to the invoice creation process. These fields can be used to customize the behavior of the checkout process or to provide additional information about the purchase.

Example: https://exampleStore.mysellix.io/product/demode8a50?quantity=5&gateway=LITECOIN&step=1&customFieldName=Sellix

Product Subscriptions

Features

Also referred as recurring_billings, subscriptions enable you to bill your customers at a customized interval decided by you.

We take care of the logic and backend operations as well as managing and updating your customers, you only have to create the products and setup a webhook endpoint.

We currently support Daily, Weekly,Monthly and Yearly intervals with a minimum interval count of 1. Subscription invoices to be paid are sent within 60 seconds of an expiration and webhook events retried up to 5 times without delay from when an update or creation occurs.

Subscriptions are perfect for businesses that need to sell memberships, plans, recurring deals and, of course, subscriptions.

Without further ado, let’s get into technical details on how they work and how you can implement our solution in just a few minutes!

Create the Product

First off, proceed to our product dashboard and click the + Create Product button.

Configure the product with your preferences and select the Subscription type, click save.

We will automatically create the subscription on your Stripe connected account should you enable Stripe as a payment gateway.

Configuring Webhooks

There are two ways to handle webhooks for subscriptions,

  • through product webhooks
  • through global shop webhooks

In the first case, you need to configure the webhook URLs on your product configuration page (you can go back and edit it, adding webhook URLs).

Should you choose to go with the second option instead, proceed to our webhook dashboard and click the + Add Webhook Endpoint.

Add these webhooks to the list and set your webhook URL in the input… Done!
Now you will receive every webhook to this endpoint, let’s see now how to handle them.

Events
subscription:trial:startedsubscription:trial:endedsubscription:createdsubscription:updatedsubscription:renewedsubscription:cancelledsubscription:upcoming

The subscription object

id

string

ID of the subscription (recurring bill)

shop_id

int

ID of the shop whose resource is assigned to

product_id

string

Unique identifier for the subscription's product

status

string

Subscription's status, see more info about statuses below

gateway

string

Subscription's gateway chosen by the customer. If status is TRIALING, this field is null

custom_fields

object

Custom fields passed (required by the product configuration)

customer_id

int

ID of the customer for which this subscription was created

stripe_customer_id

string

ID of the customer (created by Stripe) for which this subscription was created

stripe_account

string

Your Stripe account ID

stripe_subscription_id

string

ID of the Stripe subscription created for this product subscription

coupon_id

string

ID of the coupon used on this subscription

current_period_end

timestamp

When this subscription period will end

upcoming_email_1_week_sent

bool

Email sent notifying the customer of an upcoming renewal

trial_period_ending_email_sent

bool

Email sent notifying the customer of an ending trial

renewal_invoice_created

bool

Whether or not a new invoice has already been created for the new period

created_at

timestamp

When was this subscription created

updated_at

timestamp

The last time this subscription was updated

canceled_at

timestamp

When was this subscription canceled

product_title

string

Digital Software

customer_name

string

Customer name

customer_surname

string

Customer surname

customer_phone

string

Customer phone

customer_phone_country_code

string

Customer phone country code

customer_country_code

string

Customer country code

customer_street_address

string

Customer street address

customer_additional_address_info

string

Customer street address additional info

customer_city

string

Customer city

customer_postal_code

string

Customer postal code

customer_state

string

Customer state

customer_email

string

Customer email

invoices

array

Array of invoice objects linked to this subscription
Status
PENDINGCANCELLEDTRIALINGACTIVE

Response

{
  "id": "rec_sample-3afde4b6e1-82833e",
  "shop_id": 124,
  "product_id": "samplede6277597",
  "status": "CANCELED",
  "gateway": "STRIPE",
  "custom_fields": {
    "Demo Username": "demoUID"
  },
  "customer_id": "cst_sample6addc898a645",
  "stripe_customer_id": "cus_samplegIE0YKwapE6",
  "stripe_account": "acct_sampleuMKb2X7rAeMb",
  "stripe_subscription_id": "sub_samplexpKb2X7rAeMbKdJc78AP",
  "coupon_id": null,
  "current_period_end": 1641313649,
  "upcoming_email_1_week_sent": false,
  "trial_period_ending_email_sent": false,
  "renewal_invoice_created": false,
  "created_at": 1641314317,
  "updated_at": 1641315120,
  "canceled_at": null,
  "product_title": "The title of the product for this subscription.",
  "customer_name": "James",
  "customer_surname": "Smith",
  "customer_phone": null,
  "customer_phone_country_code": null,
  "customer_country_code": null,
  "customer_street_address": null,
  "customer_additional_address_info": null,
  "customer_city": null,
  "customer_postal_code": null,
  "customer_state": null,
  "customer_email": "sample@gmail.com",
  "invoices": []
}

Customer Billing Portal

Worth mentioning, every customer will have access to their customer billing portal where they will be able to see, cancel and update any active subscription purchased from you or any other business on our platform.

They will authenticate using their personal email address, used to purchase your product subscription. The customer billing portal can be found at customer-portal.sellix.io

Handle webhook events

Webhook events for subscriptions will be sent in the following order

1. subscription:trial:started

Optional, sent only if the product has a trial period enabled.

A trial for one of your product subscription has been started, we will not create any invoice in relation to this event.

If this webhook is sent, it’s preceded by a subscription:created event with a unique status

A subscription has been created, an invoice for this subscription has not been created.TRIALING means that the subscription has been created in a trialing state, waiting for subscription:trial:ended.

please note that if the product has a trial period, the trial period must be used.

2. subscription:trial:ended

Optional, sent only if the product has a trial period enabled and it has come to an end.

A trial for one of your product subscription has ended, we will not create any invoice in relation to this event.

3. subscription:created

This webhook has been already sent if the product has a trial period. If not, this webhook is sent right after an invoice PRODUCT_SUBSCRIPTION has been successfully paid.

The subscription has been started for your customer and the payment succeeded, you should implement there any logic that you might deem necessary to activate your customer’s subscription.

We highly suggest the usage of our custom fields to act as a metadata object in order to recognize which customer purchased your subscription and activate it to them.

4. subscription:updated

If the customer updates his preferred gateway for the subscription through the Customer Billing Portal, you will receive a webhook event with the updated subscription object.

5. subscription:cancelled

Should you or the customer decide to cancel the subscription, this webhook event is sent.

A subscription is cancelled if the payment fails or is not sent within your settings’ grace period (in days). We handle every email for payment failures and renewal updates. You can also update customer notification settings on the Subscription settings page (access it through your Profile > Settings).

6. subscription:upcoming

Event sent a few days before a subscription is about to be renewed.

7. subscription:renewed

When the payment for a subscription renewal happens, this webhook is sent to let you know that everything went well. You do not need to be listening to this event specifically as you can manage your subscriptions through only the created and cancelled events.

Integrations

Three ways to integrate subscriptions in your website.

1. Sellix hosted experience

You will be using our hosted experience through sellix.io/YourBusiness, asking customers their own ID/Email/Username through product custom fields in order to then activate the subscription on their account.

2. Customized embeds

Through product embeds.
You can embed subscription products on your website and automatically set hidden custom fields to uniquely identify your customers when the webhook events are sent.
Take a look at product embeds on your dashboard.

3. Developers API

Brandless implementation with our API.
Use your own logo and website to manage customers and subscriptions.
Currently, the documentation is hosted on dev-openapi.sellix.io, it will soon be available on this page as well with an improved doc.

Custom implementations

Should you need a custom implementation that suits your business needs, please do not hesitate to contact us through

Product Licensing

Features

Software licensing provides merchants with license key generation, activation, extension and checking system. It allows you to automatically issue license keys, set an hardware id for them and actively check any time you want across your customer purchases. It can be integrated with any type of software you’re selling to make sure that the end consumer has actually paid for it.

Setting an Hardware ID

PUT /products/licensing/hardware_id

Setting an hardware ID must be done through your software, Sellix does not do it automatically. This enables you to lock one specific license key to a device, you will then be able to check for the hardware ID every time you’re issuing a license check through our other API. Through the hardware ID, you can lock one specific license to one device only.

Arguments

key

string

REQUIRED

License key purchased by the customer.

product_id

string

REQUIRED

UNIQID of the product.

hardware_id

string

REQUIRED

XXX

Set Hardware ID

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $hardware_payload = [
7    "key" => "demo-key",
8    "product_id" => "64ewq132e2323",
9    "hardware_id" => "hardware-example"
10  ];
11
12  try {
13    $hardware = $sellix->licensing_update_hardware_id($hardware_payload);
14  } catch (SellixException $e) {
15    echo $e->__toString();
16  }
17?>

Check License

POST /products/licensing/check
Check license

Issue a check license request, for example, every time your application is started from a customer device. You can then check for both the license key and hardware id, being sure that the customer has paid for it.

Arguments

key

string

REQUIRED

License key purchased by the customer.

product_id

string

REQUIRED

UNIQID of the product.

hardware_id

string

Can be NULL, if specified it hardware_id must match along with key

Check License

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $check_payload = [
7    "key" => "demo-key",
8    "product_id" => "64ewq132e2323",
9    "hardware_id" => "hardware-example"
10  ];
11
12  try {
13    $check = $sellix->licensing_check($check_payload);
14  } catch (SellixException $e) {
15    echo $e->__toString();
16  }
17?>

Payments

Endpoints

POST /payments 
PUT /payments/:uniqid
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 if product_id and cart are null. Defines the title of the purchase, can be the digital good's name or a brief summary of what the customer is paying for.

product_id

string

If specified value, currency and custom_fields will be taken from the product details.

cart

object

Other than product_id, a cart object can be specified if multiple products need to be purchased through the API.

gateway

string

Enum: "PAYPAL", "STRIPE", "SKRILL", "PERFECT_MONEY", "CASH_APP", "SOLANA", "RIPPLE", "BITCOIN", "ETHEREUM", "LITECOIN", "TRON", "BITCOIN_CASH", "BINANCE_COIN", "MONERO", "BITCOIN_LN", "CONCORDIUM", "APE", "DOGE", "SHIB", "PEPE", "DAI", "NANO", "POLYGON", "PLZ:TRC20", "PLZ:BEP20", "USDC:MATIC", "USDT:MATIC", "USDC:ERC20", "USDC:BEP20", "USDT:ERC20", "USDT:TRC20", "USDT:BEP20", "CRONOS". If null, the customer will be asked automatically to choose a gateway on the Sellix hosted /payment page. If product_id is specified, the gateway must be on in the product's gateways array.

gateways

array

Array of accepted gateways, if gateway is NULL the user will be prompted to choose one of these. Items Enum: "PAYPAL", "STRIPE", "SKRILL", "PERFECT_MONEY", "CASH_APP", "SOLANA", "RIPPLE", "BITCOIN", "ETHEREUM", "LITECOIN", "TRON", "BITCOIN_CASH", "BINANCE_COIN", "MONERO", "BITCOIN_LN", "CONCORDIUM", "APE", "DOGE", "SHIB", "PEPE", "DAI", "NANO", "POLYGON", "PLZ:TRC20", "PLZ:BEP20", "USDC:MATIC", "USDT:MATIC", "USDC:ERC20", "USDC:BEP20", "USDT:ERC20", "USDT:TRC20", "USDT:BEP20", "CRONOS"

paypal_apm

string

Enum: "bancontact", "eps", "trustly", "mercado", "paylater", "sepa", "venmo", "blik", "giropay", "ideal", "mybank", "sofort", "przelewy24", "credit". If gateway is PAYPAL, a paypal_apm (PayPal Alternative Payment Method) can be specified. To retrieve the available PayPal APM for a specific customer session, please refer to the PayPal SDK using window.paypal.FUNDING and fundingSource to filter out available methods. You can also use our documentation on how to process white_label payments.

credit_card

boolean

If gateway is PAYPAL and no paypal_apm is passed, specify credit_card true to land the customer on the PayPal managed credit card page instead of the onboarding login.

lex_payment_method

string

Deprecated

value

number

Required if product_id and cart are null. The customer will be asked to pay for this amount.

currency

string

Enum: "CAD", "HKD", "ISK", "PHP", "DKK", "HUF", "CZK", "GBP", "RON", "SEK", "IDR", "INR", "BRL", "RUB", "HRK", "JPY", "THB", "CHF", "EUR", "MYR", "BGN", "TRY", "CNY", "NOK", "NZD", "ZAR", "USD", "MXN", "SGD", "AUD", "ILS", "KRW", "PLN". Required if product_id and cart are null, defines the currency of value.

quantity

integer

Can be passed with either product_id null or not. The value or product's price will be multiplied by this amount.

coupon_code

string

Pass a Sellix coupon code to apply a discount over the invoice.

confirmations

integer

Cryptocurrency confirmations required to count a transaction over the total crypto amount needed.

email

string

REQUIRED

Email of the customer. Should you want to handle emails on your own, pass to this field a company email to which PDF receipts of orders will be sent for accounting and log purposes.

custom_fields

object

key-value JSON having as key the custom field name and as value the custom field value inserted by the customer. Custom fields can both be used as inputs from the customers but also as metadata for invoices, letting you pass hidden fields for internal referencing.

product_addons

object

Object containing product addons available for the product. Key-value with Key being the product ID and Value a comma separated list of addon IDs. This can be used on cart payments as well.

product_variants

object

Object containing product variants available for the product. Key-value with Key being the product id and Value the variant title (case sensitive). This can be used on cart payments as well.

fraud_shield

object

Customer details to be used by our fraud shield in order to score potential fraud attempts.

webhook

string

Webhook URL to which updates regarding this payment (invoice) will be sent.

white_label

boolean

Whether or not you want to handle the payments UI. If false, return_url must be specified as it is the website where we will redirect the customer once he has paid through our platform. If true, we will return a full invoice object in the response for you to handle. You can receive updates over invoices and handle subsequent logics through our webhooks.

return_url

string

Return url, required if white_label is false.

Payment create example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $payment_payload = [
7    "title" => "Sellix Payment",
8    "value" => 1.5,
9    "currency" => "EUR",
10    "quantity" => 5,
11    "email" => "no-reply@sellix.io",
12    "white_label" => false,
13    "return_url" => "https://sample.sellix.io/return"
14  ];
15
16  try {
17    $payment = $sellix->create_payment($payment_payload);
18  } catch (SellixException $e) {
19    echo $e->__toString();
20  }
21?>

Create Payment Request

{
  "title": "Sellix Payment",
  "product_id": null,
  "cart": {
    "products": [
      {
        "uniqid": "{product_id}",
        "unit_quantity": 5
      }
    ]
  },
  "gateway": null,
  "gateways": [
    "BITCOIN",
    "USDT",
    "USDC"
  ],
  "product_addons": {
    "{product_id}": "{addon id}"
  },
  "product_variants": {
    "{product_id}": "{variant title}"
  },
  "paypal_apm": null,
  "credit_card": null,
  "lex_payment_method": null,
  "value": 1.5,
  "currency": "EUR",
  "quantity": 5,
  "coupon_code": "CHRISTMAS",
  "confirmations": 1,
  "email": "customer@gmail.com",
  "custom_fields": {
    "username": "sellix-user"
  },
  "fraud_shield": {
    "ip": "255.255.255.255",
    "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0",
    "user_language": "en-GB,fr-FR;q=0.5"
  },
  "webhook": "https://dev.sellix.io/v1/webhook",
  "white_label": false,
  "return_url": "https://sample.sellix.io/return"
}

Non White Label Response

{
  "status": 200,
  "data": {
    "url": "https://sellix.io/payment/sample-4caac117ca-abeb80",
    "uniqid": "sample-4caac117ca-abeb80"
  },
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

White Label Response

{
  "status": 200,
  "data": {
    "invoice": {
      "id": 0,
      "uniqid": "demo01a32-4df6e9",
      "total": 1.5,
      "total_display": 1.5,
      "currency": "USD",
      "exchange_rate": 1,
      "crypto_exchange_rate": 9994.79,
      "shop_id": 0,
      "name": "Demo",
      "customer_email": "demo@gmail.com",
      "product_id": "demo30bf1",
      "product_type": "SERIALS",
      "product_price": 0.5,
      "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.5,
        "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"
}

Complete a Payment

PUT /payments/:uniqid
Completes a Payment

Payment complete example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $payment_uniqid = "<PAYMENT_UNIQID>";
7
8  try {
9    $sellix->complete_payment($payment_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Delete a Payment

DELETE /payments/:uniqid
Deletes a Payment

Payment delete example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $payment_uniqid = "<PAYMENT_UNIQID>";
7
8  try {
9    $sellix->delete_payment($payment_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Blacklists

Endpoints

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

Blacklist Object

id

integer

ID of the resource

uniqid

string

Unique ID of the resource, used as reference across the API.

scope

string

Enum: "PRIVATE", "SHARED". Whether it is a PRIVATE or SHARED blacklist. SHARED blacklists are created by Sellix's Fraud Shield to be used across Business and Enterprise merchants.

shop_id

integer

The shop ID to which this blacklist belongs.

type

string

Enum: "EMAIL", "IP", "COUNTRY", "ISP", "ASN", "HOST". The type of data of this blacklist.

data

string

The value of the blacklist.

note

string

Additional note provided on blacklist creation.

created_at

integer

Creation date of the blacklist.

updated_at

integer

Date, available if the blacklist has been edited.

updated_by

integer

User ID, available if the blacklist has been edited.

The Blacklist Object

{
  "id": 0,
  "uniqid": "sample29a0e39d",
  "scope": "PRIVATE",
  "shop_id": 0,
  "type": "EMAIL",
  "data": "example@gmail.com",
  "note": "Blocking unwanted email.",
  "created_at": 162857125819,
  "updated_at": 162857125819,
  "updated_by": 0
}

Get Blacklist

GET /blacklists/:uniqid

Retrieves a Blacklist by ID

Blacklist view example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $blacklist_uniqid = "<BLACKLIST_UNIQID>";
7
8  try {
9    $blacklist = $sellix->get_blacklist($blacklist_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": {
    "blacklist": {
      "id": 0,
      "uniqid": "sample29a0e39d",
      "scope": "PRIVATE",
      "shop_id": 0,
      "type": "EMAIL",
      "data": "example@gmail.com",
      "note": "Blocking unwanted email.",
      "created_at": 162857125819,
      "updated_at": 162857125819,
      "updated_by": 0
    }
  },
  "message": null,
  "log": null,
  "error": null,
  "env": "production"
}

List Blacklist

GET /blacklists

Returns a list of the Blacklist. The blacklist are sorted by creation date, with the most recently created blacklist being first.

Parameters

page

integer

Page number for use in pagination.

Blacklist list example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6
7  try {
8    $blacklists = $sellix->get_blacklists();
9  } catch (SellixException $e) {
10    echo $e->__toString();
11  }
12?>

Response

{
  "status": 200,
  "data": {
    "blacklists": [
      {
        "id": 0,
        "uniqid": "sample29a0e39d",
        "scope": "PRIVATE",
        "shop_id": 0,
        "type": "EMAIL",
        "data": "example@gmail.com",
        "note": "Blocking unwanted email.",
        "created_at": 162857125819,
        "updated_at": 162857125819,
        "updated_by": 0
      }
    ]
  },
  "message": null,
  "log": null,
  "error": null,
  "env": "production"
}

Create a Blacklist

POST /blacklists

Creates a Blacklist

Arguments

type

string

REQUIRED

Enum: "EMAIL", "IP", "COUNTRY", "ISP", "ASN", "HOST". The type of data of this blacklist.

data

string

REQUIRED

Blocked data. Either country code, email or IP address

note

string

Internal note for the reasoning of the blacklist

Blacklist create example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $blacklist_payload = [
7    "type" => "EMAIL",
8    "data" => "sample@gmail.com",
9    "note" => "demo"
10  ];
11
12  try {
13    $blacklist_uniqid = $sellix->create_blacklist($blacklist_payload);
14  } catch (SellixException $e) {
15    echo $e->__toString();
16  }
17?>

Create Blacklist Request

{
  "type": "EMAIL",
  "data": "example@sellix.io",
  "note": "Blocking unwanted email."
}

Response

{
  "status": 200,
  "data": {
    "uniqid": "objectUniqid"
  },
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Update Blacklist

PUT /blacklists/:uniqid
Edits a Blacklist.

Arguments

type

string

REQUIRED

Enum: "EMAIL", "IP", "COUNTRY", "ISP", "ASN", "HOST". The type of data of this blacklist."

data

string

REQUIRED

Blocked data. Either country code, email or IP address

note

string

Internal note for the reasoning of the blacklist

Blacklist update example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $blacklist_uniqid = "<BLACKLIST_UNIQID>";
7  $blacklist_payload = [
8    "type" => "EMAIL",
9    "data" => "sample@gmail.com",
10    "note" => "demo"
11  ];
12
13  try {
14    $sellix->update_blacklist($blacklist_uniqid, $blacklist_payload);
15  } catch (SellixException $e) {
16    echo $e->__toString();
17  }
18?>

Update Blacklist Request

{
  "type": "EMAIL",
  "data": "example@sellix.io",
  "note": "Blocking unwanted email."
}

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Delete Blacklist

DELETE /blacklists/:uniqid
Deletes a Blacklist.

Blacklist delete example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $blacklist_uniqid = "<BLACKLIST_UNIQID>";
7
8  try {
9    $sellix->delete_blacklist($blacklist_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Whitelists

Edpoints

GET /whitelists/:uniqid 
GET /whitelists
POST /whitelists
PUT /whitelists/:uniqid
DELETE /whitelists/:uniqid

Whitelist Object

id

integer

ID of the resource

uniqid

string

Unique ID of the resource, used as reference across the API.

shop_id

integer

The shop ID to which this whitelist belongs.

type

string

Enum: "EMAIL", "IP", "COUNTRY", "ISP", "ASN", "HOST". The type of data of this whitelist.

data

string

The value of the whitelist.

note

string

Additional note provided on whitelist creation.

created_at

integer

Creation date of the whitelist.

updated_at

integer

Date, available if the whitelist has been edited.

updated_by

integer

User ID, available if the whitelist has been edited.

The Whitelist Object

{
  "id": 0,
  "uniqid": "sample29a0e39d",
  "shop_id": 0,
  "type": "EMAIL",
  "data": "example@gmail.com",
  "note": "Admitting known email.",
  "created_at": 162857125819,
  "updated_at": 162857125819,
  "updated_by": 0
}

Get Whitelist

GET /whitelists/:id

Retrieves a Whitelist by ID

Whitelist view example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $whitelist_uniqid = "<WHITELIST_UNIQID>";
7
8  try {
9    $whitelist = $sellix->get_whitelist($whitelist_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": {
    "whitelist": {
      "id": 0,
      "uniqid": "sample29a0e39d",
      "shop_id": 0,
      "type": "EMAIL",
      "data": "example@gmail.com",
      "note": "Admitting known email.",
      "created_at": 162857125819,
      "updated_at": 162857125819,
      "updated_by": 0
    }
  },
  "message": null,
  "log": null,
  "error": null,
  "env": "production"
}

List Whitelist

GET /whitelists

Returns a list of the Whitelist. The whitelist are sorted by creation date, with the most recently created whitelist being first.

Parameters

page

integer

Page number for use in pagination.

Whitelist list example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6
7  try {
8    $whitelists = $client->get_whitelists();
9  } catch (SellixException $e) {
10    echo $e->__toString();
11  }
12?>

Response

{
  "status": 200,
  "data": {
    "whitelists": [
      {
        "id": 0,
        "uniqid": "sample29a0e39d",
        "shop_id": 0,
        "type": "EMAIL",
        "data": "example@gmail.com",
        "note": "Admitting known email.",
        "created_at": 162857125819,
        "updated_at": 162857125819,
        "updated_by": 0
      }
    ]
  },
  "message": null,
  "log": null,
  "error": null,
  "env": "production"
}

Create a Whitelist

POST /whitelists

Creates a Whitelist

Arguments

type

string

REQUIRED

Enum: "EMAIL", "IP", "COUNTRY", "ISP", "ASN", "HOST". The type of data of this whitelist.

data

string

REQUIRED

Admitted data. Either country code, email or IP address

note

string

Internal note for the reasoning of the whitelist

Whitelist create example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  
7  $whitelist_payload = [
8    "type" => "EMAIL",
9    "data" => "sample@gmail.com",
10    "note" => "demo"
11  ];
12
13  try {
14    $whitelist_uniqid = $sellix->create_whitelist($whitelist_payload);
15  } catch (SellixException $e) {
16    echo $e->__toString();
17  }
18?>

Create Whitelist Request

{
  "type": "EMAIL",
  "data": "example@sellix.io",
  "note": "Admitting known email."
}

Response

{
  "status": 200,
  "data": {
    "uniqid": "objectUniqid"
  },
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Edit Whitelist

PUT /whitelists/:uniqid
Edits a Whitelist.

Arguments

type

string

REQUIRED

Enum: "EMAIL", "IP", "COUNTRY", "ISP", "ASN", "HOST". The type of data of this whitelist.

data

string

REQUIRED

Admitted data. Either country code, email or IP address

note

string

Internal note for the reasoning of the whitelist

Whitelist update example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $whitelist_uniqid = "<WHITELIST_UNIQID>";
7  $whitelist_payload = [
8    "type" => "EMAIL",
9    "data" => "sample@gmail.com",
10    "note" => "demo"
11  ];
12
13  try {
14    $sellix->update_whitelist($whitelist_uniqid, $whitelist_payload);
15  } catch (SellixException $e) {
16    echo $e->__toString();
17  }
18?>

Edit Whitelist Request

{
  "type": "EMAIL",
  "data": "example@sellix.io",
  "note": "Admitting known email."
}

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Delete Whitelist

DELETE /whitelists/:uniqid
Deletes a Whitelist.

Whitelist delete example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $whitelist_uniqid = "<WHITELIST_UNIQID>";
7
8  try {
9    $sellix->delete_whitelist($whitelist_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Categories

Endpoints

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

Category Object

id

integer

ID of the resource

uniqid

string

Unique ID of the resource, used as reference across the API.

shop_id

integer

The shop ID to which this category belongs.

title

string

Title of the category.

unlisted

boolean

Whether or not the category is visible on the merchant storefront.

sort_priority

integer

Sort order of this category.

products_bound

objects

Array of products. Please note that the product object contains limited fields, to get the full product object please use the Products API endpoint.

products_count

integer

How many products are present in the products_bound array

groups_bound

objects

Array of groups.

groups_count

integer

How many groups are present in the groups_bound array

created_at

integer

Creation date of the category.

updated_at

integer

Date, available if the category has been edited.

updated_by

integer

User ID, available if the category has been edited.

The Category Object

{
  "id": 0,
  "uniqid": "sample29a0e39d",
  "shop_id": 0,
  "title": "Software",
  "unlisted": false,
  "sort_priority": 1,
  "products_bound": [
    {
      "id": 0,
      "uniqid": "sample29a0e39d",
      "shop_id": 0,
      "type": "SUBSCRIPTION",
      "subtype": null,
      "title": "Digital good to download",
      "currency": "EUR",
      "price": 5,
      "price_display": 4.5,
      "description": "Product description",
      "image_attachment": null,
      "file_attachment": null,
      "volume_discounts": [
        {
          "type": "PERCENTAGE",
          "value": 5,
          "quantity": 10
        }
      ],
      "recurring_interval": "MONTH",
      "recurring_interval_count": 1,
      "trial_period": 0,
      "paypal_product_id": null,
      "paypal_plan_id": null,
      "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
      "quantity_min": 1,
      "quantity_max": -1,
      "quantity_warning": 0,
      "gateways": [
        "PAYPAL",
        "STRIPE",
        "BITCOIN"
      ],
      "custom_fields": [
        {
          "type": "checkbox",
          "name": "Read the ToS",
          "regex": null,
          "placeholder": null,
          "default": null,
          "required": false
        }
      ],
      "crypto_confirmations_needed": 3,
      "max_risk_level": 85,
      "block_vpn_proxies": true,
      "delivery_text": "Thank you for purchasing this subscription!",
      "service_text": "In order to get you services, please contact us at..",
      "stock_delimiter": ",",
      "stock": -1,
      "dynamic_webhook": null,
      "sort_priority": 1,
      "unlisted": false,
      "on_hold": false,
      "terms_of_service": null,
      "warranty": 86400,
      "warranty_text": "This warranty covers..",
      "private": false,
      "name": "Sellix",
      "image_name": null,
      "image_storage": null,
      "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
      "serials": [],
      "webhooks": [],
      "feedback": {
        "total": 10,
        "positive": 8,
        "neutral": 1,
        "negative": 0
      },
      "theme": "light",
      "dark_mode": 0,
      "average_score": 4.5,
      "sold_count": 5,
      "lex_payment_methods": [],
      "created_at": 162857125819,
      "updated_at": 162857125819,
      "updated_by": 0
    }
  ],
  "products_count": 1,
  "groups_bound": [
    {
      "uniqid": "sample29a0e39d",
      "title": "Digital goods to download",
      "image_attachment": null,
      "created_at": 162857125819,
      "updated_at": 162857125819
    }
  ],
  "groups_count": 1,
  "created_at": 162857125819,
  "updated_at": 162857125819,
  "updated_by": 0
}

Get a Category

GET /categories/:uniqid
Retrieves a Category by Uniqid.

Category view example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $category_uniqid = "<CATEGORY_UNIQID>";
7
8  try {
9    $category = $sellix->get_category($category_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": {
    "category": {
      "id": 0,
      "uniqid": "sample29a0e39d",
      "shop_id": 0,
      "title": "Software",
      "unlisted": false,
      "sort_priority": 1,
      "products_bound": [
        {
          "id": 0,
          "uniqid": "sample29a0e39d",
          "shop_id": 0,
          "type": "SUBSCRIPTION",
          "subtype": null,
          "title": "Digital good to download",
          "currency": "EUR",
          "price": 5,
          "price_display": 4.5,
          "description": "Product description",
          "image_attachment": null,
          "file_attachment": null,
          "volume_discounts": [
            {
              "type": "PERCENTAGE",
              "value": 5,
              "quantity": 10
            }
          ],
          "recurring_interval": "MONTH",
          "recurring_interval_count": 1,
          "trial_period": 0,
          "paypal_product_id": null,
          "paypal_plan_id": null,
          "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
          "quantity_min": 1,
          "quantity_max": -1,
          "quantity_warning": 0,
          "gateways": [
            "PAYPAL",
            "STRIPE",
            "BITCOIN"
          ],
          "custom_fields": [
            {
              "type": "checkbox",
              "name": "Read the ToS",
              "regex": null,
              "placeholder": null,
              "default": null,
              "required": false
            }
          ],
          "crypto_confirmations_needed": 3,
          "max_risk_level": 85,
          "block_vpn_proxies": true,
          "delivery_text": "Thank you for purchasing this subscription!",
          "service_text": "In order to get you services, please contact us at..",
          "stock_delimiter": ",",
          "stock": -1,
          "dynamic_webhook": null,
          "sort_priority": 1,
          "unlisted": false,
          "on_hold": false,
          "terms_of_service": null,
          "warranty": 86400,
          "warranty_text": "This warranty covers..",
          "private": false,
          "name": "Sellix",
          "image_name": null,
          "image_storage": null,
          "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
          "serials": [],
          "webhooks": [],
          "feedback": {
            "total": 10,
            "positive": 8,
            "neutral": 1,
            "negative": 0
          },
          "theme": "light",
          "dark_mode": 0,
          "average_score": 4.5,
          "sold_count": 5,
          "lex_payment_methods": [],
          "created_at": 162857125819,
          "updated_at": 162857125819,
          "updated_by": 0
        }
      ],
      "products_count": 1,
      "groups_bound": [
        {
          "uniqid": "sample29a0e39d",
          "title": "Digital goods to download",
          "image_attachment": null,
          "created_at": 162857125819,
          "updated_at": 162857125819
        }
      ],
      "groups_count": 1,
      "created_at": 162857125819,
      "updated_at": 162857125819,
      "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.

Parameters

page

integer

Page number for use in pagination.

Category list example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6
7  try {
8    $categories = $sellix->get_categories();
9  } catch (SellixException $e) {
10    echo $e->__toString();
11  }
12?>

Response

{
  "status": 200,
  "data": {
    "categories": [
      {
        "id": 0,
        "uniqid": "sample29a0e39d",
        "shop_id": 0,
        "title": "Software",
        "unlisted": false,
        "sort_priority": 1,
        "products_bound": [
          {
            "id": 0,
            "uniqid": "sample29a0e39d",
            "shop_id": 0,
            "type": "SUBSCRIPTION",
            "subtype": null,
            "title": "Digital good to download",
            "currency": "EUR",
            "price": 5,
            "price_display": 4.5,
            "description": "Product description",
            "image_attachment": null,
            "file_attachment": null,
            "volume_discounts": [
              {
                "type": "PERCENTAGE",
                "value": 5,
                "quantity": 10
              }
            ],
            "recurring_interval": "MONTH",
            "recurring_interval_count": 1,
            "trial_period": 0,
            "paypal_product_id": null,
            "paypal_plan_id": null,
            "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
            "quantity_min": 1,
            "quantity_max": -1,
            "quantity_warning": 0,
            "gateways": [
              "PAYPAL",
              "STRIPE",
              "BITCOIN"
            ],
            "custom_fields": [
              {
                "type": "checkbox",
                "name": "Read the ToS",
                "regex": null,
                "placeholder": null,
                "default": null,
                "required": false
              }
            ],
            "crypto_confirmations_needed": 3,
            "max_risk_level": 85,
            "block_vpn_proxies": true,
            "delivery_text": "Thank you for purchasing this subscription!",
            "service_text": "In order to get you services, please contact us at..",
            "stock_delimiter": ",",
            "stock": -1,
            "dynamic_webhook": null,
            "sort_priority": 1,
            "unlisted": false,
            "on_hold": false,
            "terms_of_service": null,
            "warranty": 86400,
            "warranty_text": "This warranty covers..",
            "private": false,
            "name": "Sellix",
            "image_name": null,
            "image_storage": null,
            "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
            "serials": [],
            "webhooks": [],
            "feedback": {
              "total": 10,
              "positive": 8,
              "neutral": 1,
              "negative": 0
            },
            "theme": "light",
            "dark_mode": 0,
            "average_score": 4.5,
            "sold_count": 5,
            "lex_payment_methods": [],
            "created_at": 162857125819,
            "updated_at": 162857125819,
            "updated_by": 0
          }
        ],
        "products_count": 1,
        "groups_bound": [
          {
            "uniqid": "sample29a0e39d",
            "title": "Digital goods to download",
            "image_attachment": null,
            "created_at": 162857125819,
            "updated_at": 162857125819
          }
        ],
        "groups_count": 1,
        "created_at": 162857125819,
        "updated_at": 162857125819,
        "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

boolean

0 or 1, true or false, if 1/true the category is not displayed on the shop page.

products_bound

array

Array of products uniqids that the category will contain

groups_bound

array

Array of groups uniqids that the category will contain

sort_priority

integer

Used to order the categories on the shop page, ordered by ASC

Category create example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $category_payload = [
7    "title" => "Software",
8    "unlisted" => false,
9    "products_bound" => [],
10    "sort_priority" => 0
11  ];
12
13  try {
14    $category_uniqid = $sellix->create_category($category_payload);
15  } catch (SellixException $e) {
16    echo $e->__toString();
17  }
18?>

Create Category Request

{
  "title": "Software",
  "unlisted": false,
  "products_bound": [
    "sample8718521"
  ],
  "groups_bound": [
    "5f42ada2b38a5"
  ],
  "sort_priority": 0
}

Response

{
  "status": 200,
  "data": {
    "uniqid": "objectUniqid"
  },
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Edit Category

PUT /categories/:uniqid
Edits a Category.

Arguments

title

string

REQUIRED

Title of the category, displayed in the site

unlisted

boolean

0 or 1, true or false, if 1/true the category is not displayed on the shop page.

products_bound

array

Array of products uniqids that the category will contain

groups_bound

array

Array of groups uniqids that the category will contain

sort_priority

integer

Used to order the categories on the shop page, ordered by ASC

Category update example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $category_uniqid = "<CATEGORY_UNIQID>";
7  $category_payload = [
8    "title" => "Software",
9    "unlisted" => false,
10    "products_bound" => [],
11    "sort_priority" => 0
12  ];
13
14  try {
15    $sellix->update_category($category_uniqid, $category_payload);
16  } catch (SellixException $e) {
17    echo $e->__toString();
18  }
19?>

Edit Category Request

{
  "title": "Software",
  "unlisted": false,
  "products_bound": [
    "sample8718521"
  ],
  "groups_bound": [
    "5f42ada2b38a5"
  ],
  "sort_priority": 0
}

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Delete Category

DELETE /categories/:uniqid
Deletes a Category.

Category delete example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $category_uniqid = "<CATEGORY_UNIQID>";
7
8  try {
9    $sellix->delete_category($category_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Coupons

Endpoints

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

Coupon Object

id

integer

ID of the resource

uniqid

string

Unique ID of the resource, used as reference across the API.

shop_id

integer

The shop ID to which this coupon belongs.

type

string

Enum: "PRODUCT", "SUBSCRIPTION". Coupon type, whether it's for a product or subscription. SUBSCRIPTION coupons are only for Sellix-own subscriptions, this field will always return PRODUCT.

code

string

Coupon code to be used during the checkout phase.

use_type

string

Enum: "LIMITED", "ANY". If LIMITED, an array of products must be specified as this coupon will be used only with them.

discount

number

Discount value for this coupon.

currency

string

Deprecated

used

integer

How many times this coupon has been used.

disabled_with_volume_discounts

boolean

Whether or not this coupon is valid if a volume discount is applied.

all_recurring_bill_invoices

boolean

Whether or not this coupon should be applied for each product SUBSCRIPTION renewal.

max_uses

integer

Maximum usage for this coupon.

products_bound

strings

Array of product uniqids. Differs from the categories API as this endpoint does not need specific details about a product. Use the products API to get details about a single product.

products_count

integer

How many products are present in the products_bound array

expire_at

timestamp

If set, the coupon will expire at that date.

created_at

integer

Creation date of the category.

updated_at

integer

Date, available if the category has been edited.

updated_by

integer

User ID, available if the category has been edited.

The Coupon Object

{
  "id": 0,
  "uniqid": "sample29a0e39d",
  "shop_id": 0,
  "type": "PRODUCT",
  "code": "CHRISTMAS25",
  "use_type": "LIMITED",
  "discount": 25,
  "currency": null,
  "used": 15,
  "disabled_with_volume_discounts": false,
  "all_recurring_bill_invoices": true,
  "max_uses": 25,
  "expire_at": null,
  "products_bound": [
    "sample56f391049"
  ],
  "products_count": 1,
  "created_at": 162857125819,
  "updated_at": 162857125819,
  "updated_by": 0
}

Get a Coupon

GET /coupons/:uniqid
Retrieves a Coupon by Uniqid.

Coupon view example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $coupon_uniqid = "<COUPON_UNIQID>";
7
8  try {
9    $coupon = $sellix->get_coupon($coupon_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": {
    "coupon": {
      "id": 0,
      "uniqid": "sample29a0e39d",
      "shop_id": 0,
      "type": "PRODUCT",
      "code": "CHRISTMAS25",
      "use_type": "LIMITED",
      "discount": 25,
      "currency": null,
      "used": 15,
      "disabled_with_volume_discounts": false,
      "all_recurring_bill_invoices": true,
      "max_uses": 25,
      "expire_at": null,
      "products_bound": [
        "sample56f391049"
      ],
      "products_count": 1,
      "created_at": 162857125819,
      "updated_at": 162857125819,
      "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.

Parameters

page

integer

Page number for use in pagination.

Coupon list example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6
7  try {
8    $coupons = $sellix->get_coupons();
9  } catch (SellixException $e) {
10    echo $e->__toString();
11  }
12?>

Response

{
  "status": 200,
  "data": {
    "coupons": [
      {
        "id": 0,
        "uniqid": "sample29a0e39d",
        "shop_id": 0,
        "type": "PRODUCT",
        "code": "CHRISTMAS25",
        "use_type": "LIMITED",
        "discount": 25,
        "currency": null,
        "used": 15,
        "disabled_with_volume_discounts": false,
        "all_recurring_bill_invoices": true,
        "max_uses": 25,
        "expire_at": null,
        "products_bound": [
          "sample56f391049"
        ],
        "products_count": 1,
        "created_at": 162857125819,
        "updated_at": 162857125819,
        "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

integer

REQUIRED

Percentage amount of the discount.

max_uses

integer

How many times can the coupon be used, defaulted to -1.

products_bound

array

Array of products uniqids that the category will contain.

discount_type

string

Enum: "PERCENTAGE", "FIXED"

discount_order_type

string

Deprecated

disabled_with_volume_discounts

boolean

Whether or not this coupon is valid if a volume discount is applied.

all_recurring_bill_invoices

boolean

Whether or not this coupon should be applied for each product SUBSCRIPTION renewal.

expire_at

timestamp

If set, the coupon will expire at that date.

Coupon create example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $coupon_payload = [
7    "code" => "TESTING_COUPON",
8    "discount_value" => 35,
9    "max_uses" => 50,
10    "products_bound" => [],
11    "discount_type" => "PERCENTAGE",
12    "disabled_with_volume_discounts" => true
13  ];
14
15  try {
16    $coupon_uniqid = $sellix->create_coupon($coupon_payload);
17  } catch (SellixException $e) {
18    echo $e->__toString();
19  }
20?>

Create Coupon Request

{
  "code": "BLACK_FRIDAY",
  "discount_value": 35,
  "max_uses": 50,
  "products_bound": [
    "sample8718521"
  ],
  "discount_type": "PERCENTAGE",
  "discount_order_type": "TOTAL",
  "disabled_with_volume_discounts": true,
  "all_recurring_bill_invoices": false
}

Response

{
  "status": 200,
  "data": {
    "uniqid": "objectUniqid"
  },
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Edit Coupon

PUT /coupons/:uniqid
Edits a Coupon.

Arguments

code

string

REQUIRED

Code of the Coupon.

discount_value

integer

REQUIRED

Percentage amount of the discount.

max_uses

integer

How many times can the coupon be used, defaulted to -1.

products_bound

array

Array of products uniqids that the category will contain.

discount_type

string

Enum: "PERCENTAGE", "FIXED"

discount_order_type

string

Deprecated

disabled_with_volume_discounts

boolean

Whether or not this coupon is valid if a volume discount is applied.

all_recurring_bill_invoices

boolean

Whether or not this coupon should be applied for each product SUBSCRIPTION renewal.

expire_at

timestamp

If set, the coupon will expire at that date.

Coupon update example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $coupon_uniqid = "<COUPON_UNIQID>";
7  $coupon_payload = [
8    "code" => "TESTING_COUPON",
9    "discount_value" => 35,
10    "max_uses" => 50,
11    "products_bound" => [],
12    "discount_type" => "PERCENTAGE",
13    "disabled_with_volume_discounts" => true
14  ];
15
16  try {
17    $sellix->update_coupon($coupon_uniqid, $coupon_payload);
18  } catch (SellixException $e) {
19    echo $e->__toString();
20  }
21?>

Edit Coupon Request

{
  "code": "BLACK_FRIDAY",
  "discount_value": 35,
  "max_uses": 50,
  "products_bound": [
    "sample8718521"
  ],
  "discount_type": "PERCENTAGE",
  "discount_order_type": "TOTAL",
  "disabled_with_volume_discounts": true,
  "all_recurring_bill_invoices": false,
  "expire_at": null
}

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Delete Coupon

DELETE /coupons/:uniqid
Deletes a Coupon.

Coupon delete example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $coupon_uniqid = "<COUPON_UNIQID>";
7
8  try {
9    $sellix->delete_coupon($coupon_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Feedback

Endpoints

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

Feedback Object

id

integer

ID of the resource

uniqid

string

Unique ID of the resource, used as reference across the API.

product_id

string

Unique ID of the product for which this feedback has been posted.

invoice_id

string

Unique ID of the invoice for which this feedback has been posted.

blocked

boolean

If true, this feedback has been blocked after an appeal.

appealed

boolean

If true, an appeal has been created for this feedback.

appeal_outcome

string

Not always available. Enum: NO_APPEAL_AVAILABLE, APPROVED, REJECTED.

shop_id

integer

The shop ID to which this feedback belongs.

message

string

Message left by the customer.

reply

string

Reply left by the merchant.

score

integer

Score left by the customer, if 0 no score has been left. From 0 to 5.

product_title

string

Product title for which this feedback has been created

product_image_name

string

Deprecated

product_image_storage

string

Deprecated

cloudflare_image_id

string

New field containing the cloudflare image ID of this product, replaces image_attachment and image_name. Format https://imagedelivery.net/95QNzrEeP7RU5l5WdbyrKw// where variant_name can be shopItem, avatar, icon, imageAvatarFeedback, public, productImageCart.

invoice

object

Contains the full invoice object for this feedback

product

object

Contains the full product object for this feedback

created_at

integer

Creation date of the product.

updated_at

integer

Date, available if the product has been edited.

updated_by

integer

User ID, available if the product has been edited.

The Feedback Object

{
  "id": 0,
  "uniqid": "sample-a0bb9d70a9-9e852a",
  "product_id": "samplea0bb9d70a9",
  "invoice_id": "sample-cc39109624-03b70b",
  "blocked": false,
  "appealed": false,
  "shop_id": 0,
  "message": "Nice product!",
  "reply": "Thank you for the feedback.",
  "score": 5,
  "product_title": "Digital Good",
  "product_image_name": null,
  "product_image_storage": null,
  "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
  "invoice": {
    "id": 0,
    "uniqid": "sample-3ddfc9dc3d-ab2e36",
    "recurring_billing_id": null,
    "total": 2.5,
    "total_display": 2,
    "exchange_rate": 1.12,
    "crypto_exchange_rate": 176.38,
    "currency": "EUR",
    "shop_id": 0,
    "shop_image_name": null,
    "shop_image_storage": null,
    "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
    "name": "Sellix",
    "type": "PRODUCT",
    "customer_email": "customer@gmail.com",
    "paypal_email_delivery": false,
    "product_id": "sample2bde8a50",
    "product_title": "Digital Good",
    "product_type": "SERIALS",
    "subtype": null,
    "subscription_id": null,
    "subscription_time": null,
    "gateway": "SOLANA",
    "paypal_apm": null,
    "paypal_email": null,
    "paypal_order_id": null,
    "paypal_fee": null,
    "paypal_payer_email": null,
    "paypal_subscription_id": null,
    "paypal_subscription_link": null,
    "lex_order_id": null,
    "lex_payment_method": null,
    "stripe_client_secret": null,
    "stripe_price_id": null,
    "skrill_email": null,
    "skrill_sid": null,
    "skrill_link": null,
    "perfectmoney_id": null,
    "crypto_address": "3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B",
    "crypto_amount": 0.014174,
    "crypto_received": 0.014174,
    "crypto_uri": "solana:3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B?amount=0.014174",
    "crypto_confirmations_needed": 1,
    "crypto_scheduled_payout": false,
    "crypto_payout": true,
    "fee_billed": true,
    "bill_info": null,
    "cashapp_qrcode": null,
    "cashapp_cashtag": null,
    "cashapp_note": null,
    "country": "IT",
    "location": "Bologna, Emilia-Romagna (Europe/Rome)",
    "ip": "255.11.12.255",
    "is_vpn_or_proxy": false,
    "user_agent": "PostmanRuntime/7.26.8",
    "quantity": 5,
    "coupon_id": null,
    "custom_fields": {
      "username": "sellix-user"
    },
    "developer_invoice": false,
    "developer_title": null,
    "developer_webhook": null,
    "developer_return_url": null,
    "status": "COMPLETED",
    "status_details": null,
    "void_details": null,
    "discount": 0,
    "fee_percentage": 5,
    "ip_info": {
      "success": true,
      "message": "Success",
      "fraud_score": 25,
      "country_code": "IT",
      "region": "Emilia Romagna",
      "city": "Bologna",
      "ISP": "Telecom TIM",
      "ASN": 308172,
      "operating_system": "Mac 10.16",
      "browser": "Chrome 96.0",
      "organization": "Telecom TIM",
      "is_crawler": false,
      "timezone": "Europe/Rome",
      "mobile": false,
      "host": "cust.vodafonedsl.it",
      "proxy": false,
      "vpn": false,
      "tor": false,
      "active_vpn": false,
      "active_tor": false,
      "device_brand": "Apple",
      "device_model": "N/A",
      "recent_abuse": false,
      "bot_status": false,
      "connection_type": "Residential",
      "abuse_velocity": "none",
      "zip_code": "N/A",
      "latitude": 1,
      "longitude": 2,
      "request_id": "sampleN0vmX"
    },
    "serials": [
      "activation-key-#1",
      "activation-key-#2",
      "activation-key-#3"
    ],
    "file": {
      "id": 0,
      "uniqid": "sampled79fe5041d379dde2abd180e8cd748bf336d724aa2fc13441646d",
      "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
      "storage": null,
      "name": "sampled79fe5041d379dde2abd180e8cd748bf336d724aa2fc13441646d.jpg",
      "original_name": "Photo of a pineapple.",
      "extension": "jpg",
      "shop_id": 0,
      "size": 19391,
      "created_at": 1640777744
    },
    "service_text": null,
    "dynamic_response": null,
    "webhooks": [
      {
        "uniqid": "sample079ee22",
        "url": "https://dev.sellix.io/v1/webhook",
        "event": "order:paid",
        "retries": 1,
        "response_code": 200,
        "created_at": 1640777735,
        "payload": {
          "sample": "sellix"
        },
        "response": "webhook response"
      }
    ],
    "crypto_payout_transaction": {
      "to_address": "EqsYv2S6pFXaMBrZ9uZe4F6g32HTgvhPuucRHYpGURx1",
      "from_address": "3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B",
      "crypto_amount": 0.0134553,
      "hash": "4tE8KM2qwzxnMdjJxp419mPRViE9Nv3FvhqBphZS7i2ripj6aCwCosRYfACeCCm8kks7nmHtvoV1uDwvNejJhB2P",
      "created_at": 1640777744
    },
    "paypal_dispute": {
      "id": "PP-D-sample1379",
      "invoice_id": "sample-bd73112377-6c0064",
      "shop_id": 0,
      "reason": "MERCHANDISE_OR_SERVICE_NOT_RECEIVED",
      "status": "WAITING_FOR_BUYER_RESPONSE",
      "outcome": null,
      "messages": [
        {
          "posted_by": "SELLER",
          "content": "Hello your order is completed",
          "created_at": 1641033844
        }
      ],
      "life_cycle_stage": "INQUIRY",
      "seller_response_due_date": 0,
      "created_at": 162857125819,
      "updated_at": 162857125819
    },
    "status_history": [
      {
        "id": 10726392,
        "invoice_id": "sample-3ddfc9dc3d-ab2e36",
        "status": "PENDING",
        "details": "The invoice has been created and we are now waiting to receive a payment.",
        "created_at": 1640777609
      },
      {
        "id": 10726409,
        "invoice_id": "sample-3ddfc9dc3d-ab2e36",
        "status": "COMPLETED",
        "details": "The invoice has been flagged as completed and the product has been shipped.",
        "created_at": 1640777796
      }
    ],
    "crypto_transactions": [
      {
        "crypto_amount": 0.014174,
        "hash": "234dB62Q3X9nyqussRSHW5x9rXe7NzyS3hLcwSTtzd9WLWfrHFUtX4KS6DAMyyHnvRgUNiqUvZdw2T9XWJqa8sPW",
        "confirmations": 1,
        "created_at": 1640777734,
        "updated_at": 1640777734
      }
    ],
    "gateways_available": [
      "PAYPAL",
      "STRIPE",
      "MONERO"
    ],
    "shop_paypal_credit_card": true,
    "shop_force_paypal_email_delivery": true,
    "product": {
      "id": 0,
      "uniqid": "sample29a0e39d",
      "shop_id": 0,
      "type": "SUBSCRIPTION",
      "subtype": null,
      "title": "Digital good to download",
      "currency": "EUR",
      "price": 5,
      "price_display": 4.5,
      "description": "Product description",
      "image_attachment": null,
      "file_attachment": null,
      "volume_discounts": [
        {
          "type": "PERCENTAGE",
          "value": 5,
          "quantity": 10
        }
      ],
      "recurring_interval": "MONTH",
      "recurring_interval_count": 1,
      "trial_period": 0,
      "paypal_product_id": null,
      "paypal_plan_id": null,
      "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
      "quantity_min": 1,
      "quantity_max": -1,
      "quantity_warning": 0,
      "gateways": [
        "PAYPAL",
        "STRIPE",
        "BITCOIN"
      ],
      "custom_fields": [
        {
          "type": "checkbox",
          "name": "Read the ToS",
          "regex": null,
          "placeholder": null,
          "default": null,
          "required": false
        }
      ],
      "crypto_confirmations_needed": 3,
      "max_risk_level": 85,
      "block_vpn_proxies": true,
      "delivery_text": "Thank you for purchasing this subscription!",
      "service_text": "In order to get you services, please contact us at..",
      "stock_delimiter": ",",
      "stock": -1,
      "dynamic_webhook": null,
      "sort_priority": 1,
      "unlisted": false,
      "on_hold": false,
      "terms_of_service": null,
      "warranty": 86400,
      "warranty_text": "This warranty covers..",
      "private": false,
      "name": "Sellix",
      "image_name": null,
      "image_storage": null,
      "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
      "serials": [],
      "webhooks": [],
      "feedback": {
        "total": 10,
        "positive": 8,
        "neutral": 1,
        "negative": 0
      },
      "theme": "light",
      "dark_mode": 0,
      "average_score": 4.5,
      "sold_count": 5,
      "lex_payment_methods": [],
      "created_at": 162857125819,
      "updated_at": 162857125819,
      "updated_by": 0
    },
    "day_value": 29,
    "day": "Wed",
    "month": "Dec",
    "year": 2021,
    "created_at": 162857125819,
    "updated_at": 162857125819,
    "updated_by": 0
  },
  "product": {
    "id": 0,
    "uniqid": "sample29a0e39d",
    "shop_id": 0,
    "type": "SUBSCRIPTION",
    "subtype": null,
    "title": "Digital good to download",
    "currency": "EUR",
    "price": 5,
    "price_display": 4.5,
    "description": "Product description",
    "image_attachment": null,
    "file_attachment": null,
    "volume_discounts": [
      {
        "type": "PERCENTAGE",
        "value": 5,
        "quantity": 10
      }
    ],
    "recurring_interval": "MONTH",
    "recurring_interval_count": 1,
    "trial_period": 0,
    "paypal_product_id": null,
    "paypal_plan_id": null,
    "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
    "quantity_min": 1,
    "quantity_max": -1,
    "quantity_warning": 0,
    "gateways": [
      "PAYPAL",
      "STRIPE",
      "BITCOIN"
    ],
    "custom_fields": [
      {
        "type": "checkbox",
        "name": "Read the ToS",
        "regex": null,
        "placeholder": null,
        "default": null,
        "required": false
      }
    ],
    "crypto_confirmations_needed": 3,
    "max_risk_level": 85,
    "block_vpn_proxies": true,
    "delivery_text": "Thank you for purchasing this subscription!",
    "service_text": "In order to get you services, please contact us at..",
    "stock_delimiter": ",",
    "stock": -1,
    "dynamic_webhook": null,
    "sort_priority": 1,
    "unlisted": false,
    "on_hold": false,
    "terms_of_service": null,
    "warranty": 86400,
    "warranty_text": "This warranty covers..",
    "private": false,
    "name": "Sellix",
    "image_name": null,
    "image_storage": null,
    "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
    "serials": [],
    "webhooks": [],
    "feedback": {
      "total": 10,
      "positive": 8,
      "neutral": 1,
      "negative": 0
    },
    "theme": "light",
    "dark_mode": 0,
    "average_score": 4.5,
    "sold_count": 5,
    "lex_payment_methods": [],
    "created_at": 162857125819,
    "updated_at": 162857125819,
    "updated_by": 0
  }
}

Get a Feedback

GET /feedback/:uniqid
Retrieves a Feedback by Uniqid.

Feedback view example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $feedback_uniqid = "<FEEDBACK_UNIQID>";
7
8  try {
9    $feedback = $sellix->get_feedback($feedback_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": {
    "feedback": {
      "id": 0,
      "uniqid": "sample-a0bb9d70a9-9e852a",
      "product_id": "samplea0bb9d70a9",
      "invoice_id": "sample-cc39109624-03b70b",
      "blocked": false,
      "appealed": false,
      "shop_id": 0,
      "message": "Nice product!",
      "reply": "Thank you for the feedback.",
      "score": 5,
      "product_title": "Digital Good",
      "product_image_name": null,
      "product_image_storage": null,
      "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
      "invoice": {
        "id": 0,
        "uniqid": "sample-3ddfc9dc3d-ab2e36",
        "recurring_billing_id": null,
        "total": 2.5,
        "total_display": 2,
        "exchange_rate": 1.12,
        "crypto_exchange_rate": 176.38,
        "currency": "EUR",
        "shop_id": 0,
        "shop_image_name": null,
        "shop_image_storage": null,
        "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
        "name": "Sellix",
        "type": "PRODUCT",
        "customer_email": "customer@gmail.com",
        "paypal_email_delivery": false,
        "product_id": "sample2bde8a50",
        "product_title": "Digital Good",
        "product_type": "SERIALS",
        "subtype": null,
        "subscription_id": null,
        "subscription_time": null,
        "gateway": "SOLANA",
        "paypal_apm": null,
        "paypal_email": null,
        "paypal_order_id": null,
        "paypal_fee": null,
        "paypal_payer_email": null,
        "paypal_subscription_id": null,
        "paypal_subscription_link": null,
        "lex_order_id": null,
        "lex_payment_method": null,
        "stripe_client_secret": null,
        "stripe_price_id": null,
        "skrill_email": null,
        "skrill_sid": null,
        "skrill_link": null,
        "perfectmoney_id": null,
        "crypto_address": "3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B",
        "crypto_amount": 0.014174,
        "crypto_received": 0.014174,
        "crypto_uri": "solana:3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B?amount=0.014174",
        "crypto_confirmations_needed": 1,
        "crypto_scheduled_payout": false,
        "crypto_payout": true,
        "fee_billed": true,
        "bill_info": null,
        "cashapp_qrcode": null,
        "cashapp_cashtag": null,
        "cashapp_note": null,
        "country": "IT",
        "location": "Bologna, Emilia-Romagna (Europe/Rome)",
        "ip": "255.11.12.255",
        "is_vpn_or_proxy": false,
        "user_agent": "PostmanRuntime/7.26.8",
        "quantity": 5,
        "coupon_id": null,
        "custom_fields": {
          "username": "sellix-user"
        },
        "developer_invoice": false,
        "developer_title": null,
        "developer_webhook": null,
        "developer_return_url": null,
        "status": "COMPLETED",
        "status_details": null,
        "void_details": null,
        "discount": 0,
        "fee_percentage": 5,
        "ip_info": {
          "success": true,
          "message": "Success",
          "fraud_score": 25,
          "country_code": "IT",
          "region": "Emilia Romagna",
          "city": "Bologna",
          "ISP": "Telecom TIM",
          "ASN": 308172,
          "operating_system": "Mac 10.16",
          "browser": "Chrome 96.0",
          "organization": "Telecom TIM",
          "is_crawler": false,
          "timezone": "Europe/Rome",
          "mobile": false,
          "host": "cust.vodafonedsl.it",
          "proxy": false,
          "vpn": false,
          "tor": false,
          "active_vpn": false,
          "active_tor": false,
          "device_brand": "Apple",
          "device_model": "N/A",
          "recent_abuse": false,
          "bot_status": false,
          "connection_type": "Residential",
          "abuse_velocity": "none",
          "zip_code": "N/A",
          "latitude": 1,
          "longitude": 2,
          "request_id": "sampleN0vmX"
        },
        "serials": [
          "activation-key-#1",
          "activation-key-#2",
          "activation-key-#3"
        ],
        "file": {
          "id": 0,
          "uniqid": "sampled79fe5041d379dde2abd180e8cd748bf336d724aa2fc13441646d",
          "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
          "storage": null,
          "name": "sampled79fe5041d379dde2abd180e8cd748bf336d724aa2fc13441646d.jpg",
          "original_name": "Photo of a pineapple.",
          "extension": "jpg",
          "shop_id": 0,
          "size": 19391,
          "created_at": 1640777744
        },
        "service_text": null,
        "dynamic_response": null,
        "webhooks": [
          {
            "uniqid": "sample079ee22",
            "url": "https://dev.sellix.io/v1/webhook",
            "event": "order:paid",
            "retries": 1,
            "response_code": 200,
            "created_at": 1640777735,
            "payload": "{\"sample\":\"sellix\"}",
            "response": "webhook response"
          }
        ],
        "crypto_payout_transaction": {
          "to_address": "EqsYv2S6pFXaMBrZ9uZe4F6g32HTgvhPuucRHYpGURx1",
          "from_address": "3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B",
          "crypto_amount": 0.0134553,
          "hash": "4tE8KM2qwzxnMdjJxp419mPRViE9Nv3FvhqBphZS7i2ripj6aCwCosRYfACeCCm8kks7nmHtvoV1uDwvNejJhB2P",
          "created_at": 1640777744
        },
        "paypal_dispute": {
          "id": "PP-D-sample1379",
          "invoice_id": "sample-bd73112377-6c0064",
          "shop_id": 0,
          "reason": "MERCHANDISE_OR_SERVICE_NOT_RECEIVED",
          "status": "WAITING_FOR_BUYER_RESPONSE",
          "outcome": null,
          "messages": [
            {
              "posted_by": "SELLER",
              "content": "Hello your order is completed",
              "created_at": 1641033844
            }
          ],
          "life_cycle_stage": "INQUIRY",
          "seller_response_due_date": 0,
          "created_at": 162857125819,
          "updated_at": 162857125819
        },
        "status_history": [
          {
            "id": 10726392,
            "invoice_id": "sample-3ddfc9dc3d-ab2e36",
            "status": "PENDING",
            "details": "The invoice has been created and we are now waiting to receive a payments.",
            "created_at": 1640777609
          },
          {
            "id": 10726409,
            "invoice_id": "sample-3ddfc9dc3d-ab2e36",
            "status": "COMPLETED",
            "details": "The invoice has been flagged as completed and the product has been shipped.",
            "created_at": 1640777796
          }
        ],
        "crypto_transactions": [
          {
            "crypto_amount": 0.014174,
            "hash": "234dB62Q3X9nyqussRSHW5x9rXe7NzyS3hLcwSTtzd9WLWfrHFUtX4KS6DAMyyHnvRgUNiqUvZdw2T9XWJqa8sPW",
            "confirmations": 1,
            "created_at": 1640777734,
            "updated_at": 1640777734
          }
        ],
        "gateways_available": [
          "PAYPAL",
          "STRIPE",
          "MONERO"
        ],
        "shop_paypal_credit_card": true,
        "shop_force_paypal_email_delivery": true,
        "product": {
          "id": 0,
          "uniqid": "sample29a0e39d",
          "shop_id": 0,
          "type": "SUBSCRIPTION",
          "subtype": null,
          "title": "Digital good to download",
          "currency": "EUR",
          "price": 5,
          "price_display": 4.5,
          "description": "Product description",
          "image_attachment": null,
          "file_attachment": null,
          "volume_discounts": [
            {
              "type": "PERCENTAGE",
              "value": 5,
              "quantity": 10
            }
          ],
          "recurring_interval": "MONTH",
          "recurring_interval_count": 1,
          "trial_period": 0,
          "paypal_product_id": null,
          "paypal_plan_id": null,
          "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
          "quantity_min": 1,
          "quantity_max": -1,
          "quantity_warning": 0,
          "gateways": [
            "PAYPAL",
            "STRIPE",
            "BITCOIN"
          ],
          "custom_fields": [
            {
              "type": "checkbox",
              "name": "Read the ToS",
              "regex": null,
              "placeholder": null,
              "default": null,
              "required": false
            }
          ],
          "crypto_confirmations_needed": 3,
          "max_risk_level": 85,
          "block_vpn_proxies": true,
          "delivery_text": "Thank you for purchasing this subscription!",
          "service_text": "In order to get you services, please contact us at..",
          "stock_delimiter": ",",
          "stock": -1,
          "dynamic_webhook": null,
          "sort_priority": 1,
          "unlisted": false,
          "on_hold": false,
          "terms_of_service": null,
          "warranty": 86400,
          "warranty_text": "This warranty covers..",
          "private": false,
          "name": "Sellix",
          "image_name": null,
          "image_storage": null,
          "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
          "serials": [],
          "webhooks": [],
          "feedback": {
            "total": 10,
            "positive": 8,
            "neutral": 1,
            "negative": 0
          },
          "theme": "light",
          "dark_mode": 0,
          "average_score": 4.5,
          "sold_count": 5,
          "lex_payment_methods": [],
          "created_at": 162857125819,
          "updated_at": 162857125819,
          "updated_by": 0
        },
        "day_value": 29,
        "day": "Wed",
        "month": "Dec",
        "year": 2021,
        "created_at": 162857125819,
        "updated_at": 162857125819,
        "updated_by": 0
      },
      "product": {
        "id": 0,
        "uniqid": "sample29a0e39d",
        "shop_id": 0,
        "type": "SUBSCRIPTION",
        "subtype": null,
        "title": "Digital good to download",
        "currency": "EUR",
        "price": 5,
        "price_display": 4.5,
        "description": "Product description",
        "image_attachment": null,
        "file_attachment": null,
        "volume_discounts": [
          {
            "type": "PERCENTAGE",
            "value": 5,
            "quantity": 10
          }
        ],
        "recurring_interval": "MONTH",
        "recurring_interval_count": 1,
        "trial_period": 0,
        "paypal_product_id": null,
        "paypal_plan_id": null,
        "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
        "quantity_min": 1,
        "quantity_max": -1,
        "quantity_warning": 0,
        "gateways": [
          "PAYPAL",
          "STRIPE",
          "BITCOIN"
        ],
        "custom_fields": [
          {
            "type": "checkbox",
            "name": "Read the ToS",
            "regex": null,
            "placeholder": null,
            "default": null,
            "required": false
          }
        ],
        "crypto_confirmations_needed": 3,
        "max_risk_level": 85,
        "block_vpn_proxies": true,
        "delivery_text": "Thank you for purchasing this subscription!",
        "service_text": "In order to get you services, please contact us at..",
        "stock_delimiter": ",",
        "stock": -1,
        "dynamic_webhook": null,
        "sort_priority": 1,
        "unlisted": false,
        "on_hold": false,
        "terms_of_service": null,
        "warranty": 86400,
        "warranty_text": "This warranty covers..",
        "private": false,
        "name": "Sellix",
        "image_name": null,
        "image_storage": null,
        "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
        "serials": [],
        "webhooks": [],
        "feedback": {
          "total": 10,
          "positive": 8,
          "neutral": 1,
          "negative": 0
        },
        "theme": "light",
        "dark_mode": 0,
        "average_score": 4.5,
        "sold_count": 5,
        "lex_payment_methods": [],
        "created_at": 162857125819,
        "updated_at": 162857125819,
        "updated_by": 0
      }
    }
  },
  "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.

Parameters

page

integer

Page number for use in pagination.

Feedback list example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6
7  try {
8    $feedback_list = $sellix->get_feedback();
9  } catch (SellixException $e) {
10    echo $e->__toString();
11  }
12?>

Response

{
  "status": 200,
  "data": {
    "feedback": [
      {
        "id": 0,
        "uniqid": "sample-a0bb9d70a9-9e852a",
        "invoice_id": "sample-cc39109624-03b70b",
        "product_id": "samplea0bb9d70a9",
        "product_title": "Digital Good",
        "shop_id": 0,
        "message": "Nice product!",
        "reply": null,
        "score": 5,
        "appealed": false,
        "appeal_outcome": "NO_APPEAL_AVAILABLE|APPROVED|REJECTED",
        "created_at": 1589033981,
        "updated_at": 0,
        "blocked": false
      }
    ]
  },
  "message": null,
  "log": null,
  "error": null,
  "env": "production"
}

Reply Feedback

POST /feedback/reply/:uniqid
Replies to a Feedback.

Arguments

reply

string

REQUIRED

Desired reply to the feedback.

Feedback reply example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $feedback_uniqid = "<FEEDBACK_UNIQID>";
7  $feedback_payload = [
8    "reply" => "Testing reply"
9  ];
10
11  try {
12    $sellix->reply_feedback($feedback_uniqid, $feedback_payload);
13  } catch (SellixException $e) {
14    echo $e->__toString();
15  }
16?>

Reply Feedback Request

{
  "reply": "This is a feedback reply."
}

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Orders

Endpoints

GET /orders/:uniqid 
GET /orders
PUT /orders/update/:uniqid
POST /orders/replacement/:uniqid

Order Object

id

integer

ID of the resource.

uniqid

string

Unique ID of the resource, used as reference across the API.

recurring_billing_id

string

Unique ID of the recurring bill.

total

number

Total of the invoice in USD.

total_display

number

Total of the invoice in the product’s currency.

exchange_rate

number

Exchange rate between currency chosen and USD.

crypto_exchange_rate

number

Exchange rate between the cryptocurrency chosen (if any) and USD.

currency

string

Enum: "CAD", "HKD", "ISK", "PHP", "DKK", "HUF", "CZK", "GBP", "RON", "SEK", "IDR", "INR", "BRL", "RUB", "HRK", "JPY", "THB", "CHF", "EUR", "MYR", "BGN", "TRY", "CNY", "NOK", "NZD", "ZAR", "USD", "MXN", "SGD", "AUD", "ILS", "KRW", "PLN". Available currency.

product_variants

object

Key-Value object. Key is the product ID and value is the details of the variant chosen.

shop_id

integer

The shop ID to which this invoice belongs.

shop_image_name

string

Deprecated

shop_image_storage

string

Deprecated

cloudflare_image_id

string

New field containing the cloudflare image ID of this product, replaces image_attachment and image_name. Format https://imagedelivery.net/95QNzrEeP7RU5l5WdbyrKw// where variant_name can be shopItem, avatar, icon, imageAvatarFeedback, public, productImageCart.

name

string

Name of the merchant.

type

string

Enum: "PRODUCT", "SUBSCRIPTION", "PUBLIC_REST_API", "MONTHLY_BILL", "SHOPPING_CART", "PRODUCT_SUBSCRIPTION". Invoice type. For subscriptions, the invoice type is PRODUCT_SUBSCRIPTION as SUBSCRIPTION is reserved for Sellix-own plans.

customer_email

string

Email of the customer.

paypal_email_delivery

boolean

If true and gateway is PAYPAL, the product will be shipped to the PayPal email on record instead of the customer email.

product_id

string

Unique ID of the product linked to this invoice, if any.

product_title

string

Product title.

product_type

string

Enum: "SERIALS", "FILE", "SERVICE", "DYNAMIC", "INFO_CARD", "SUBSCRIPTION". Product type.

subtype

string

Enum: "SERIALS", "FILE", "SERVICE", "DYNAMIC". Product subtype, set only with product_type SUBSCRIPTION.

subscription_id

integer

Field reserved for Sellix-own plans. Unique ID of the subscription purchased.

subscription_time

integer

Field reserved for Sellix-own plans. Time, in seconds, of the subscription purchased.

gateway

string

Enum: "PAYPAL", "STRIPE", "SKRILL", "PERFECT_MONEY", "CASH_APP", "SOLANA", "RIPPLE", "BITCOIN", "ETHEREUM", "LITECOIN", "TRON", "BITCOIN_CASH", "BINANCE_COIN", "MONERO", "BITCOIN_LN", "CONCORDIUM", "APE", "DOGE", "SHIB", "PEPE", "DAI", "NANO", "POLYGON", "PLZ:TRC20", "PLZ:BEP20", "USDC:MATIC", "USDT:MATIC", "USDC:ERC20", "USDC:BEP20", "USDT:ERC20", "USDT:TRC20", "USDT:BEP20", "CRONOS". Gateway chosen for this invoice. If null, the customer will be asked for a gateway in the Sellix hosted invoice page.

paypal_apm

string

PayPal Alternative Payment Method name, such as iDEAL, used if gateway is PAYPAL.

paypal_email

string

Deprecated

paypal_order_id

string

This field contains the PayPal order ID.

paypal_fee

string

This field is updated after the invoice is completed with the fee taken by PayPal over the invoice total.

paypal_payer_email

string

This field is updated after the invoice is completed with the PayPal's email used for the purchase.

paypal_subscription_id

integer

ID of the paypal subscription.

paypal_subscription_link

string

Link for the merchant to purchase the subscription from.

lex_order_id

string

Deprecated

lex_payment_method

string

Deprecated

stripe_client_secret

string

Client secret used to create the STRIPE paymentIntent.

stripe_price_id

string

If the invoice type is PRODUCT_SUBSCRIPTION or SUBSCRIPTION, refers to the STRIPE price ID.

skrill_email

string

Merchant Skrill email.

skrill_sid

string

Skrill unique ID linked to the invoice.

skrill_link

string

Skrill link to redirect the customer to.

perfectmoney_id

string

PerfectMoney payments ID linked to the invoice.

crypto_address

string

Cryptocurrency address linked to this invoice.

crypto_amount

number

Cryptocurrency amount converted based on crypto_exchange_rate.

crypto_received

number

Cryptocurrency amount received, paid by the customer.

crypto_uri

string

URI used to create the QRCODE.

crypto_confirmations_needed

integer

Crypto confirmations needed to process the invoice.

crypto_scheduled_payout

boolean

If true, a scheduled payout for this invoice's cryptocurrency address has been sent.

crypto_payout

boolean

If true, an instant payout for this invoice's cryptocurrency address has been sent.

fee_billed

boolean

If true, the Sellix fee_percentage has already been collected.

bill_info

object

If invoice type is MONTHLY_BILL, contains a breakdown of the fees that need to be collected.

cashapp_qrcode

string

Full CashApp QRCODE string.

cashapp_cashtag

string

CashApp cashtag used to create the QRCODE.

cashapp_note

string

Unique note for the customer to leave in the CashApp payments.

country

string

Customer country.

location

string

Customer location.

ip

string

Customer IP.

is_vpn_or_proxy

boolean

If true, a VPN or Proxy has been detected.

user_agent

string

Customer User Agent.

quantity

integer

Quantity of product purchased.

coupon_id

string

Unique ID of the coupon, if used, for the discount.

custom_fields

object

key-value JSON having as key the custom field name and as value the custom field value inserted by the customer. Custom fields can both be used as inputs from the customers but also as metadata for invoices, letting you pass hidden fields for internal referencing.

developer_invoice

boolean

If true, this invoice has been created through the Developers API.

developer_title

string

If a product_id is not passed through the Developers API, a title must be specified.

developer_webhook

string

Additional webhook URL to which updates regarding this invoice will be sent.

developer_return_url

string

If present, the customer will be redirected to this URL after the invoice has been paid.

status

string

Enum: "PENDING", "COMPLETED", "VOIDED", "WAITING_FOR_CONFIRMATIONS", "PARTIAL", "CUSTOMER_DISPUTE_ONGOING", "REVERSED", "REFUNDED", "WAITING_SHOP_ACTION", "PROCESSING". Status of the invoice.

status_details

string

Value: "CART_PARTIAL_OUT_OF_STOCK". If CART_PARTIAL_OUT_OF_STOCK, the invoice has been completed but some products in the cart were out of stock.

void_details

string

Enum: "PRODUCT_SOLD_OUT", "CART_PRODUCTS_SOLD_OUT". If the invoice is VOIDED and the product (or all the products in the cart) were out of stock, this additional status is set.

discount

number

If a coupon or volume_discount is used, the discount value presents the total amount of discount over the total cost of the invoice.

fee_percentage

integer

What cut does Sellix take out of the total. To learn more about Sellix fees please refer to https://sellix.io/fees.

ip_info

object

Additional info on the customer IP.

serials

strings

If product type is SERIALS, provide the serials linked to this invoice.

file

object

Can be NULL, info of the file linked with this invoice.

service_text

string

If the product type is SERVICE, this field contains additional details on the type of service provided by the merchant.

dynamic_response

string

If the product type is DYNAMIC, this field contains the response from the webhook sent to get the product.

webhooks

objects

Webhook responses for this invoice.

crypto_payout_transaction

object

Can be NULL, contains info about the payout transaction.

paypal_dispute

object

Information related to the dispute (if any) opened on this order.

status_history

objects

Additional details on the invoice status change.

crypto_transactions

objects

Crypto transactions received to fulfill this invoice.

gateways_available

strings

gateways available for the update invoice Developers API.

shop_paypal_credit_card

boolean

If true, the merchant has enabled purchase with Credit Card through PayPal.

shop_force_paypal_email_delivery

boolean

If true, the merchant has enabled invoice shipment to the PayPal customer email.

product

object

Contains the full product object for this feedback.

day_value

integer

Deprecated

day

string

Deprecated

month

string

Deprecated

year

integer

Deprecated

created_at

integer

Creation date of the order.

updated_at

integer

Date, available if the blacklist has been edited.

updated_by

integer

User ID, available if the blacklist has been edited.
Status
PENDINGCOMPLETEDVOIDEDWAITING_FOR_CONFIRMATIONSPARTIALREFUNDEDREVERSEDCUSTOMER_DISPUTE_ONGOING
History Status
REFUNDEDPAYMENT_CAPTURE_COMPLETEDPAYMENT_CAPTURE_DENIEDPARTIALCUSTOMER_DISPUTE_RESOLVEDPENDINGPAYMENT_CAPTURE_REFUNDEDCOMPLETEDPAYMENT_CAPTURE_REVERSEDVOIDEDPAYMENT_CAPTURE_PENDINGWAITING_FOR_CONFIRMATIONSPAYMENT_AUTHORIZATION_CREATEDCUSTOMER_DISPUTE_ONGOINGCHECKOUT_ORDER_APPROVEDPAYMENT_AUTHORIZATION_VOIDEDCHECKOUT_ORDER_COMPLETEDCUSTOMER_DISPUTE_UPDATEDCUSTOMER_DISPUTE_CREATED

The Order Object

{
  "id": 0,
  "uniqid": "sample-3ddfc9dc3d-ab2e36",
  "recurring_billing_id": null,
  "total": 2.5,
  "total_display": 2,
  "exchange_rate": 1.12,
  "crypto_exchange_rate": 176.38,
  "currency": "EUR",
  "shop_id": 0,
  "shop_image_name": null,
  "shop_image_storage": null,
  "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
  "name": "Sellix",
  "type": "PRODUCT",
  "customer_email": "customer@gmail.com",
  "paypal_email_delivery": false,
  "product_variants": {
    "6300ae0a660b0": {
      "price": 4,
      "title": "1 day license",
      "description": "example"
    }
  },
  "product_id": "sample2bde8a50",
  "product_title": "Digital Good",
  "product_type": "SERIALS",
  "subtype": null,
  "subscription_id": null,
  "subscription_time": null,
  "gateway": "SOLANA",
  "paypal_apm": null,
  "paypal_email": null,
  "paypal_order_id": null,
  "paypal_fee": null,
  "paypal_payer_email": null,
  "paypal_subscription_id": null,
  "paypal_subscription_link": null,
  "lex_order_id": null,
  "lex_payment_method": null,
  "paydash_paymentID": null,
  "stripe_client_secret": null,
  "stripe_price_id": null,
  "skrill_email": null,
  "skrill_sid": null,
  "skrill_link": null,
  "perfectmoney_id": null,
  "crypto_address": "3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B",
  "crypto_amount": 0.014174,
  "crypto_received": 0.014174,
  "crypto_uri": "solana:3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B?amount=0.014174",
  "crypto_confirmations_needed": 1,
  "crypto_scheduled_payout": false,
  "crypto_payout": true,
  "fee_billed": true,
  "bill_info": null,
  "cashapp_qrcode": null,
  "cashapp_cashtag": null,
  "cashapp_note": null,
  "country": "IT",
  "location": "Bologna, Emilia-Romagna (Europe/Rome)",
  "ip": "255.11.12.255",
  "is_vpn_or_proxy": false,
  "user_agent": "PostmanRuntime/7.26.8",
  "quantity": 5,
  "coupon_id": null,
  "custom_fields": {
    "username": "sellix-user"
  },
  "developer_invoice": false,
  "developer_title": null,
  "developer_webhook": null,
  "developer_return_url": null,
  "status": "COMPLETED",
  "status_details": null,
  "void_details": null,
  "discount": 0,
  "fee_percentage": 5,
  "ip_info": {
    "success": true,
    "message": "Success",
    "fraud_score": 25,
    "country_code": "IT",
    "region": "Emilia Romagna",
    "city": "Bologna",
    "ISP": "Telecom TIM",
    "ASN": 308172,
    "operating_system": "Mac 10.16",
    "browser": "Chrome 96.0",
    "organization": "Telecom TIM",
    "is_crawler": false,
    "timezone": "Europe/Rome",
    "mobile": false,
    "host": "cust.vodafonedsl.it",
    "proxy": false,
    "vpn": false,
    "tor": false,
    "active_vpn": false,
    "active_tor": false,
    "device_brand": "Apple",
    "device_model": "N/A",
    "recent_abuse": false,
    "bot_status": false,
    "connection_type": "Residential",
    "abuse_velocity": "none",
    "zip_code": "N/A",
    "latitude": 1,
    "longitude": 2,
    "request_id": "sampleN0vmX"
  },
  "serials": [
    "activation-key-#1",
    "activation-key-#2",
    "activation-key-#3"
  ],
  "file": {
    "id": 0,
    "uniqid": "sampled79fe5041d379dde2abd180e8cd748bf336d724aa2fc13441646d",
    "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
    "storage": null,
    "name": "sampled79fe5041d379dde2abd180e8cd748bf336d724aa2fc13441646d.jpg",
    "original_name": "Photo of a pineapple.",
    "extension": "jpg",
    "shop_id": 0,
    "size": 19391,
    "created_at": 1640777744
  },
  "service_text": null,
  "dynamic_response": null,
  "webhooks": [
    {
      "uniqid": "sample079ee22",
      "url": "https://dev.sellix.io/v1/webhook",
      "event": "order:paid",
      "retries": 1,
      "response_code": 200,
      "created_at": 1640777735,
      "payload": "{\"sample\":\"sellix\"}",
      "response": "webhook response"
    }
  ],
  "crypto_payout_transaction": {
    "to_address": "EqsYv2S6pFXaMBrZ9uZe4F6g32HTgvhPuucRHYpGURx1",
    "from_address": "3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B",
    "crypto_amount": 0.0134553,
    "hash": "4tE8KM2qwzxnMdjJxp419mPRViE9Nv3FvhqBphZS7i2ripj6aCwCosRYfACeCCm8kks7nmHtvoV1uDwvNejJhB2P",
    "created_at": 1640777744
  },
  "paypal_dispute": {
    "id": "PP-D-sample1379",
    "invoice_id": "sample-bd73112377-6c0064",
    "shop_id": 0,
    "reason": "MERCHANDISE_OR_SERVICE_NOT_RECEIVED",
    "status": "WAITING_FOR_BUYER_RESPONSE",
    "outcome": null,
    "messages": [
      {
        "posted_by": "SELLER",
        "content": "Hello your order is completed",
        "created_at": 1641033844
      }
    ],
    "life_cycle_stage": "INQUIRY",
    "seller_response_due_date": 0,
    "created_at": 162857125819,
    "updated_at": 162857125819
  },
  "status_history": [
    {
      "id": 10726392,
      "invoice_id": "sample-3ddfc9dc3d-ab2e36",
      "status": "PENDING",
      "details": "The invoice has been created and we are now waiting to receive a payment.",
      "created_at": 1640777609
    },
    {
      "id": 10726409,
      "invoice_id": "sample-3ddfc9dc3d-ab2e36",
      "status": "COMPLETED",
      "details": "The invoice has been flagged as completed and the product has been shipped.",
      "created_at": 1640777796
    }
  ],
  "crypto_transactions": [
    {
      "crypto_amount": 0.014174,
      "hash": "234dB62Q3X9nyqussRSHW5x9rXe7NzyS3hLcwSTtzd9WLWfrHFUtX4KS6DAMyyHnvRgUNiqUvZdw2T9XWJqa8sPW",
      "confirmations": 1,
      "created_at": 1640777734,
      "updated_at": 1640777734
    }
  ],
  "gateways_available": [
    "PAYPAL",
    "STRIPE",
    "MONERO"
  ],
  "shop_paypal_credit_card": true,
  "shop_force_paypal_email_delivery": true,
  "product": {
    "id": 0,
    "uniqid": "sample29a0e39d",
    "shop_id": 0,
    "type": "SUBSCRIPTION",
    "subtype": null,
    "title": "Digital good to download",
    "currency": "EUR",
    "price": 5,
    "price_display": 4.5,
    "description": "Product description",
    "image_attachment": null,
    "file_attachment": null,
    "volume_discounts": [
      {
        "type": "PERCENTAGE",
        "value": 5,
        "quantity": 10
      }
    ],
    "recurring_interval": "MONTH",
    "recurring_interval_count": 1,
    "trial_period": 0,
    "paypal_product_id": null,
    "paypal_plan_id": null,
    "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
    "quantity_min": 1,
    "quantity_max": -1,
    "quantity_warning": 0,
    "gateways": [
      "PAYPAL",
      "STRIPE",
      "BITCOIN"
    ],
    "custom_fields": [
      {
        "type": "checkbox",
        "name": "Read the ToS",
        "regex": null,
        "placeholder": null,
        "default": null,
        "required": false
      }
    ],
    "crypto_confirmations_needed": 3,
    "max_risk_level": 85,
    "block_vpn_proxies": true,
    "delivery_text": "Thank you for purchasing this subscription!",
    "service_text": "In order to get you services, please contact us at..",
    "stock_delimiter": ",",
    "stock": -1,
    "dynamic_webhook": null,
    "sort_priority": 1,
    "unlisted": false,
    "on_hold": false,
    "terms_of_service": null,
    "warranty": 86400,
    "warranty_text": "This warranty covers..",
    "private": false,
    "name": "Sellix",
    "image_name": null,
    "image_storage": null,
    "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
    "serials": [],
    "webhooks": [],
    "feedback": {
      "total": 10,
      "positive": 8,
      "neutral": 1,
      "negative": 0
    },
    "theme": "light",
    "dark_mode": 0,
    "average_score": 4.5,
    "sold_count": 5,
    "lex_payment_methods": [],
    "created_at": 162857125819,
    "updated_at": 162857125819,
    "updated_by": 0
  },
  "day_value": 29,
  "day": "Wed",
  "month": "Dec",
  "year": 2021,
  "created_at": 162857125819,
  "updated_at": 162857125819,
  "updated_by": 0
}

Get an Order

GET /orders/:uniqid
Retrieves an Order by Uniqid.

Order view example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $order_uniqid = "<ORDER_UNIQID>";
7
8  try {
9    $order = $sellix->get_order($order_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": {
    "order": {
      "id": 0,
      "uniqid": "sample-3ddfc9dc3d-ab2e36",
      "recurring_billing_id": null,
      "total": 2.5,
      "total_display": 2,
      "exchange_rate": 1.12,
      "crypto_exchange_rate": 176.38,
      "currency": "EUR",
      "product_variants": {
        "6300ae0a660b0": {
          "price": 4,
          "title": "1 day license",
          "description": "example"
        }
      },
      "shop_id": 0,
      "shop_image_name": null,
      "shop_image_storage": null,
      "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
      "name": "Sellix",
      "type": "PRODUCT",
      "customer_email": "customer@gmail.com",
      "paypal_email_delivery": false,
      "product_id": "sample2bde8a50",
      "product_title": "Digital Good",
      "product_type": "SERIALS",
      "subtype": null,
      "subscription_id": null,
      "subscription_time": null,
      "gateway": "SOLANA",
      "paypal_apm": null,
      "paypal_email": null,
      "paypal_order_id": null,
      "paypal_fee": null,
      "paypal_payer_email": null,
      "paypal_subscription_id": null,
      "paypal_subscription_link": null,
      "lex_order_id": null,
      "lex_payment_method": null,
      "paydash_paymentID": null,
      "stripe_client_secret": null,
      "stripe_price_id": null,
      "skrill_email": null,
      "skrill_sid": null,
      "skrill_link": null,
      "perfectmoney_id": null,
      "crypto_address": "3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B",
      "crypto_amount": 0.014174,
      "crypto_received": 0.014174,
      "crypto_uri": "solana:3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B?amount=0.014174",
      "crypto_confirmations_needed": 1,
      "crypto_scheduled_payout": false,
      "crypto_payout": true,
      "fee_billed": true,
      "bill_info": null,
      "cashapp_qrcode": null,
      "cashapp_cashtag": null,
      "cashapp_note": null,
      "country": "IT",
      "location": "Bologna, Emilia-Romagna (Europe/Rome)",
      "ip": "255.11.12.255",
      "is_vpn_or_proxy": false,
      "user_agent": "PostmanRuntime/7.26.8",
      "quantity": 5,
      "coupon_id": null,
      "custom_fields": {
        "username": "sellix-user"
      },
      "developer_invoice": false,
      "developer_title": null,
      "developer_webhook": null,
      "developer_return_url": null,
      "status": "COMPLETED",
      "status_details": null,
      "void_details": null,
      "discount": 0,
      "fee_percentage": 5,
      "ip_info": {
        "success": true,
        "message": "Success",
        "fraud_score": 25,
        "country_code": "IT",
        "region": "Emilia Romagna",
        "city": "Bologna",
        "ISP": "Telecom TIM",
        "ASN": 308172,
        "operating_system": "Mac 10.16",
        "browser": "Chrome 96.0",
        "organization": "Telecom TIM",
        "is_crawler": false,
        "timezone": "Europe/Rome",
        "mobile": false,
        "host": "cust.vodafonedsl.it",
        "proxy": false,
        "vpn": false,
        "tor": false,
        "active_vpn": false,
        "active_tor": false,
        "device_brand": "Apple",
        "device_model": "N/A",
        "recent_abuse": false,
        "bot_status": false,
        "connection_type": "Residential",
        "abuse_velocity": "none",
        "zip_code": "N/A",
        "latitude": 1,
        "longitude": 2,
        "request_id": "sampleN0vmX"
      },
      "serials": [
        "activation-key-#1",
        "activation-key-#2",
        "activation-key-#3"
      ],
      "file": {
        "id": 0,
        "uniqid": "sampled79fe5041d379dde2abd180e8cd748bf336d724aa2fc13441646d",
        "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
        "storage": null,
        "name": "sampled79fe5041d379dde2abd180e8cd748bf336d724aa2fc13441646d.jpg",
        "original_name": "Photo of a pineapple.",
        "extension": "jpg",
        "shop_id": 0,
        "size": 19391,
        "created_at": 1640777744
      },
      "service_text": null,
      "dynamic_response": null,
      "webhooks": [
        {
          "uniqid": "sample079ee22",
          "url": "https://dev.sellix.io/v1/webhook",
          "event": "order:paid",
          "retries": 1,
          "response_code": 200,
          "created_at": 1640777735,
          "payload": "{\"sample\":\"sellix\"}",
          "response": "webhook response"
        }
      ],
      "crypto_payout_transaction": {
        "to_address": "EqsYv2S6pFXaMBrZ9uZe4F6g32HTgvhPuucRHYpGURx1",
        "from_address": "3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B",
        "crypto_amount": 0.0134553,
        "hash": "4tE8KM2qwzxnMdjJxp419mPRViE9Nv3FvhqBphZS7i2ripj6aCwCosRYfACeCCm8kks7nmHtvoV1uDwvNejJhB2P",
        "created_at": 1640777744
      },
      "paypal_dispute": {
        "id": "PP-D-sample1379",
        "invoice_id": "sample-bd73112377-6c0064",
        "shop_id": 0,
        "reason": "MERCHANDISE_OR_SERVICE_NOT_RECEIVED",
        "status": "WAITING_FOR_BUYER_RESPONSE",
        "outcome": null,
        "messages": [
          {
            "posted_by": "SELLER",
            "content": "Hello your order is completed",
            "created_at": 1641033844
          }
        ],
        "life_cycle_stage": "INQUIRY",
        "seller_response_due_date": 0,
        "created_at": 162857125819,
        "updated_at": 162857125819
      },
      "status_history": [
        {
          "id": 10726392,
          "invoice_id": "sample-3ddfc9dc3d-ab2e36",
          "status": "PENDING",
          "details": "The invoice has been created and we are now waiting to receive a payment.",
          "created_at": 1640777609
        },
        {
          "id": 10726409,
          "invoice_id": "sample-3ddfc9dc3d-ab2e36",
          "status": "COMPLETED",
          "details": "The invoice has been flagged as completed and the product has been shipped.",
          "created_at": 1640777796
        }
      ],
      "crypto_transactions": [
        {
          "crypto_amount": 0.014174,
          "hash": "234dB62Q3X9nyqussRSHW5x9rXe7NzyS3hLcwSTtzd9WLWfrHFUtX4KS6DAMyyHnvRgUNiqUvZdw2T9XWJqa8sPW",
          "confirmations": 1,
          "created_at": 1640777734,
          "updated_at": 1640777734
        }
      ],
      "gateways_available": [
        "PAYPAL",
        "STRIPE",
        "MONERO"
      ],
      "shop_paypal_credit_card": true,
      "shop_force_paypal_email_delivery": true,
      "product": {
        "id": 0,
        "uniqid": "sample29a0e39d",
        "shop_id": 0,
        "type": "SUBSCRIPTION",
        "subtype": null,
        "title": "Digital good to download",
        "currency": "EUR",
        "price": 5,
        "price_display": 4.5,
        "description": "Product description",
        "image_attachment": null,
        "file_attachment": null,
        "volume_discounts": [
          {
            "type": "PERCENTAGE",
            "value": 5,
            "quantity": 10
          }
        ],
        "recurring_interval": "MONTH",
        "recurring_interval_count": 1,
        "trial_period": 0,
        "paypal_product_id": null,
        "paypal_plan_id": null,
        "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
        "quantity_min": 1,
        "quantity_max": -1,
        "quantity_warning": 0,
        "gateways": [
          "PAYPAL",
          "STRIPE",
          "BITCOIN"
        ],
        "custom_fields": [
          {
            "type": "checkbox",
            "name": "Read the ToS",
            "regex": null,
            "placeholder": null,
            "default": null,
            "required": false
          }
        ],
        "crypto_confirmations_needed": 3,
        "max_risk_level": 85,
        "block_vpn_proxies": true,
        "delivery_text": "Thank you for purchasing this subscription!",
        "service_text": "In order to get you services, please contact us at..",
        "stock_delimiter": ",",
        "stock": -1,
        "dynamic_webhook": null,
        "sort_priority": 1,
        "unlisted": false,
        "on_hold": false,
        "terms_of_service": null,
        "warranty": 86400,
        "warranty_text": "This warranty covers..",
        "private": false,
        "name": "Sellix",
        "image_name": null,
        "image_storage": null,
        "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
        "serials": [],
        "webhooks": [],
        "feedback": {
          "total": 10,
          "positive": 8,
          "neutral": 1,
          "negative": 0
        },
        "theme": "light",
        "dark_mode": 0,
        "average_score": 4.5,
        "sold_count": 5,
        "lex_payment_methods": [],
        "created_at": 162857125819,
        "updated_at": 162857125819,
        "updated_by": 0
      },
      "day_value": 29,
      "day": "Wed",
      "month": "Dec",
      "year": 2021,
      "created_at": 162857125819,
      "updated_at": 162857125819,
      "updated_by": 0
    }
  },
  "message": null,
  "log": null,
  "error": null,
  "env": "production"
}

Update Order

PUT /orders/update/:uniqid
Update the invoice object after it's been created. You can change the gateway or other customer information.

Arguments

gateways

strings

Items Enum: "PAYPAL", "STRIPE", "SKRILL", "PERFECT_MONEY", "CASH_APP", "SOLANA", "RIPPLE", "BITCOIN", "ETHEREUM", "LITECOIN", "TRON", "BITCOIN_CASH", "BINANCE_COIN", "MONERO", "BITCOIN_LN", "CONCORDIUM", "APE", "DOGE", "SHIB", "PEPE", "DAI", "NANO", "POLYGON", "PLZ:TRC20", "PLZ:BEP20", "USDC:MATIC", "USDT:MATIC", "USDC:ERC20", "USDC:BEP20", "USDT:ERC20", "USDT:TRC20", "USDT:BEP20", "CRONOS"

paypal_apm

string

Items Enum: "bancontact", "eps", "trustly", "mercado", "paylater", "sepa", "venmo", "blik", "giropay", "ideal", "mybank", "sofort", "przelewy24", "credit". If gateway is PAYPAL, a paypal_apm (PayPal Alternative Payment Method) can be specified. To retrieve the available PayPal APM for a specific customer session, please refer to the PayPal SDK using window.paypal.FUNDING and fundingSource to filter out available methods. You can also use our documentation on how to process white_label payments.

stripe_apm

string

Items Enum: "afterpay_clearpay", "alipay", "bancontact", "au_becs_debit", "boleto", "eps", "fpx", "giropay", "grabpay", "ideal", "klarna", "oxxo", "p24", "sofort", "wechat_pay". If gateway is STRIPE, a stripe_apm (Stripe Alternative Payment Method) can be specified.

name

string

If gateway is STRIPE, this refers to the name of the customer.

surname

string

If gateway is STRIPE, this refers to the surname of the customer.

address_line1

string

If gateway is STRIPE, this refers to the street address of the customer. E.g. Via del Monte 1

address_postal_code

string

If gateway is STRIPE, this refers to the postal code of the customer. E.g. 40126

address_city

string

If gateway is STRIPE, this refers to the city name of the customer. E.g. Bologna

address_state

string

If gateway is STRIPE, this refers to the state of the customer. E.g. BO

address_country

string

If gateway is STRIPE, this refers to the country ISO2 code of the customer. E.g. IT

Order update example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $order_uniqid = "<ORDER_UNIQID>";
7  $order_payload = [
8    "gateways" => "STRIPE",
9    "stripe_apm" => "ideal"
10  ];
11
12  try {
13    $sellix->update_order($order_uniqid, $order_payload);
14  } catch (SellixException $e) {
15    echo $e->__toString();
16  }
17?>

Response

{
  "status": 200,
  "data": {
    "order": {
      "id": 0,
      "uniqid": "sample-3ddfc9dc3d-ab2e36",
      "recurring_billing_id": null,
      "total": 2.5,
      "total_display": 2,
      "exchange_rate": 1.12,
      "crypto_exchange_rate": 176.38,
      "currency": "EUR",
      "shop_id": 0,
      "shop_image_name": null,
      "shop_image_storage": null,
      "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
      "name": "Sellix",
      "type": "PRODUCT",
      "customer_email": "customer@gmail.com",
      "paypal_email_delivery": false,
      "product_id": "sample2bde8a50",
      "product_title": "Digital Good",
      "product_type": "SERIALS",
      "product_variants": {
        "6300ae0a660b0": {
          "price": 4,
          "title": "1 day license",
          "description": "example"
        }
      },
      "subtype": null,
      "subscription_id": null,
      "subscription_time": null,
      "gateway": "SOLANA",
      "paypal_apm": null,
      "paypal_email": null,
      "paypal_order_id": null,
      "paypal_fee": null,
      "paypal_payer_email": null,
      "paypal_subscription_id": null,
      "paypal_subscription_link": null,
      "lex_order_id": null,
      "lex_payment_method": null,
      "paydash_paymentID": null,
      "stripe_client_secret": null,
      "stripe_price_id": null,
      "skrill_email": null,
      "skrill_sid": null,
      "skrill_link": null,
      "perfectmoney_id": null,
      "crypto_address": "3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B",
      "crypto_amount": 0.014174,
      "crypto_received": 0.014174,
      "crypto_uri": "solana:3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B?amount=0.014174",
      "crypto_confirmations_needed": 1,
      "crypto_scheduled_payout": false,
      "crypto_payout": true,
      "fee_billed": true,
      "bill_info": null,
      "cashapp_qrcode": null,
      "cashapp_cashtag": null,
      "cashapp_note": null,
      "country": "IT",
      "location": "Bologna, Emilia-Romagna (Europe/Rome)",
      "ip": "255.11.12.255",
      "is_vpn_or_proxy": false,
      "user_agent": "PostmanRuntime/7.26.8",
      "quantity": 5,
      "coupon_id": null,
      "custom_fields": {
        "username": "sellix-user"
      },
      "developer_invoice": false,
      "developer_title": null,
      "developer_webhook": null,
      "developer_return_url": null,
      "status": "COMPLETED",
      "status_details": null,
      "void_details": null,
      "discount": 0,
      "fee_percentage": 5,
      "ip_info": {
        "success": true,
        "message": "Success",
        "fraud_score": 25,
        "country_code": "IT",
        "region": "Emilia Romagna",
        "city": "Bologna",
        "ISP": "Telecom TIM",
        "ASN": 308172,
        "operating_system": "Mac 10.16",
        "browser": "Chrome 96.0",
        "organization": "Telecom TIM",
        "is_crawler": false,
        "timezone": "Europe/Rome",
        "mobile": false,
        "host": "cust.vodafonedsl.it",
        "proxy": false,
        "vpn": false,
        "tor": false,
        "active_vpn": false,
        "active_tor": false,
        "device_brand": "Apple",
        "device_model": "N/A",
        "recent_abuse": false,
        "bot_status": false,
        "connection_type": "Residential",
        "abuse_velocity": "none",
        "zip_code": "N/A",
        "latitude": 1,
        "longitude": 2,
        "request_id": "sampleN0vmX"
      },
      "serials": [
        "activation-key-#1",
        "activation-key-#2",
        "activation-key-#3"
      ],
      "file": {
        "id": 0,
        "uniqid": "sampled79fe5041d379dde2abd180e8cd748bf336d724aa2fc13441646d",
        "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
        "storage": null,
        "name": "sampled79fe5041d379dde2abd180e8cd748bf336d724aa2fc13441646d.jpg",
        "original_name": "Photo of a pineapple.",
        "extension": "jpg",
        "shop_id": 0,
        "size": 19391,
        "created_at": 1640777744
      },
      "service_text": null,
      "dynamic_response": null,
      "webhooks": [
        {
          "uniqid": "sample079ee22",
          "url": "https://dev.sellix.io/v1/webhook",
          "event": "order:paid",
          "retries": 1,
          "response_code": 200,
          "created_at": 1640777735,
          "payload": "{\"sample\":\"sellix\"}",
          "response": "webhook response"
        }
      ],
      "crypto_payout_transaction": {
        "to_address": "EqsYv2S6pFXaMBrZ9uZe4F6g32HTgvhPuucRHYpGURx1",
        "from_address": "3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B",
        "crypto_amount": 0.0134553,
        "hash": "4tE8KM2qwzxnMdjJxp419mPRViE9Nv3FvhqBphZS7i2ripj6aCwCosRYfACeCCm8kks7nmHtvoV1uDwvNejJhB2P",
        "created_at": 1640777744
      },
      "paypal_dispute": {
        "id": "PP-D-sample1379",
        "invoice_id": "sample-bd73112377-6c0064",
        "shop_id": 0,
        "reason": "MERCHANDISE_OR_SERVICE_NOT_RECEIVED",
        "status": "WAITING_FOR_BUYER_RESPONSE",
        "outcome": null,
        "messages": [
          {
            "posted_by": "SELLER",
            "content": "Hello your order is completed",
            "created_at": 1641033844
          }
        ],
        "life_cycle_stage": "INQUIRY",
        "seller_response_due_date": 0,
        "created_at": 162857125819,
        "updated_at": 162857125819
      },
      "status_history": [
        {
          "id": 10726392,
          "invoice_id": "sample-3ddfc9dc3d-ab2e36",
          "status": "PENDING",
          "details": "The invoice has been created and we are now waiting to receive a payment.",
          "created_at": 1640777609
        },
        {
          "id": 10726409,
          "invoice_id": "sample-3ddfc9dc3d-ab2e36",
          "status": "COMPLETED",
          "details": "The invoice has been flagged as completed and the product has been shipped.",
          "created_at": 1640777796
        }
      ],
      "crypto_transactions": [
        {
          "crypto_amount": 0.014174,
          "hash": "234dB62Q3X9nyqussRSHW5x9rXe7NzyS3hLcwSTtzd9WLWfrHFUtX4KS6DAMyyHnvRgUNiqUvZdw2T9XWJqa8sPW",
          "confirmations": 1,
          "created_at": 1640777734,
          "updated_at": 1640777734
        }
      ],
      "gateways_available": [
        "PAYPAL",
        "STRIPE",
        "MONERO"
      ],
      "shop_paypal_credit_card": true,
      "shop_force_paypal_email_delivery": true,
      "product": {
        "id": 0,
        "uniqid": "sample29a0e39d",
        "shop_id": 0,
        "type": "SUBSCRIPTION",
        "subtype": null,
        "title": "Digital good to download",
        "currency": "EUR",
        "price": 5,
        "price_display": 4.5,
        "description": "Product description",
        "image_attachment": null,
        "file_attachment": null,
        "volume_discounts": [
          {
            "type": "PERCENTAGE",
            "value": 5,
            "quantity": 10
          }
        ],
        "recurring_interval": "MONTH",
        "recurring_interval_count": 1,
        "trial_period": 0,
        "paypal_product_id": null,
        "paypal_plan_id": null,
        "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
        "quantity_min": 1,
        "quantity_max": -1,
        "quantity_warning": 0,
        "gateways": [
          "PAYPAL",
          "STRIPE",
          "BITCOIN"
        ],
        "custom_fields": [
          {
            "type": "checkbox",
            "name": "Read the ToS",
            "regex": null,
            "placeholder": null,
            "default": null,
            "required": false
          }
        ],
        "crypto_confirmations_needed": 3,
        "max_risk_level": 85,
        "block_vpn_proxies": true,
        "delivery_text": "Thank you for purchasing this subscription!",
        "service_text": "In order to get you services, please contact us at..",
        "stock_delimiter": ",",
        "stock": -1,
        "dynamic_webhook": null,
        "sort_priority": 1,
        "unlisted": false,
        "on_hold": false,
        "terms_of_service": null,
        "warranty": 86400,
        "warranty_text": "This warranty covers..",
        "private": false,
        "name": "Sellix",
        "image_name": null,
        "image_storage": null,
        "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
        "serials": [],
        "webhooks": [],
        "feedback": {
          "total": 10,
          "positive": 8,
          "neutral": 1,
          "negative": 0
        },
        "theme": "light",
        "dark_mode": 0,
        "average_score": 4.5,
        "sold_count": 5,
        "lex_payment_methods": [],
        "created_at": 162857125819,
        "updated_at": 162857125819,
        "updated_by": 0
      },
      "day_value": 29,
      "day": "Wed",
      "month": "Dec",
      "year": 2021,
      "created_at": 162857125819,
      "updated_at": 162857125819,
      "updated_by": 0
    }
  },
  "message": null,
  "log": null,
  "error": null,
  "env": "production"
}

Issue Order Replacement

POST /orders/replacement/:uniqid
Returns a success or error message

Arguments

quantity

integer

If not passed, we will replace the full amount bought by the customer.

product_id

string

In case of a cart invoice, pass the product_id for which you want the replacement issued.

Order issue replacement example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $order_uniqid = "<ORDER_UNIQID>";
7
8  try {
9    $sellix->issue_order_replacement($order_uniqid, [
10      "quantity" => 1,
11      "product_id" => "demo"
12    ]);
13  } catch (SellixException $e) {
14    echo $e->__toString();
15  }
16?>

Response

{
  "status": 200,
  "data": null,
  "message": "Invoice Replacement Issued Successfully.",
  "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.

Parameters

page

integer

Page number for use in pagination.

Order list example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6
7  try {
8    $orders = $sellix->get_orders();
9  } catch (SellixException $e) {
10    echo $e->__toString();
11  }
12?>

Response

{
  "status": 200,
  "data": {
    "orders": [
      {
        "id": 0,
        "uniqid": "sample-3ddfc9dc3d-ab2e36",
        "recurring_billing_id": null,
        "total": 2.5,
        "total_display": 2,
        "exchange_rate": 1.12,
        "crypto_exchange_rate": 176.38,
        "currency": "EUR",
        "shop_id": 0,
        "shop_image_name": null,
        "shop_image_storage": null,
        "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
        "name": "Sellix",
        "type": "PRODUCT",
        "customer_email": "customer@gmail.com",
        "paypal_email_delivery": false,
        "product_id": "sample2bde8a50",
        "product_title": "Digital Good",
        "product_type": "SERIALS",
        "product_variants": {
          "6300ae0a660b0": {
            "price": 4,
            "title": "1 day license",
            "description": "example"
          }
        },
        "subtype": null,
        "subscription_id": null,
        "subscription_time": null,
        "gateway": "SOLANA",
        "paypal_apm": null,
        "paypal_email": null,
        "paypal_order_id": null,
        "paypal_fee": null,
        "paypal_payer_email": null,
        "paypal_subscription_id": null,
        "paypal_subscription_link": null,
        "lex_order_id": null,
        "lex_payment_method": null,
        "paydash_paymentID": null,
        "stripe_client_secret": null,
        "stripe_price_id": null,
        "skrill_email": null,
        "skrill_sid": null,
        "skrill_link": null,
        "perfectmoney_id": null,
        "crypto_address": "3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B",
        "crypto_amount": 0.014174,
        "crypto_received": 0.014174,
        "crypto_uri": "solana:3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B?amount=0.014174",
        "crypto_confirmations_needed": 1,
        "crypto_scheduled_payout": false,
        "crypto_payout": true,
        "fee_billed": true,
        "bill_info": null,
        "cashapp_qrcode": null,
        "cashapp_cashtag": null,
        "cashapp_note": null,
        "country": "IT",
        "location": "Bologna, Emilia-Romagna (Europe/Rome)",
        "ip": "255.11.12.255",
        "is_vpn_or_proxy": false,
        "user_agent": "PostmanRuntime/7.26.8",
        "quantity": 5,
        "coupon_id": null,
        "custom_fields": {
          "username": "sellix-user"
        },
        "developer_invoice": false,
        "developer_title": null,
        "developer_webhook": null,
        "developer_return_url": null,
        "status": "COMPLETED",
        "status_details": null,
        "void_details": null,
        "discount": 0,
        "fee_percentage": 5,
        "ip_info": {
          "success": true,
          "message": "Success",
          "fraud_score": 25,
          "country_code": "IT",
          "region": "Emilia Romagna",
          "city": "Bologna",
          "ISP": "Telecom TIM",
          "ASN": 308172,
          "operating_system": "Mac 10.16",
          "browser": "Chrome 96.0",
          "organization": "Telecom TIM",
          "is_crawler": false,
          "timezone": "Europe/Rome",
          "mobile": false,
          "host": "cust.vodafonedsl.it",
          "proxy": false,
          "vpn": false,
          "tor": false,
          "active_vpn": false,
          "active_tor": false,
          "device_brand": "Apple",
          "device_model": "N/A",
          "recent_abuse": false,
          "bot_status": false,
          "connection_type": "Residential",
          "abuse_velocity": "none",
          "zip_code": "N/A",
          "latitude": 1,
          "longitude": 2,
          "request_id": "sampleN0vmX"
        },
        "serials": [
          "activation-key-#1",
          "activation-key-#2",
          "activation-key-#3"
        ],
        "file": {
          "id": 0,
          "uniqid": "sampled79fe5041d379dde2abd180e8cd748bf336d724aa2fc13441646d",
          "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
          "storage": null,
          "name": "sampled79fe5041d379dde2abd180e8cd748bf336d724aa2fc13441646d.jpg",
          "original_name": "Photo of a pineapple.",
          "extension": "jpg",
          "shop_id": 0,
          "size": 19391,
          "created_at": 1640777744
        },
        "service_text": null,
        "dynamic_response": null,
        "webhooks": [
          {
            "uniqid": "sample079ee22",
            "url": "https://dev.sellix.io/v1/webhook",
            "event": "order:paid",
            "retries": 1,
            "response_code": 200,
            "created_at": 1640777735,
            "payload": "{\"sample\":\"sellix\"}",
            "response": "webhook response"
          }
        ],
        "crypto_payout_transaction": {
          "to_address": "EqsYv2S6pFXaMBrZ9uZe4F6g32HTgvhPuucRHYpGURx1",
          "from_address": "3RUx8gs74R5KdXrs8wU6Z2xQkS8jmGVCnTVTRpwSoE3B",
          "crypto_amount": 0.0134553,
          "hash": "4tE8KM2qwzxnMdjJxp419mPRViE9Nv3FvhqBphZS7i2ripj6aCwCosRYfACeCCm8kks7nmHtvoV1uDwvNejJhB2P",
          "created_at": 1640777744
        },
        "paypal_dispute": {
          "id": "PP-D-sample1379",
          "invoice_id": "sample-bd73112377-6c0064",
          "shop_id": 0,
          "reason": "MERCHANDISE_OR_SERVICE_NOT_RECEIVED",
          "status": "WAITING_FOR_BUYER_RESPONSE",
          "outcome": null,
          "messages": [
            {
              "posted_by": "SELLER",
              "content": "Hello your order is completed",
              "created_at": 1641033844
            }
          ],
          "life_cycle_stage": "INQUIRY",
          "seller_response_due_date": 0,
          "created_at": 162857125819,
          "updated_at": 162857125819
        },
        "status_history": [
          {
            "id": 10726392,
            "invoice_id": "sample-3ddfc9dc3d-ab2e36",
            "status": "PENDING",
            "details": "The invoice has been created and we are now waiting to receive a payment.",
            "created_at": 1640777609
          },
          {
            "id": 10726409,
            "invoice_id": "sample-3ddfc9dc3d-ab2e36",
            "status": "COMPLETED",
            "details": "The invoice has been flagged as completed and the product has been shipped.",
            "created_at": 1640777796
          }
        ],
        "crypto_transactions": [
          {
            "crypto_amount": 0.014174,
            "hash": "234dB62Q3X9nyqussRSHW5x9rXe7NzyS3hLcwSTtzd9WLWfrHFUtX4KS6DAMyyHnvRgUNiqUvZdw2T9XWJqa8sPW",
            "confirmations": 1,
            "created_at": 1640777734,
            "updated_at": 1640777734
          }
        ],
        "gateways_available": [
          "PAYPAL",
          "STRIPE",
          "MONERO"
        ],
        "shop_paypal_credit_card": true,
        "shop_force_paypal_email_delivery": true,
        "product": {
          "id": 0,
          "uniqid": "sample29a0e39d",
          "shop_id": 0,
          "type": "SUBSCRIPTION",
          "subtype": null,
          "title": "Digital good to download",
          "currency": "EUR",
          "price": 5,
          "price_display": 4.5,
          "description": "Product description",
          "image_attachment": null,
          "file_attachment": null,
          "volume_discounts": [
            {
              "type": "PERCENTAGE",
              "value": 5,
              "quantity": 10
            }
          ],
          "recurring_interval": "MONTH",
          "recurring_interval_count": 1,
          "trial_period": 0,
          "paypal_product_id": null,
          "paypal_plan_id": null,
          "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
          "quantity_min": 1,
          "quantity_max": -1,
          "quantity_warning": 0,
          "gateways": [
            "PAYPAL",
            "STRIPE",
            "BITCOIN"
          ],
          "custom_fields": [
            {
              "type": "checkbox",
              "name": "Read the ToS",
              "regex": null,
              "placeholder": null,
              "default": null,
              "required": false
            }
          ],
          "crypto_confirmations_needed": 3,
          "max_risk_level": 85,
          "block_vpn_proxies": true,
          "delivery_text": "Thank you for purchasing this subscription!",
          "service_text": "In order to get you services, please contact us at..",
          "stock_delimiter": ",",
          "stock": -1,
          "dynamic_webhook": null,
          "sort_priority": 1,
          "unlisted": false,
          "on_hold": false,
          "terms_of_service": null,
          "warranty": 86400,
          "warranty_text": "This warranty covers..",
          "private": false,
          "name": "Sellix",
          "image_name": null,
          "image_storage": null,
          "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
          "serials": [],
          "webhooks": [],
          "feedback": {
            "total": 10,
            "positive": 8,
            "neutral": 1,
            "negative": 0
          },
          "theme": "light",
          "dark_mode": 0,
          "average_score": 4.5,
          "sold_count": 5,
          "lex_payment_methods": [],
          "created_at": 162857125819,
          "updated_at": 162857125819,
          "updated_by": 0
        },
        "day_value": 29,
        "day": "Wed",
        "month": "Dec",
        "year": 2021,
        "created_at": 162857125819,
        "updated_at": 162857125819,
        "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_AMOUNTMERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBEDPAYMENT_BY_OTHER_MEANSUNAUTHORISEDCANCELED_RECURRING_BILLINGCREDIT_NOT_PROCESSEDPROBLEM_WITH_REMITTANCEDUPLICATE_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_REVIEWWAITING_FOR_BUYER_RESPONSERESOLVEDWAITING_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_BUYERRESOLVED_SELLER_FAVOURACCEPTEDRESOLVED_WITH_PAYOUTDENIEDNONE

Dispute Life 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
INQUIRYARBITRATIONCHARGEBACKPRE_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
BUYERARBITERSELLER

Products

Endpoints

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

Product Object

id

integer

ID of the resource

uniqid

string

Unique ID of the resource, used as reference across the API.

shop_id

integer

The shop ID to which this resource belongs.

type

string

Enum: "SERIALS", "FILE", "SERVICE", "DYNAMIC", "INFO_CARD", "SUBSCRIPTION". Product type.

subtype

string

Enum: "SERIALS", "FILE", "SERVICE", "DYNAMIC". Product subtype, can be used only with type SUBSCRIPTION.

title

string

Product title.

currency

string

Enum: "CAD", "HKD", "ISK", "PHP", "DKK", "HUF", "CZK", "GBP", "RON", "SEK", "IDR", "INR", "BRL", "RUB", "HRK", "JPY", "THB", "CHF", "EUR", "MYR", "BGN", "TRY", "CNY", "NOK", "NZD", "ZAR", "USD", "MXN", "SGD", "AUD", "ILS", "KRW", "PLN". Available currency.

price

number

Product price.

price_display

number

Product price in currency.

description

string

Product description.

image_attachment

string

Deprecated

file_attachment

string

Unique id of the file attachment for this product if the product type is FILE.

price_variants

objects

Array of price variants.

volume_discounts

objects

Array of volume discounts.

recurring_interval

string

Enum: "DAY", "WEEK", "MONTH", "YEAR". At which frequency the customer is billed for product type SUBSCRIPTION.

recurring_interval_count

integer

How many recurring_interval before the customer is billed for product type SUBSCRIPTION.

trial_period

integer

Defines a trial period before billing the customer for product type SUBSCRIPTION.

paypal_product_id

string

When a product SUBSCRIPTION is created and the gateway PAYPAL chosen, a PayPal product is automatically created on the connected account.

paypal_plan_id

string

When a product SUBSCRIPTION is created and the gateway PAYPAL chosen, a PayPal plan is automatically created on the connected account.

stripe_price_id

string

When a product SUBSCRIPTION is created and the gateway STRIPE chosen, a Stripe price is automatically created on the connected account.

quantity_min

integer

Minimum quantity purchasable of this product.

quantity_max

integer

Maximum quantity purchasable of this product.

quantity_warning

integer

At which product quantity should we send a webhook and email warning the merchant.

gateways

strings

Items Enum: "PAYPAL", "STRIPE", "SKRILL", "PERFECT_MONEY", "CASH_APP", "SOLANA", "RIPPLE", "BITCOIN", "ETHEREUM", "LITECOIN", "TRON", "BITCOIN_CASH", "BINANCE_COIN", "MONERO", "BITCOIN_LN", "CONCORDIUM", "APE", "DOGE", "SHIB", "PEPE", "DAI", "NANO", "POLYGON", "PLZ:TRC20", "PLZ:BEP20", "USDC:MATIC", "USDT:MATIC", "USDC:ERC20", "USDC:BEP20", "USDT:ERC20", "USDT:TRC20", "USDT:BEP20", "CRONOS"

custom_fields

objects

crypto_confirmations_needed

integer

Minimum number of confirmations for a crypto payments to be accepted.

max_risk_level

integer

For PAYPAL and STRIPE, maximum risk level to accept payments in order to block fraud attempts.

block_vpn_proxies

boolean

Block VPN and Proxy purchases if the gateway is PAYPAL or STRIPE.

delivery_text

string

Text sent to the customer after the purchase.

service_text

string

Text sent to the customer if product type is SERVICE.

stock_delimiter

string

How to delimit the stock if product type is SERIALS, for example with stock_delimiter "," and serials value first,second; the stock would have two different serials "first" and "second".

stock

integer

Stock of the current product, can be -1 for unlimited stock.

dynamic_webhook

string

Product webhook for prouct type DYNAMIC. We will send here a request for a COMPLETED invoice in order to get the product for the customer.

sort_priority

integer

Sort order of this product.

unlisted

boolean

If unlisted is true, the product is not shown in the storefront but can be bought through a direct link.

on_hold

boolean

If on_hold is true, the product cannot be bought but is shown in the storefront.

terms_of_service

string

Text containing the product's terms of service.

warranty

integer

Time, in seconds, of how much the warranty for this product lasts.

warranty_text

string

Clear explanation of what the warranty covers.

private

boolean

If private is true, the product is hidden on the storefront and cannot be bought with a direct link.

name

string

Name of the merchant who owns this product.

image_name

string

Deprecated

image_storage

string

Deprecated

cloudflare_image_id

string

New field containing the cloudflare image ID of this product, replaces image_attachment and image_name. Format https://imagedelivery.net/95QNzrEeP7RU5l5WdbyrKw// where variant_name can be shopItem, avatar, icon, imageAvatarFeedback, public, productImageCart.

serials (standard)

strings

Array of the serials in stock for this product.

serials (variants)

object

Key-Value object, Key is the variant title and Value is an array of the serials in stock for this product-variant configuration.

youtube_link

string

URL of a youtube video that will be displayed in the product page.

watermark_enabled

boolean

Whether or not the watermark_text will be displayed.

watermark_text

string

This text will be displayed over PDFs and images when the customer downloads them.

redirect_link

string

Redirect link string, the customer will be redirected to this link after purchase.

webhooks

strings

Array of the webhook URLs for this product.

feedback

object

theme

string

Enum: "dark", "light"

dark_mode

boolean

Enum: 1, 0

average_score

number

Average feedback score for this product.

sold_count

integer

How many times this product has been sold.

lex_payment_methods

strings

Deprecated

created_at

integer

Creation date of the product.

updated_at

integer

Date, available if the product has been edited.

updated_by

integer

User ID, available if the product has been edited.

The Product Object

{
  "id": 0,
  "uniqid": "sample29a0e39d",
  "shop_id": 0,
  "type": "SUBSCRIPTION",
  "subtype": null,
  "title": "Digital good to download",
  "currency": "EUR",
  "price": 5,
  "price_display": 4.5,
  "description": "Product description",
  "image_attachment": null,
  "file_attachment": null,
  "price_variants": [
    {
      "price": 4,
      "title": "1 day license",
      "description": "example",
      "stock": 0
    },
    {
      "price": 8,
      "title": "1 week license",
      "description": "sample 2",
      "stock": 12
    }
  ],
  "volume_discounts": [
    {
      "type": "PERCENTAGE",
      "value": 5,
      "quantity": 10
    }
  ],
  "recurring_interval": "MONTH",
  "recurring_interval_count": 1,
  "trial_period": 0,
  "paypal_product_id": null,
  "paypal_plan_id": null,
  "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
  "quantity_min": 1,
  "quantity_max": -1,
  "quantity_warning": 0,
  "gateways": [
    "PAYPAL",
    "STRIPE",
    "BITCOIN"
  ],
  "custom_fields": [
    {
      "type": "checkbox",
      "name": "Read the ToS",
      "regex": null,
      "placeholder": null,
      "default": null,
      "required": false
    }
  ],
  "crypto_confirmations_needed": 3,
  "max_risk_level": 85,
  "block_vpn_proxies": true,
  "delivery_text": "Thank you for purchasing this subscription!",
  "service_text": "In order to get you services, please contact us at..",
  "stock_delimiter": ",",
  "stock": -1,
  "dynamic_webhook": null,
  "sort_priority": 1,
  "unlisted": false,
  "on_hold": false,
  "terms_of_service": null,
  "warranty": 86400,
  "warranty_text": "This warranty covers..",
  "private": false,
  "name": "Sellix",
  "image_name": null,
  "image_storage": null,
  "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
  "serials": [],
  "webhooks": [],
  "feedback": {
    "total": 10,
    "positive": 8,
    "neutral": 1,
    "negative": 0
  },
  "youtube_link": "https://youtu.be/demo",
  "watermark_enabled": true,
  "watermark_text": "Watermark Store {{invoice.uniqid}}",
  "redirect_link": "https://redirect.me/here",
  "theme": "light",
  "dark_mode": 0,
  "average_score": 4.5,
  "sold_count": 5,
  "lex_payment_methods": [],
  "created_at": 162857125819,
  "updated_at": 162857125819,
  "updated_by": 0
}

Get a Product

GET /products/:uniqid
Retrieves a Product by Uniqid.

Product view example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $product_uniqid = "<PRODUCT_UNIQID>";
7
8  try {
9    $product = $sellix->get_product($product_uniqid)
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": {
    "product": {
      "id": 0,
      "uniqid": "sample29a0e39d",
      "shop_id": 0,
      "type": "SUBSCRIPTION",
      "subtype": null,
      "title": "Digital good to download",
      "currency": "EUR",
      "price": 5,
      "price_display": 4.5,
      "description": "Product description",
      "image_attachment": null,
      "file_attachment": null,
      "price_variants": [
        {
          "price": 4,
          "title": "1 day license",
          "description": "example",
          "stock": 0
        },
        {
          "price": 8,
          "title": "1 week license",
          "description": "sample 2",
          "stock": 12
        }
      ],
      "volume_discounts": [
        {
          "type": "PERCENTAGE",
          "value": 5,
          "quantity": 10
        }
      ],
      "recurring_interval": "MONTH",
      "recurring_interval_count": 1,
      "trial_period": 0,
      "paypal_product_id": null,
      "paypal_plan_id": null,
      "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
      "quantity_min": 1,
      "quantity_max": -1,
      "quantity_warning": 0,
      "gateways": [
        "PAYPAL",
        "STRIPE",
        "BITCOIN"
      ],
      "custom_fields": [
        {
          "type": "checkbox",
          "name": "Read the ToS",
          "regex": null,
          "placeholder": null,
          "default": null,
          "required": false
        }
      ],
      "crypto_confirmations_needed": 3,
      "max_risk_level": 85,
      "block_vpn_proxies": true,
      "delivery_text": "Thank you for purchasing this subscription!",
      "service_text": "In order to get you services, please contact us at..",
      "stock_delimiter": ",",
      "stock": -1,
      "dynamic_webhook": null,
      "sort_priority": 1,
      "unlisted": false,
      "on_hold": false,
      "terms_of_service": null,
      "warranty": 86400,
      "warranty_text": "This warranty covers..",
      "private": false,
      "name": "Sellix",
      "image_name": null,
      "image_storage": null,
      "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
      "serials": {
        "1 day license": [
          "demo",
          "serial",
          "wow",
          "this"
        ],
        "1 week license": [
          "wow2",
          "this2"
        ]
      },
      "youtube_link": "https://youtu.be/demo",
      "watermark_enabled": true,
      "watermark_text": "Watermark Store {{invoice.uniqid}}",
      "redirect_link": "https://redirect.me/here",
      "webhooks": [],
      "feedback": {
        "total": 10,
        "positive": 8,
        "neutral": 1,
        "negative": 0
      },
      "theme": "light",
      "dark_mode": 0,
      "average_score": 4.5,
      "sold_count": 5,
      "lex_payment_methods": [],
      "created_at": 162857125819,
      "updated_at": 162857125819,
      "updated_by": 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.

Parameters

page

integer

Page number for use in pagination.

Product list example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6
7  try {
8    $products = $sellix->get_products();
9  } catch (SellixException $e) {
10    echo $e->__toString();
11  }
12?>

Response

{
  "status": 200,
  "data": {
    "products": [
      {
        "id": 0,
        "uniqid": "sample29a0e39d",
        "shop_id": 0,
        "type": "SUBSCRIPTION",
        "subtype": null,
        "title": "Digital good to download",
        "currency": "EUR",
        "price": 5,
        "price_display": 4.5,
        "description": "Product description",
        "image_attachment": null,
        "file_attachment": null,
        "price_variants": [
          {
            "price": 4,
            "title": "1 day license",
            "description": "example"
          },
          {
            "price": 8,
            "title": "1 week license",
            "description": "sample 2"
          }
        ],
        "volume_discounts": [
          {
            "type": "PERCENTAGE",
            "value": 5,
            "quantity": 10
          }
        ],
        "recurring_interval": "MONTH",
        "recurring_interval_count": 1,
        "trial_period": 0,
        "paypal_product_id": null,
        "paypal_plan_id": null,
        "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
        "quantity_min": 1,
        "quantity_max": -1,
        "quantity_warning": 0,
        "gateways": [
          "PAYPAL",
          "STRIPE",
          "BITCOIN"
        ],
        "custom_fields": [
          {
            "type": "checkbox",
            "name": "Read the ToS",
            "regex": null,
            "placeholder": null,
            "default": null,
            "required": false
          }
        ],
        "crypto_confirmations_needed": 3,
        "max_risk_level": 85,
        "block_vpn_proxies": true,
        "delivery_text": "Thank you for purchasing this subscription!",
        "service_text": "In order to get you services, please contact us at..",
        "stock_delimiter": ",",
        "stock": -1,
        "dynamic_webhook": null,
        "sort_priority": 1,
        "unlisted": false,
        "on_hold": false,
        "terms_of_service": null,
        "warranty": 86400,
        "warranty_text": "This warranty covers..",
        "private": false,
        "name": "Sellix",
        "image_name": null,
        "image_storage": null,
        "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
        "serials": [],
        "youtube_link": "https://youtu.be/demo",
        "watermark_enabled": true,
        "watermark_text": "Watermark Store {{invoice.uniqid}}",
        "redirect_link": "https://redirect.me/here",
        "webhooks": [],
        "feedback": {
          "total": 10,
          "positive": 8,
          "neutral": 1,
          "negative": 0
        },
        "theme": "light",
        "dark_mode": 0,
        "average_score": 4.5,
        "sold_count": 5,
        "lex_payment_methods": [],
        "created_at": 162857125819,
        "updated_at": 162857125819,
        "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

Product title.

price

number

REQUIRED

Product price.

description

string

REQUIRED

Product description.

currency

string

Enum: "CAD", "HKD", "ISK", "PHP", "DKK", "HUF", "CZK", "G…", "ZAR", "USD", "MXN", "SGD", "AUD", "ILS", "KRW", "PLN". Available currency.

gateways

strings

Items Enum: "PAYPAL", "STRIPE", "SKRILL", "PERFECT_MONEY", "CASH_APP", "SOLANA", "RIPPLE", "BITCOIN", "ETHEREUM", "LITECOIN", "TRON", "BITCOIN_CASH", "BINANCE_COIN", "MONERO", "BITCOIN_LN", "CONCORDIUM", "APE", "DOGE", "SHIB", "PEPE", "DAI", "NANO", "POLYGON", "PLZ:TRC20", "PLZ:BEP20", "USDC:MATIC", "USDT:MATIC", "USDC:ERC20", "USDC:BEP20", "USDT:ERC20", "USDT:TRC20", "USDT:BEP20", "CRONOS"

type

string

REQUIRED

Enum: "SERIALS", "FILE", "SERVICE", "DYNAMIC", "INFO_CARD", "SUBSCRIPTION". Product type.

serials

strings

Array of the serials in stock for this product.

serials_remove_duplicates

boolean

Used for product type SERIALS. If true, we will check your previous serials sold as well as the stock you're trying to submit in order to remove any possible duplicate and avoid issues with your customers.

service_text

string

Text sent to the customer if product type is SERVICE.

stock

integer

Stock of the current product, can be -1 for unlimited stock.

dynamic_webhook

string

Product webhook for product type DYNAMIC. We will send here a request for a COMPLETED invoice in order to get the product for the customer.

stock_delimiter

string

How to delimit the stock if product type is SERIALS, for example with stock_delimiter "," and serials value first,second; the stock would have two different serials "first" and "second".

min_quantity

integer

Product minimum quantity

max_quantity

integer

Product maximum quantity

delivery_text

string

Text sent to the customer after the purchase.

custom_fields

object

key-value JSON having as key the custom field name and as value the custom field value inserted by the customer. Custom fields can both be used as inputs from the customers but also as metadata for invoices, letting you pass hidden fields for internal referencing.

crypto_confirmations_needed

integer

Minimum number of confirmations for a crypto payments to be accepted.

max_risk_level

integer

For PAYPAL and STRIPE, maximum risk level to accept payments in order to block fraud attempts.

unlisted

boolean

If unlisted is true, the product is not shown in the storefront but can be bought through a direct link.

private

boolean

If private is true, the product is hidden on the storefront and cannot be bought with a direct link.

block_vpn_proxies

boolean

Block VPN and Proxy purchases if the gateway is PAYPAL or STRIPE.

sort_priority

integer

Sort order of this product.

webhooks

strings

Array of the webhook URLs for this product.

on_hold

boolean

If on_hold is true, the product cannot be bought but is shown in the storefront.

terms_of_service

string

Text containing the product's terms of service.

warranty

integer

Time, in seconds, of how much the warranty for this product lasts.

warranty_text

string

Clear explanation of what the warranty covers.

remove_images

boolean

True to remove every product images.

remove_files

boolean

True to remove every product files.

volume_discounts

object

Array of volume discounts.

price_variants

objects

Array of price variants. If type is SERIALS, stock for the variant should be provided in this object.

recurring_interval

string

Enum: "DAY", "WEEK", "MONTH", "YEAR". At which frequency the customer is billed for product type SUBSCRIPTION.

recurring_interval_count

integer

How many recurring_interval before the customer is billed for product type SUBSCRIPTION.

trial_period

integer

Defines a trial period before billing the customer for product type SUBSCRIPTION.

youtube_link

string

URL of a youtube video that will be displayed in the product page.

watermark_enabled

boolean

Whether or not the watermark_text will be displayed.

watermark_text

string

This text will be displayed over PDFs and images when the customer downloads them.

redirect_link

string

Redirect link string, the customer will be redirected to this link after purchase.

Product create example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $product_payload = [
7    "title" => "Software Activation Keys",
8    "price" => 12.5,
9    "description" => "Product description example.",
10    "currency" => "EUR",
11    "gateways" => ["PAYPAL","STRIPE","BITCOIN"],
12    "type" => "SERIALS",
13    "serials" => [
14      "activation-key-#1"
15    ]
16  ];
17
18  try {
19    $product_uniqid = $sellix->create_product($product_payload);
20  } catch (SellixException $e) {
21    echo $e->__toString();
22  }
23?>

Create Product Request

{
  "title": "Software Activation Keys",
  "price": 12.5,
  "description": "Product description example.",
  "currency": "EUR",
  "gateways": [
    "PAYPAL",
    "STRIPE",
    "BITCOIN"
  ],
  "type": "SERIALS",
  "serials": [
    "activation-key-#1"
  ],
  "price_variants": [
    {
      "price": 4,
      "title": "1 day license",
      "description": "example",
      "serials": [
        "serial-1-for-product-variant-1"
      ]
    },
    {
      "price": 8,
      "title": "1 week license",
      "description": "sample 2",
      "stock": 12,
      "serials": [
        "serial-1-for-product-variant-2"
      ]
    }
  ],
  "serials_remove_duplicates": true,
  "service_text": null,
  "stock": null,
  "dynamic_webhook": null,
  "stock_delimiter": ",",
  "min_quantity": 1,
  "max_quantity": 150,
  "delivery_text": "Thank you for the purchase!",
  "custom_fields": null,
  "crypto_confirmations_needed": 3,
  "max_risk_level": 85,
  "unlisted": false,
  "private": false,
  "block_vpn_proxies": true,
  "sort_priority": 0,
  "webhooks": null,
  "on_hold": false,
  "terms_of_service": "ToS to be agreed upon purchase.",
  "warranty": 86400,
  "warranty_text": "Warranty description.",
  "youtube_link": "https://youtu.be/demo",
  "watermark_enabled": true,
  "watermark_text": "Watermark Store {{invoice.uniqid}}",
  "redirect_link": "https://redirect.me/here",
  "remove_images": false,
  "remove_files": false,
  "volume_discounts": null,
  "recurring_interval": null,
  "recurring_interval_count": null,
  "trial_period": null
}

Response

{
  "status": 200,
  "data": {
    "uniqid": "objectUniqid"
  },
  "message": "the request has succeeded",
  "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

REQUIRED

Product title.

price

number

REQUIRED

Product price.

description

string

REQUIRED

Product description.

currency

string

Enum: "CAD", "HKD", "ISK", "PHP", "DKK", "HUF", "CZK", "G…", "ZAR", "USD", "MXN", "SGD", "AUD", "ILS", "KRW", "PLN". Available currency.

gateways

strings

Items Enum: "PAYPAL", "STRIPE", "SKRILL", "PERFECT_MONEY", "CASH_APP", "SOLANA", "RIPPLE", "BITCOIN", "ETHEREUM", "LITECOIN", "TRON", "BITCOIN_CASH", "BINANCE_COIN", "MONERO", "BITCOIN_LN", "CONCORDIUM", "APE", "DOGE", "SHIB", "PEPE", "DAI", "NANO", "POLYGON", "PLZ:TRC20", "PLZ:BEP20", "USDC:MATIC", "USDT:MATIC", "USDC:ERC20", "USDC:BEP20", "USDT:ERC20", "USDT:TRC20", "USDT:BEP20", "CRONOS"

type

string

REQUIRED

Enum: "SERIALS", "FILE", "SERVICE", "DYNAMIC", "INFO_CARD", "SUBSCRIPTION". Product type.

serials

strings

Array of the serials in stock for this product.

serials_remove_duplicates

boolean

Used for product type SERIALS. If true, we will check your previous serials sold as well as the stock you're trying to submit in order to remove any possible duplicate and avoid issues with your customers.

service_text

string

Text sent to the customer if product type is SERVICE.

stock

integer

Stock of the current product, can be -1 for unlimited stock.

dynamic_webhook

string

Product webhook for product type DYNAMIC. We will send here a request for a COMPLETED invoice in order to get the product for the customer.

stock_delimiter

string

How to delimit the stock if product type is SERIALS, for example with stock_delimiter "," and serials value first,second; the stock would have two different serials "first" and "second".

min_quantity

integer

Product minimum quantity

max_quantity

integer

Product maximum quantity

delivery_text

string

Text sent to the customer after the purchase.

custom_fields

object

key-value JSON having as key the custom field name and as value the custom field value inserted by the customer. Custom fields can both be used as inputs from the customers but also as metadata for invoices, letting you pass hidden fields for internal referencing.

crypto_confirmations_needed

integer

Minimum number of confirmations for a crypto payments to be accepted.

max_risk_level

integer

For PAYPAL and STRIPE, maximum risk level to accept payments in order to block fraud attempts.

unlisted

boolean

If unlisted is true, the product is not shown in the storefront but can be bought through a direct link.

private

boolean

If private is true, the product is hidden on the storefront and cannot be bought with a direct link.

block_vpn_proxies

boolean

Block VPN and Proxy purchases if the gateway is PAYPAL or STRIPE.

sort_priority

integer

Sort order of this product.

webhooks

strings

Array of the webhook URLs for this product.

on_hold

boolean

If on_hold is true, the product cannot be bought but is shown in the storefront.

terms_of_service

string

Text containing the product's terms of service.

warranty

integer

Time, in seconds, of how much the warranty for this product lasts.

warranty_text

string

Clear explanation of what the warranty covers.

remove_image

boolean

If should remove image

remove_file

boolean

If should remove file

volume_discounts

object

Array of volume discounts.

price_variants

objects

Array of price variants. If type is SERIALS, stock for the variant should be provided in this object.

recurring_interval

string

Enum: "DAY", "WEEK", "MONTH", "YEAR". At which frequency the customer is billed for product type SUBSCRIPTION.

recurring_interval_count

integer

How many recurring_interval before the customer is billed for product type SUBSCRIPTION.

trial_period

integer

Defines a trial period before billing the customer for product type SUBSCRIPTION.

youtube_link

string

URL of a youtube video that will be displayed in the product page.

watermark_enabled

boolean

Whether or not the watermark_text will be displayed.

watermark_text

string

This text will be displayed over PDFs and images when the customer downloads them.

redirect_link

string

Redirect link string, the customer will be redirected to this link after purchase.

Product update example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $product_uniqid = "<PRODUCT_UNIQID>";
7  $product_payload = [
8    "title" => "Software Activation Keys",
9    "price" => 12.5,
10    "description" => "Product description example.",
11    "currency" => "EUR",
12    "gateways" => ["PAYPAL","STRIPE","BITCOIN"],
13    "type" => "SERIALS",
14    "serials" => [
15      "activation-key-#1"
16    ]
17  ];
18
19  try {
20    $sellix->update_product($product_uniqid, $product_payload);
21  } catch (SellixException $e) {
22    echo $e->__toString();
23  }
24?>

Create Product Request

{
  "title": "Software Activation Keys",
  "price": 12.5,
  "description": "Product description example.",
  "currency": "EUR",
  "gateways": [
    "PAYPAL",
    "STRIPE",
    "BITCOIN"
  ],
  "type": "SERIALS",
  "serials": [
    "activation-key-#1"
  ],
  "price_variants": [
    {
      "price": 4,
      "title": "1 day license",
      "description": "example",
      "serials": [
        "serial-1-for-product-variant-1"
      ]
    },
    {
      "price": 8,
      "title": "1 week license",
      "description": "sample 2",
      "stock": 12,
      "serials": [
        "serial-1-for-product-variant-2"
      ]
    }
  ],
  "serials_remove_duplicates": true,
  "service_text": null,
  "stock": null,
  "dynamic_webhook": null,
  "stock_delimiter": ",",
  "min_quantity": 1,
  "max_quantity": 150,
  "delivery_text": "Thank you for the purchase!",
  "custom_fields": null,
  "crypto_confirmations_needed": 3,
  "max_risk_level": 85,
  "unlisted": false,
  "private": false,
  "block_vpn_proxies": true,
  "sort_priority": 0,
  "webhooks": null,
  "on_hold": false,
  "terms_of_service": "ToS to be agreed upon purchase.",
  "warranty": 86400,
  "warranty_text": "Warranty description.",
  "youtube_link": "https://youtu.be/demo",
  "watermark_enabled": true,
  "watermark_text": "Watermark Store {{invoice.uniqid}}",
  "redirect_link": "https://redirect.me/here",
  "remove_images": false,
  "remove_files": false,
  "volume_discounts": null,
  "recurring_interval": null,
  "recurring_interval_count": null,
  "trial_period": null
}

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Delete Product

DELETE /products/:uniqid
Deletes a Product.

Product delete example

1<?php
2  use \Sellix\PhpSdk\Sellix;
3  use \Sellix\PhpSdk\SellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $product_uniqid = "<PRODUCT_UNIQID>";
7
8  try {
9    $sellix->delete_product($product_uniqid)
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": null,
  "message": "the request has succeeded",
  "log": null,
  "error": null,
  "env": "production"
}

Groups

Endpoints

GET /groups/:uniqid 
GET /groups
POST /groups
PUT /groups/:uniqid
DELETE /groups/:uniqid

Group Object

id

integer

ID of the resource

uniqid

string

Unique ID of the resource, used as reference across the API.

shop_id

integer

The shop ID to which this group belongs.

title

string

Title of the group.

unlisted

boolean

Whether or not the group is visible on the merchant storefront.

sort_priority

integer

Sort order of this group.

groups_bound

objects

Array of groups.

groups_count

integer

How many groups are present in the groups_bound array

created_at

integer

Creation date of the group.

updated_at

integer

Date, available if the group has been edited.

updated_by

integer

User ID, available if the group has been edited.

The Group Object

{
  "id": 0,
  "uniqid": "sample29a0e39d",
  "shop_id": 0,
  "title": "Software Group",
  "unlisted": false,
  "sort_priority": 1,
  "products_bound": [
    {
      "id": 0,
      "uniqid": "sample29a0e39d",
      "shop_id": 0,
      "type": "SUBSCRIPTION",
      "subtype": null,
      "title": "Digital good to download",
      "currency": "EUR",
      "price": 5,
      "price_display": 4.5,
      "description": "Product description",
      "image_attachment": null,
      "file_attachment": null,
      "volume_discounts": [
        {
          "type": "PERCENTAGE",
          "value": 5,
          "quantity": 10
        }
      ],
      "recurring_interval": "MONTH",
      "recurring_interval_count": 1,
      "trial_period": 0,
      "paypal_product_id": null,
      "paypal_plan_id": null,
      "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
      "quantity_min": 1,
      "quantity_max": -1,
      "quantity_warning": 0,
      "gateways": [
        "PAYPAL",
        "STRIPE",
        "BITCOIN"
      ],
      "custom_fields": [
        {
          "type": "checkbox",
          "name": "Read the ToS",
          "regex": null,
          "placeholder": null,
          "default": null,
          "required": false
        }
      ],
      "crypto_confirmations_needed": 3,
      "max_risk_level": 85,
      "block_vpn_proxies": true,
      "delivery_text": "Thank you for purchasing this subscription!",
      "service_text": "In order to get you services, please contact us at..",
      "stock_delimiter": ",",
      "stock": -1,
      "dynamic_webhook": null,
      "sort_priority": 1,
      "unlisted": false,
      "on_hold": false,
      "terms_of_service": null,
      "warranty": 86400,
      "warranty_text": "This warranty covers..",
      "private": false,
      "name": "Sellix",
      "image_name": null,
      "image_storage": null,
      "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
      "serials": [],
      "webhooks": [],
      "feedback": {
        "total": 10,
        "positive": 8,
        "neutral": 1,
        "negative": 0
      },
      "theme": "light",
      "dark_mode": 0,
      "average_score": 4.5,
      "sold_count": 5,
      "lex_payment_methods": [],
      "created_at": 162857125819,
      "updated_at": 162857125819,
      "updated_by": 0
    }
  ],
  "products_count": 1,
  "created_at": 162857125819,
  "updated_at": 162857125819,
  "updated_by": 0
}

Get a Group

GET /groups/:uniqid
Retrieves a Group by Uniqid.

Group view example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $group_uniqid = "<GROUP_UNIQID>";
7
8  try {
9    $group = $sellix->get_group($group_uniqid);
10  } catch (SellixException $e) {
11    echo $e->__toString();
12  }
13?>

Response

{
  "status": 200,
  "data": {
    "group": {
      "id": 0,
      "uniqid": "sample29a0e39d",
      "shop_id": 0,
      "title": "Software Group",
      "unlisted": false,
      "sort_priority": 1,
      "products_bound": [
        {
          "id": 0,
          "uniqid": "sample29a0e39d",
          "shop_id": 0,
          "type": "SUBSCRIPTION",
          "subtype": null,
          "title": "Digital good to download",
          "currency": "EUR",
          "price": 5,
          "price_display": 4.5,
          "description": "Product description",
          "image_attachment": null,
          "file_attachment": null,
          "volume_discounts": [
            {
              "type": "PERCENTAGE",
              "value": 5,
              "quantity": 10
            }
          ],
          "recurring_interval": "MONTH",
          "recurring_interval_count": 1,
          "trial_period": 0,
          "paypal_product_id": null,
          "paypal_plan_id": null,
          "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
          "quantity_min": 1,
          "quantity_max": -1,
          "quantity_warning": 0,
          "gateways": [
            "PAYPAL",
            "STRIPE",
            "BITCOIN"
          ],
          "custom_fields": [
            {
              "type": "checkbox",
              "name": "Read the ToS",
              "regex": null,
              "placeholder": null,
              "default": null,
              "required": false
            }
          ],
          "crypto_confirmations_needed": 3,
          "max_risk_level": 85,
          "block_vpn_proxies": true,
          "delivery_text": "Thank you for purchasing this subscription!",
          "service_text": "In order to get you services, please contact us at..",
          "stock_delimiter": ",",
          "stock": -1,
          "dynamic_webhook": null,
          "sort_priority": 1,
          "unlisted": false,
          "on_hold": false,
          "terms_of_service": null,
          "warranty": 86400,
          "warranty_text": "This warranty covers..",
          "private": false,
          "name": "Sellix",
          "image_name": null,
          "image_storage": null,
          "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
          "serials": [],
          "webhooks": [],
          "feedback": {
            "total": 10,
            "positive": 8,
            "neutral": 1,
            "negative": 0
          },
          "theme": "light",
          "dark_mode": 0,
          "average_score": 4.5,
          "sold_count": 5,
          "lex_payment_methods": [],
          "created_at": 162857125819,
          "updated_at": 162857125819,
          "updated_by": 0
        }
      ],
      "products_count": 1,
      "created_at": 162857125819,
      "updated_at": 162857125819,
      "updated_by": 0
    }
  },
  "message": null,
  "log": null,
  "error": null,
  "env": "production"
}

List All Groups

GET /groups
Returns a list of all the Groups. The groups are sorted by creation date, with the most recently created groups being first.

Parameters

page

integer

Page number for use in pagination.

Group list example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6
7  try {
8    $groups = $sellix->get_groups();
9  } catch (SellixException $e) {
10    echo $e->__toString();
11  }
12?>

Response

{
  "status": 200,
  "data": {
    "groups": [
      {
        "id": 0,
        "uniqid": "sample29a0e39d",
        "shop_id": 0,
        "title": "Software",
        "unlisted": false,
        "sort_priority": 1,
        "products_bound": [
          {
            "id": 0,
            "uniqid": "sample29a0e39d",
            "shop_id": 0,
            "type": "SUBSCRIPTION",
            "subtype": null,
            "title": "Digital good to download",
            "currency": "EUR",
            "price": 5,
            "price_display": 4.5,
            "description": "Product description",
            "image_attachment": null,
            "file_attachment": null,
            "volume_discounts": [
              {
                "type": "PERCENTAGE",
                "value": 5,
                "quantity": 10
              }
            ],
            "recurring_interval": "MONTH",
            "recurring_interval_count": 1,
            "trial_period": 0,
            "paypal_product_id": null,
            "paypal_plan_id": null,
            "stripe_price_id": "price_sample2X7rAeMb7AM5APEU",
            "quantity_min": 1,
            "quantity_max": -1,
            "quantity_warning": 0,
            "gateways": [
              "PAYPAL",
              "STRIPE",
              "BITCOIN"
            ],
            "custom_fields": [
              {
                "type": "checkbox",
                "name": "Read the ToS",
                "regex": null,
                "placeholder": null,
                "default": null,
                "required": false
              }
            ],
            "crypto_confirmations_needed": 3,
            "max_risk_level": 85,
            "block_vpn_proxies": true,
            "delivery_text": "Thank you for purchasing this subscription!",
            "service_text": "In order to get you services, please contact us at..",
            "stock_delimiter": ",",
            "stock": -1,
            "dynamic_webhook": null,
            "sort_priority": 1,
            "unlisted": false,
            "on_hold": false,
            "terms_of_service": null,
            "warranty": 86400,
            "warranty_text": "This warranty covers..",
            "private": false,
            "name": "Sellix",
            "image_name": null,
            "image_storage": null,
            "cloudflare_image_id": "sample-c4f1-4f7c-9a1d-89120ed0c800",
            "serials": [],
            "webhooks": [],
            "feedback": {
              "total": 10,
              "positive": 8,
              "neutral": 1,
              "negative": 0
            },
            "theme": "light",
            "dark_mode": 0,
            "average_score": 4.5,
            "sold_count": 5,
            "lex_payment_methods": [],
            "created_at": 162857125819,
            "updated_at": 162857125819,
            "updated_by": 0
          }
        ],
        "products_count": 1,
        "created_at": 162857125819,
        "updated_at": 162857125819,
        "updated_by": 0
      }
    ]
  },
  "message": null,
  "log": null,
  "error": null,
  "env": "production"
}

Create a Group

POST /groups

Creates a Group and returns the Uniqid.

Arguments

title

string

REQUIRED

Title of the group, displayed in the site

unlisted

boolean

0 or 1, true or false, if 1/true the group is not displayed on the shop page.

products_bound

array

Array of products uniqids that the group will contain

sort_priority

integer

Used to order the groups on the shop page, ordered by ASC

Group create example

1<?php
2  use SellixPhpSdkSellix;
3  use SellixPhpSdkSellixException;
4
5  $sellix = new Sellix("<YOUR_API_KEY>", "<MERCHANT_NAME>");
6  $group_payload = [
7    "title" => "Software",
8    "unlisted" => false,
9    "products_bound" => [],
10    "sort_priority" => 0
11  ];
12
13  try {
14    $group_uniqid = $sellix->create_group($group_payload);
15  } catch (SellixException $e) {
16    echo $e->__toString();
17  }
18?>

Create Group Request

{
  "title": "Software Group",
  "unlisted": false,
  "products_bound": [
    "sample8718521"
  ],
  "sort_priority": 0
}

Response

{
  "status": 200,
  "data": {
    "uniqid": "objectUniqid"
  },
  "message": "the request has succeeded",
  "log":