Everything for your product business.
New products available
Recent activity
Live orders
Watching for new orders…Overview
Setup
Shelf
On your shelf
Changes save as you make them, and a live shop stays live.
Available to add
Approved for your account and not on your shelf yet.
Look
Name and address
Your approved DBA. It sets your shop's link.
Your pages
Design your front page and add pages of your own, like About or FAQ: drag in sections, text, images, products and your own code. Nothing changes for customers until you publish.
Shown on your storefront and on your terms and privacy pages, so your customers write to you. Leave it empty and SourceRX support is used instead.
Your logo
PNG, JPEG or WebP, up to 256KB. Shown in place of your store name at the top of every page.
or drag one here
Your colour
Used for buttons and highlights. Text on top is set automatically to whatever stays readable.
#1557d5
Your headline
How the headline at the top of your front page is set. The compliance notice above it always stays.
Delivery
Who pays for delivery
Shipping is $16.00 flat per order, once, however many vials. Pass it on to your customer, or cover it yourself. Covering it does not change any of your prices; it comes off your margin.
Leave Free over empty for no threshold. Setting it to 0 makes every order ship free.
Free delivery codes
A customer types one of these at checkout and pays nothing for delivery. You still cover the $16.00.
Domain
Connect your domain.
Your store answers at your own web address. Your customers never see ours.
Use a subdomain such as shop.yourbrand.com or store.yourbrand.com. You keep your main website exactly where it is.
Add this record at your domain provider
One record, once. Sign in wherever you bought your domain, open its DNS settings, and add:
If your provider offers a proxy or CDN toggle on the record, leave it off, a proxied record hides where it points, and the check that brings your store up cannot see through it. Some providers call the Name field a Host, and some want just the first part rather than the whole address, both are shown above.
Announcements and wording
Announcements.
A short line that runs across the top of your shop. Up to eight, up to 120 characters each. Switch one off to keep the wording without showing it. Saving these never takes your store offline.
Write about your own shop, hours, dispatch days, how to reach you. Nothing here may name another business, and none of it may describe what a product does or is for.
Words on your shop.
Buttons, headings, labels and messages. Anything you leave alone keeps our wording, and changing your mind later is one press of Reset.
The research-use notice, the age question and the payment line are not here and cannot be changed. They say what this system actually checks, so a shop cannot word them into saying something else.
Ad tracking
Your ad accounts
Add your Meta Pixel, Google tag or Hyros script and your shop reports page views, add-to-carts, checkouts and purchases to them. Paste the whole snippet or just the ID; we keep the ID.
Events Manager → Data sources → your pixel. Sends PageView, ViewContent, AddToCart, InitiateCheckout and Purchase.
G-… for Google Analytics 4, AW-… for Google Ads, up to three separated by spaces. Tag Manager containers (GTM-…) are not accepted.
Goals → Conversions → your purchase action → Tag setup, the send_to value. Needs the AW-… ID above.
Hyros → Settings → Tracking script. This tracks visits and ad clicks.
Hyros → Settings → API. With a key saved, every paid order is sent to Hyros with the buyer's email, phone and IP so it can match the sale to the ad.
Your shop's privacy notice names whichever of these you turn on, and says what each one is sent.
Orders from your storefront.
Buy in bulk, at the tier your order earns.
Your requests
Stock you own.
What you have earned.
Card fees are taken by the payment processor before the money reaches SourceRX. They are shown here so your figures reconcile, SourceRX does not receive them.
What you made, order by order
On stock you had already bought, the whole sale is paid to you, your profit is that sale less what those units cost you.
Activity
Partners asking to buy in bulk.
Already decided
Refunds partners have asked for
On a Kashu Pay payment, approving sends the refund through Kashu and books it. If Kashu refuses, the request stays here with Retry refund. On any other processor, approving only decides it: you issue the refund in that processor, and the books update when it confirms.
The book.
Processor fees appear as deductions. They are kept by the payment provider out of each charge and never reach this business.
Where each order's money went
Four separate cuts. The processor's is kept by the card company and reaches none of the other three.
Activity
People who send you customers.
Commission is a share of the goods on an order, after any discount the customer got, and it comes out of your margin, not off what you pay us. A code that would take an order below what it costs you is refused at checkout rather than quietly reduced. It is deducted when the order settles and shows on your payouts as a line of its own, and an affiliate cannot be paid until the order is past the window a customer could ask for their money back in. A refunded order returns its commission to you.
Add an affiliate
The code is what a customer types at checkout. Give it to them as it appears here.
Where their login goes. You can add somebody without one, but they will not be able to sign in and see what they have earned.
Letters, digits and dashes. Spaces are closed up.
Their login
Send these to now. The password is not stored and cannot be shown again, if it is lost, switch the code off and issue a new one.
Your referrals.
Everything that came in on your code, and what it earned you.
Orders on your code
Commission is owed once an order is paid for. An order that has not been paid yet is shown as pending rather than counted.
Who may write into a compounding pharmacy.
The NPI check is structural. Ten digits with a working check digit means a number could have been issued, not that it was, and not that this person holds it. Confirming it against NPPES is a separate step, recorded against whoever did it, and a login cannot be issued until it has been.
Add a prescriber
Record a licence
Left empty, it is treated as not expiring. A lapsed licence stops working on its own.
Write a prescription.
This records a prescription; it is not an electronic signature. It is written under your account and audited, and it is not attested to by a third party the way an e-prescription is.
Patient
Compounded for one individually identified person.
Preparation
Only what the pharmacy you choose actually compounds.
Printed on the label. A preparation dispensed without directions tells the patient nothing.
Authorisation
How much, how many times, and for how long.
Left empty, it is a year from the date written.
Written
Give this code to whoever places the order. It is shown once.
What you have written.
Nothing is compounded until somebody says so.
This records a decision; it does not verify a prescription. There is no prescription in this system to check against, the reference below is what was typed at checkout. Check it against the prescription the pharmacy holds before approving.
Prescription
Patient
Patient details are hidden.
This was recorded against your account.
Sell more than one thing at a time.
New bundle
Pick at least two products and set one price for the set.
Start from a set
Fills the form below. Nothing is saved until you set a price and press Save, and every field stays editable.
Goes in front of each set name, so they read as yours.
What is in it
Your bundles
Repeat orders
Offer a discount to customers who want to reorder monthly. They are not charged automatically, the gateway cannot hold a card for that yet, so the checkout promises a reminder at the agreed price, which is a thing you can actually deliver. The agreement and its discount are recorded either way.
Discount codes.
New code
What your shoppers actually do.
By product
Sorted by how many people put it in a basket. A product high on this list with nothing in the last column is priced or described wrongly, not unwanted.
Where they came from
What each campaign sold
Only visits that arrived on a tagged link. Revenue is what the customer was charged, before delivery, discounts or anything owed onward, the money that came in because of the campaign, not what was left after it.
Every storefront, and each one on its own.
Diagnostics.
Full check
Past runs
Sales that failed
Started, never finished
Paid, never sent
Deliveries that didn't reach a supplier
Money taken that wasn't accounted for
Charges that never landed
Cancelling one makes its order unshippable. It moves no money: void or refund it with the processor.
Compounds held twice
Controls that did nothing
Errors
Your account.
Orders with your products on them.
Everything you have told us you can fill.
What you have earned.
Activity
Tell us what went wrong.
Your issues
What partners are stuck on.
Find an order or a customer.
Clients, orders, and recurring revenue.
Client activity
Orders per week, last 8 weeks
Client list
What you charge.
The file carries every line you may sell, what it costs you, what you charge, what you keep, and which are on your store. Nothing is stored: it is generated when you ask and every download is recorded.
Your words for this product
Dashboard.
Partners
Live orders
Watching for new orders…What is selling.
Download
A snapshot as CSV. Nothing is stored, the file is generated when you ask for it and every download is recorded in the audit trail.
Orders export one row per line item, with unit cost, unit price, margin, carrier, tracking and the address it shipped to.
Partner applications.
Application
NewManufacturers.
Partners.
Integrations.
Send each email to yourself
Goes to you with sample details. One send per minute.
Setting it up
- 1 · API key
- Set
RESEND_API_KEYin Railway, then redeploy - 2 · Domain
- Verify the domain in
EMAIL_FROMwith Resend - 3 · Prove it
- Send a test from this card
Card payments
You can suspend an account. The owner adds, changes and switches on merchant accounts.
Which shops can take cards
Manufacturers
Emails.
API.
Paste the raw value. Do not add Bearer in front of it.
Endpoint
Keys
What the hub receives
Raw JSON
Partner commerce setup.
Partner access
Who at this business can sign in. A partner with no login cannot reach the platform at all.
Passwords are generated and shown once. This is a prototype, the account list is stored in the page, so these are not real credentials.
Who supplies them
Read from what this partner sells. Each line is filled by whichever supplier can, chosen per order.
Used only where more than one manufacturer can fill a line: this partner's orders go to the preferred one rather than the cheapest. It does not change what they may sell, and a supplier we cannot reach is still passed over, preferring someone who cannot be told about the order would honour the preference by failing to fill it.
Private pricing
Manufacturer price → SourceRX fee → what this partner pays. Owner-only.
This partner has no tier on the dropship schedule, so they have no cost basis and nothing to select in their storefront.
The manufacturer price is yours alone. It is not sent to this partner, to any other partner, or to an admin, the API returns it to the owner account only. The fee is what SourceRX takes on top; what the partner charges their own customer is theirs to set and is not recorded here.
Storefront setup
DraftSubmission progress
-
Powered by SourceRX
Products.
Import a price sheet
Adding a few hundred line items through a form is not a workflow anyone follows. Upload your sheet, read the diff, then apply it.
A CSV needs a header row with product and size. Anything with price or tier in its name is read as a price, left to right. category, form and classification are optional, and so are prices.
Importing the same sheet twice changes nothing the second time, it is matched on product, size and tier, so a spreadsheet can stay the source of truth and be re-imported after every edit.
Category tiles
The picture a shopper sees for each category. Every storefront listing that category shows the same one, so these are yours rather than a partner's. PNG, JPEG or WebP, up to 256 KB.
Lines no supplier declares
Nothing here can be sold. Removing deletes these sizes, their prices and any shop's selection of them, permanently.
Apply form.
Automations.
RESEND_API_KEY and redeploy, see Integrations.
What each shop sends
Team.
Add someone
✓ Account created
Give this password. It is shown once. If it is lost, reset it below.
Doc links.
How this works.
The short version
Tracking appears against the order in your order history as soon as the manufacturer reports it.
Getting help
Email support@sourcerx.us and a person will answer. Include the order reference if it is about an order, it is the fastest way to get a real answer rather than a request for more detail.
Your own customers should contact you, not us. They bought from your store and have never heard of SourceRX, order confirmations and tracking emails already reply to your address, so this happens by itself.
Pricing
The prices you see are what you pay SourceRX, at the tier set for you. What you charge your own customers is entirely yours to decide, set it wherever you like above your cost. We do not record it and nobody else sees it.
Privacy
You cannot see other partners, and no other partner can see you, your clients or your orders. The manufacturer is given the shipping address and the products, and is not told what anything cost.
Your team
Invite colleagues from Settings. Everyone you invite can do everything you can. Nobody can remove their own access, and the last remaining account cannot be removed, that is what stops a business locking itself out.
Full documentation
The technical reference, including the parts written for manufacturers. Opens in a new tab.
Anything about pricing, products or approvals goes to your SourceRX contact rather than the documentation.
Settings.
Invite a teammate
They get their own sign-in and can do everything you can, build the storefront, place orders and manage clients.
✓ Invitation sent
Give this password. It is shown once and cannot be recovered.
Who can sign in
You cannot remove your own access, and the last remaining account cannot be removed, that is what stops a business locking itself out.
Developers.
API keys
A secret key is for your server and can read orders with each customer's details. A publishable key can go in your web pages and reads only your catalogue, from the websites you list.
Try it
Send the key in an Authorization header, from your server. Order reads are logged.
Your products
What your shop sells, with the ids your code uses. Change it in My Store; the API follows straight away.
Webhooks
Where we send order updates. Each one is signed with the endpoint's secret and carries ids and statuses, never customer details.
Usage
Requests made with your keys over the last 30 days, and how many were turned away for going over the rate limit.
Profile.
Details
Your email address and access level are set by an administrator and cannot be changed here.
Authenticator
Patient details on compounded orders need a code from an authenticator app.
Add this secret to your authenticator app, then enter the code it shows.
Shown once. It is not readable again, start over if you lose it.
⚠ This account is set by the environment
The owner login comes from OWNER_EMAIL and OWNER_PASSWORD, and is re-applied on every boot. Editing it here would be undone at the next deploy, so the server refuses the change rather than appearing to accept it. Change those variables in Railway and redeploy.
The upside: if the owner password is ever lost, editing the environment and restarting is the way back in.
Change password
At least 12 characters. Every other browser signed in as you is signed out; this one stays.
What works, and what doesn't.
Real, and saved by the API
Backed by the database. Survives a reload, a redeploy, and a different browser.
Also real, and saved
The partner workspace. These moved out of browser memory and into the database.
Cost basis and markup are still sent to the browser for any signed-in admin, so they are visible in devtools to anyone with an admin session. They are no longer visible to a signed-out visitor.
Not built
Kept honest deliberately. Everything above this line works against real services; everything below does not exist yet, and is listed so nobody discovers it at an inconvenient moment.