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
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
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.
Sellix offers the ability to paginate any list endpoint.
If you do not specify a page, we will return all the resources available for the listing.
Parameters
page integer | Page number for use in pagination. |
Paginating Orders Example
/blacklists?page=1
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" }
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
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?>
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.
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!
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.
There are two ways to handle webhooks for subscriptions,
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.
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 |
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": [] }
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
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.
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
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.
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?>
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?>
Endpoints
POST /payments
PUT /payments/:uniqid
DELETE /payments/:uniqid
We currently support two types of checkout flows for Sellix Payments, Integrated and White-label.
Integrated
With the integrated checkout option, Sellix handles the checkout aspect for you by only returning a unique payment URL. This unique URL contains our realtime checkout page.
White-label
The white-label checkout flow provides the raw order created rather than a payment URL. With the raw order information, you are able to develop and integrate your own checkout experience completely separate from Sellix.
This has the added downside of not having the realtime status updates that the integrated checkout flow offers, but this can of course be implemented on your side using the webhooks.
Products
We offer the possibility to create payments for your products too. You can specify a product_id and we will take care of the rest.
POST /payments
Creates a Payment. Returns an invoice object.
Arguments
title string | Required 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. |
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" }
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 /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" }
Endpoints
GET /blacklists/:uniqid
GET /blacklists
POST /blacklists
PUT /blacklists/:uniqid
DELETE /blacklists/:uniqid
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 /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" }
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" }
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" }
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 /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" }
Edpoints
GET /whitelists/:uniqid
GET /whitelists
POST /whitelists
PUT /whitelists/:uniqid
DELETE /whitelists/:uniqid
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 /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" }
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" }
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" }
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 /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" }
Endpoints
GET /categories/:uniqid
GET /categories
POST /categories
PUT /categories/:uniqid
DELETE /categories/:uniqid
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 /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" }
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" }
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" }
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 /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" }
Endpoints
GET /coupons/:uniqid
GET /coupons
POST /coupons
PUT /coupons/:uniqid
DELETE /coupons/:uniqid
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 /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" }
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" }
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" }
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 /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" }
Endpoints
GET /feedback/:uniqid
GET /feedback
POST /feedback/reply/:uniqid
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 /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" }
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" }
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" }
Endpoints
GET /orders/:uniqid
GET /orders
PUT /orders/update/:uniqid
POST /orders/replacement/:uniqid
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. |
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 /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" }
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" }
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" }
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" }
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.
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.
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.
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.
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.
Endpoints
GET /products/:uniqid
GET /products
POST /products
PUT /products/:uniqid
DELETE /products/:uniqid
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 /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" }
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" }
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" }
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 /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" }
Endpoints
GET /groups/:uniqid
GET /groups
POST /groups
PUT /groups/:uniqid
DELETE /groups/:uniqid
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 /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" }
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" }
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":