CPD · Mail Order

CPD API

Direct-to-Consumer mail-order pharmacy pricing. Returns cash and insurance pricing, dispensing fees, shipping costs, and inventory availability for drugs fulfilled by Cost Plus Drugs' mail-order pharmacy.

Overview

CPD (Cost Plus Drugs) is the mail-order direct-to-consumer channel. Patients order online and receive medications shipped to their door. Pricing includes both cash and insurance tracks.

CPD channel data is returned in the cpd_channel field on each PriceListEntry. This field is null for items not available on the CPD channel.

Base URL https://api.costplusdrugs.com
Channel field cpd_channel
Fulfillment Mail order · ships to patient
Currency USD

GET /pricelist/cpd

Returns the full CPD price list. Only cpd_channel is populated on each entry; tcc_channel and cpdapn_channel are omitted.

GET /pricelist/cpd
200 OK — PriceListEntry[] (cpd_channel only)

Supports the exclude_fields and treatment_category parameters. See Exclude Fields and Treatment Category Filter.

cURL
curl -s https://api.costplusdrugs.com/pricelist/cpd
cURL — Exclude insurance fields
curl -s "https://api.costplusdrugs.com/pricelist/cpd?exclude_fields=cpd_channel.insurance_dispensing_fee,cpd_channel.insurance_shipping_cost,cpd_channel.insurance_expedited_shipping_cost"

Schema: CPD Channel

The cpd_channel object returned on each PriceListEntry. All monetary values are in USD.

FieldTypeDescription
cash_dispensing_fee number Dispensing fee for cash-pay orders (USD).
insurance_dispensing_fee number Dispensing fee for insurance orders (USD).
cash_shipping_cost number Standard shipping cost for 1 medication, cash-pay (USD).
cash_expedited_shipping_cost number Expedited shipping cost for 1 medication, cash-pay (USD).
insurance_shipping_cost number Standard shipping cost for 1 medication, insurance (USD).
insurance_expedited_shipping_cost number Expedited shipping cost for 1 medication, insurance (USD).
insurance_eligible boolean true if the drug is eligible for insurance billing.
currency "USD" Always "USD".
in_stock boolean Current inventory availability.
price_per_unit number USD per unit, inclusive of CPD markup.
sample_pack_price string sample_pack_size × price_per_unit, formatted to 2 decimal places (e.g., "2.10").
sample_pack_price_total_to_patient_without_shipping string sample_pack_price + dispensing_fee, formatted to 2 decimal places.
sample_pack_price_w_shipping_dispensing string sample_pack_price + shipping_cost + dispensing_fee, formatted to 2 decimal places. Top-level only — not repeated inside each sample_pricing entry.
sample_pricing SamplePricing[] Pricing for 3 dispense quantities: 1×, 2×, and 3× the default sample size (typically 30/60/90 for pills; 1/2/3 for non-pills).

Schema: SamplePricing

Three entries nested under cpd_channel.sample_pricing, representing 1×, 2×, and 3× the default sample pack size. All price fields are decimal strings, not raw numbers.

FieldTypeDescription
sample_pack_size string e.g., "30 count", "60 count", "1 Tablet"
sample_pack_price string sample_pack_size × price_per_unit, formatted to 2 decimal places.
sample_pack_price_total_to_patient_without_shipping string sample_pack_price + dispensing_fee, formatted to 2 decimal places.
ℹ️ sample_pack_price_w_shipping_dispensing (including shipping) is on the top-level cpd_channel object for the default pack size only — it does not appear inside each sample_pricing entry.

Example: Full CPD Response

Sample PriceListEntry as returned from /pricelist/cpd/search?ndc=67877-0511-10 (Atorvastatin 10mg). equivalent_ndcs is shortened here; the full entry lists every equivalent NDC.

JSON
{
  "external_sku": "d0b9ba0ae3ab9143200cfbce6ecb7a6a",
  "medication_name": "Atorvastatin",
  "brand_generic": "Generic",
  "form": "Tablet",
  "strength": "10mg",
  "treatment_categories": ["Heart Health", "High Cholesterol"],
  "brand_name": "Lipitor",
  "pack_size": 1000,
  "quantity": 1,
  "splittable": true,
  "unit": "ea",
  "equivalent_ndcs": ["67877-0511-10", "00904-6290-61", "68084-0097-01"],
  "rxnorm_id": "617312",
  "special_handling": null,
  "sample_pack_size": 30,
  "sample_volume": "30 count",
  "url": "https://www.costplusdrugs.com/medications/atorvastatin-10mg-tablet/?utm_source=api&utm_content=pricing-api",
  "cpd_channel": {
    "cash_dispensing_fee": 5,
    "cash_shipping_cost": 5.25,
    "cash_expedited_shipping_cost": 15,
    "insurance_eligible": true,
    "currency": "USD",
    "in_stock": true,
    "price_per_unit": 0.00834,
    "sample_pricing": [
      {
        "sample_pack_size": "30 count",
        "sample_pack_price": "0.25",
        "sample_pack_price_total_to_patient_without_shipping": "5.25"
      },
      {
        "sample_pack_size": "60 count",
        "sample_pack_price": "0.50",
        "sample_pack_price_total_to_patient_without_shipping": "5.50"
      },
      {
        "sample_pack_size": "90 count",
        "sample_pack_price": "0.75",
        "sample_pack_price_total_to_patient_without_shipping": "5.75"
      }
    ],
    "sample_pack_price": "0.25",
    "sample_pack_price_total_to_patient_without_shipping": "5.25",
    "sample_pack_price_w_shipping_dispensing": "10.50"
  }
}

Pricing Formulas: Cash

For cash-pay patients, the total cost to the patient for a standard fill is:

Formula
patient_total = (sample_pack_size × price_per_unit)
              + cash_dispensing_fee      // $5 standard · $15 cold-chain
              + cash_shipping_cost       // $5.25 standard · $55 cold-chain

This is pre-computed in cpd_channel.sample_pack_price_w_shipping_dispensing for the default sample_pack_size only. Per-quantity totals without shipping are in sample_pricing[].sample_pack_price_total_to_patient_without_shipping.

Pricing Formulas: Insurance

For insurance-eligible drugs, use the insurance track fields:

Formula
patient_total = (sample_pack_size × price_per_unit)
              + insurance_dispensing_fee      // $5 standard · $10 cold-chain
              + insurance_shipping_cost       // $4 standard · $55 cold-chain
⚠️ Check cpd_channel.insurance_eligible before presenting insurance pricing. If false, the drug can only be dispensed on the cash track.