Become a Feem Reseller
Sell Feem Pro licenses on your own platform and fulfill them instantly through our API. This guide covers what it takes to join, how to reach us, and the full API reference.
Why resell Feem
- Instant fulfillment. One API call turns a sale on your platform into an active Feem Pro license for your customer, delivered to their inbox in seconds.
- Postpaid terms. Grant licenses against an agreed credit line and settle with us periodically — no prepayment, no per-transaction friction.
- Wholesale pricing. You set your own retail price; you pay us the agreed wholesale rate.
- Zero integration on the end-user side. Your customer just opens Feem and signs in with the email you licensed. Nothing to install, no codes to redeem.
What it takes to join
To onboard as a reseller you’ll need:
- A business. A registered company or an established platform/marketplace where you’ll sell Feem licenses.
- A billing currency for your account (e.g.
USD,EUR,CNY). - A backend that can make authenticated HTTPS calls. Grants are server-to-server. Your API key must never be embedded in a website, mobile app, or anything that ships to end users.
- Agreement on commercial terms — wholesale pricing per tier and a credit limit — which we set up with you during onboarding.
Once approved, we provision your reseller account, agree your credit limit, and issue you an API key. You’re ready to sell.
The tiers you can sell
| Tier | Tier id (used in the API) | Devices per license |
|---|---|---|
| Feem Pro Personal | feem_pro_personal |
5 |
| Feem Pro Family | feem_pro_family |
20 |
| Feem Pro Business | feem_pro_business |
100 |
How to contact us
To apply or ask questions, email info@feeperfect.com with:
- Your company / platform name and website
- The regions and customer types you serve
- Rough expected monthly volume
- Your preferred billing currency
Website: https://feem.io
We’ll follow up to finalize terms and get you a sandbox and an API key.
How it works (the big picture)
Your customer buys Your backend calls We provision the license
a Feem Pro license ─▶ POST /api/v2/reseller/ ─▶ and email your customer
on your platform licenses Feem Pro is active
- A customer buys a Feem license on your platform and pays you.
- Your backend calls our grant endpoint with the customer’s email, the tier, and your own order id.
- We activate Feem Pro for that email and send the customer a confirmation.
- Periodically, you report the payments you owe us and we reconcile them against your ledger.
The customer’s email is their license identity. When they open Feem and sign in with that email, Pro is already active — there is no separate activation code.
⚠️ Send the correct email. The license is bound to the exact email address you submit. Double-check it at point of sale.
API Reference
Base URL
https://backend5.feem.io
Authentication
Every request must include your API key as a Bearer token:
Authorization: Bearer frk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- We show your key’s plaintext exactly once, when it’s issued. Store it in your secrets manager. If you lose it, we revoke and re-issue — we cannot recover it.
- Keep it server-side only. Never ship it in client apps or web pages.
- Keys can be scoped to grant and/or read, may carry an expiry, and can be locked to a set of allowed IP addresses. Tell us the static egress IPs of your backend if you’d like the allowlist.
Response format
All responses are JSON. Successful responses wrap their payload under data:
{
"status": "success",
"message": "",
"data": { "grant": { "…": "…" } }
}
Errors use status: "fail" (something about your request) or status: "error" (something on
our side), with a machine-readable message:
{ "status": "fail", "message": "credit-limit-exceeded", "data": { "outstandingAmount": "1000.00", "creditLimitAmount": "1000.00", "currency": "USD" } }
GET /api/v2/reseller/account — Account statement
Start here. Your current balance, credit limit, and lifetime totals — call this to see how
much credit headroom you have before you grant. Requires the read scope.
curl https://backend5.feem.io/api/v2/reseller/account \
-H "Authorization: Bearer frk_your_key_here"
Success — 200 OK
{
"status": "success",
"data": {
"account": {
"resellerId": "a24f…",
"name": "Acme Software",
"currency": "USD",
"status": "active",
"creditLimitAmount": "1000.00",
"outstandingAmount": "630.00",
"tiers": {
"feem_pro_personal": { "price": "5.00", "granted": 80 },
"feem_pro_family": { "price": "19.00", "granted": 40 },
"feem_pro_business": { "price": "99.00", "granted": 8 }
}
}
}
}
outstandingAmount— money you currently owe (in your accountcurrency), i.e. granted but not yet settled by an approved payment. This is what’s measured against your credit limit.creditLimitAmount— your credit line in your currency (empty = no cap).tiers— per tier: your configured wholesaleprice(empty means unpriced, so grants for it are refused) and thegrantedcount you’ve sold to date. Prices are set by Feem; you can read them here but not change them.
POST /api/v2/reseller/licenses — Grant a license
The core call. Fulfills one sale. Requires the grant scope.
Request body
| Field | Type | Description |
|---|---|---|
order_id |
string | Your unique id for this sale. Used for idempotency (see below). |
email |
string | The customer’s email. This becomes their Feem license identity. |
tier |
string | One of feem_pro_personal, feem_pro_family, feem_pro_business. |
You do not send a price. The wholesale price for each tier is configured on your account by Feem; the response tells you the
amountcharged, and it’s added to your outstanding balance. A tier with no configured price returns422 price-not-configured.
curl -X POST https://backend5.feem.io/api/v2/reseller/licenses \
-H "Authorization: Bearer frk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"order_id": "ORDER-10231",
"email": "customer@example.com",
"tier": "feem_pro_family"
}'
Success — 200 OK
{
"status": "success",
"data": {
"grant": {
"id": "b1e6…",
"resellerId": "a24f…",
"orderId": "ORDER-10231",
"buyerEmail": "customer@example.com",
"tier": "feem_pro_family",
"amount": "19.00",
"currency": "USD",
"paymentId": "9f2c…",
"createdAt": "2026-07-17T10:04:11Z"
}
}
}
amount / currency are the wholesale price charged to your account for this grant (added to
your outstandingAmount).
Idempotency. Grants are idempotent on order_id. If you send the same order_id again,
you get the same grant back — the customer is never double-licensed and you’re never
double-charged. This makes retries safe: if a call times out, just retry with the same
order_id.
Errors
| HTTP | message |
Meaning |
|---|---|---|
| 400 | order_id-required |
order_id was empty. |
| 400 | invalid-email |
Email didn’t parse. |
| 400 | invalid-tier |
Tier isn’t one of the three Pro tiers. |
| 401 | invalid-api-key / api-key-expired |
Key is wrong, revoked, or expired. |
| 402 | credit-limit-exceeded |
Your outstanding balance would exceed your credit limit; settle to free up room. data includes outstandingAmount, creditLimitAmount, and currency. |
| 422 | price-not-configured |
No wholesale price is set up for that tier on your account — contact us to configure pricing. data includes tier. |
| 403 | forbidden-scope |
Your key lacks the grant scope. |
| 403 | reseller-suspended |
Your account is suspended — contact us. |
| 403 | ip-not-allowed |
Request came from an IP outside your allowlist. |
| 409 | busy-try-again |
A brief concurrency lock; retry with the same order_id. |
GET /api/v2/reseller/licenses — List your grants
Every license you’ve granted, newest first. Requires the read scope.
curl https://backend5.feem.io/api/v2/reseller/licenses \
-H "Authorization: Bearer frk_your_key_here"
Returns data.grants — an array of grant objects (same shape as the grant response above).
POST /api/v2/reseller/payments — Report a payment
Tell us about a payment/remittance you’ve made toward your balance. It’s recorded as pending until our team reconciles it against the funds received; approval then reduces your outstanding balance.
Request body
| Field | Type | Description |
|---|---|---|
amount |
string | Numeric amount, e.g. "630.00". |
currency |
string | Optional; defaults to your account currency. |
reference |
string | Your bank/wire reference so we can match it. |
note |
string | Optional free-text note. |
curl -X POST https://backend5.feem.io/api/v2/reseller/payments \
-H "Authorization: Bearer frk_your_key_here" \
-H "Content-Type: application/json" \
-d '{ "amount": "630.00", "currency": "USD", "reference": "WIRE-88231", "note": "July settlement" }'
Returns data.payment with status: "pending".
GET /api/v2/reseller/payments — List your reported payments
Your remittances and their status (pending / approved / rejected), newest first.
Requires the read scope.
curl https://backend5.feem.io/api/v2/reseller/payments \
-H "Authorization: Bearer frk_your_key_here"
Billing model
- You operate on postpaid credit, in money. Each grant adds the tier’s wholesale price to what you owe; each approved payment subtracts what you paid. Everything is in your account currency (e.g. USD, CNY), which is fixed when your account is created.
- Every tier you sell must have a wholesale price configured on your account. A grant for a
tier with no price is refused (
422 price-not-configured) — we set these up with you during onboarding. - Your credit limit is a monetary amount (
creditLimitAmount, e.g. 1000 CNY). When a grant would push your outstanding balance past it, grants return402 credit-limit-exceededuntil you settle. - To settle: send us the funds per our agreed terms, then report the payment with
POST /api/v2/reseller/paymentsusing the bank reference. Once we confirm receipt, we approve it and your available credit is restored by that amount. - Watch
outstandingAmountvscreditLimitAmountonGET /accountto know how much headroom you have.
Integration checklist
- [ ] Store your API key in a server-side secrets manager.
- [ ] Send us your backend’s egress IPs if you want IP allowlisting.
- [ ] Use a stable, unique
order_idper sale (your own order number is ideal). - [ ] Retry safely on timeouts /
409using the sameorder_id. - [ ] Validate the customer email at checkout — the license binds to it exactly.
- [ ] Handle
402by pausing grants and settling your balance. - [ ] Reconcile monthly with
GET /accountand report payments promptly.
FAQ
How does my customer activate their license? They don’t need to do anything special. They open Feem, sign in with the email you licensed, and Pro is already active.
Can I grant the free tier?
No. Only the three feem_pro_* tiers are grantable.
What if I send the same order twice?
You get the same grant back. Grants are idempotent on order_id — no duplicate license, no
duplicate charge.
What if I sent the wrong email? Contact us at info@feeperfect.com. Because the license is bound to the email, corrections are handled manually on our side.
Can I test before going live? Yes — ask us for sandbox access during onboarding.
Questions? info@feeperfect.com · https://feem.io