API documentation
How your shop's add-supplier page talks to each supplier. You paste the key generated in Connect a supplier into your shop; your shop calls one endpoint per supplier. Real supplier credentials never reach your code.
1. Get a key + endpoint
In Connect a supplier choose a supplier and generate a key. The portal shows the plain key (once) and the endpoint path. Store the key in your tenant DB, e.g.:
supplier_display_name = "Nexus SMM" supplier_key = "supkey_3f9b2c8a71d4e5f6..." // from this portal supplier_endpoint = "https://supplier.licofy.com/supplier/api/nexus-smm/v2"
2. Call the per-supplier endpoint
POST {supplier_endpoint}
Content-Type: application/x-www-form-urlencoded
key=supkey_...&action=services
Supported actions — services, balance, add, status.
sh + key=...&action=services # list catalog (rate = your portal price)
sh + key=...&action=balance # wallet balance in this supplier
sh + key=...&action=add&service=12&quantity=100&link=https://facebook.com/post/1
sh + key=...&action=status&order=2019123456
Responses & errors
200 services → [ { "service": 12, "name": "…", "rate": 0.88, "min": 1, "max": 10000 }, … ]
200 balance → { "balance": 125.0, "currency": "NGN", "access": true, "funded": true }
200 add → { "order": 2019123456, "total": 88.0 }
401 → { "error": "Invalid or disabled API key." }
403 → { "error": "This key does not belong to the requested supplier." }
422 → { "error": "…", "rule": "low_balance_user" | "low_balance_provider" | "access_denied", "meta": {…} }
access_denied means the user has not funded this supplier up to its minimum top-up. Funds are credited only after a manual bank transfer is verified and approved by the admin at supplier.licofy.com.