Docs
Endpoints · Billing

GET/v1/billing

The organisation's plan and this month's fees, for an app that bills through its platform.

What it does

For a platform app that bills its shop through the platform (the Shopify app): the organisation's billing provider (stripe or shopify), status, trial_ends_at, the plan with its fee tiers, and month -- this calendar month's designer sales and fees per currency. unreported lists the fees not yet put on the shop's platform bill, oldest first (always empty unless the organisation is billed through Shopify): report each as usage, then mark them with POST /v1/billing.

Send the key: Authorization: Bearer sk_test_… or sk_live_….

curl "https://printwisp.com/v1/billing" \
  -H "Authorization: Bearer $PRINTWISP_KEY"

# 200
{
  "provider": "shopify",
  "status": "active",
  "trial_ends_at": null,
  "shop": "harbour-prints.myshopify.com",
  "subscription": "gid://shopify/AppSubscription/1029384756",
  "plan": {
    "code": "growth",
    "name": "Growth",
    "monthly_price": "29.00",
    "currency": "AUD",
    "fee_percent": "3.00",
    "tiers": []
  },
  "month": { "AUD": { "sales": 1170, "fees": 35.1, "lines": 4 } },
  "unreported": [
    {
      "id": 812,
      "order_ref": "#1042",
      "sales": "345.00",
      "currency": "AUD",
      "fee_percent": "3.00",
      "fee": "10.35",
      "placed_at": "2026-10-05T04:31:02+00:00"
    }
  ]
}
<?php
$ch = curl_init('https://printwisp.com/v1/billing');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . getenv('PRINTWISP_KEY'), 'Content-Type: application/json'],
]);
$answer = json_decode(curl_exec($ch), true);
// Node (your server). The key never reaches a browser.
const r = await fetch('https://printwisp.com/v1/billing', {
  headers: { Authorization: 'Bearer ' + process.env.PRINTWISP_KEY },
});
const answer = await r.json();
import os, requests

r = requests.get(
    "https://printwisp.com/v1/billing",
    headers={"Authorization": f"Bearer {os.environ['PRINTWISP_KEY']}"},
)
answer = r.json()

Response

200 application/json. The organisation's billing.

{
  "provider": "shopify",
  "status": "active",
  "trial_ends_at": null,
  "shop": "harbour-prints.myshopify.com",
  "subscription": "gid://shopify/AppSubscription/1029384756",
  "plan": {
    "code": "growth",
    "name": "Growth",
    "monthly_price": "29.00",
    "currency": "AUD",
    "fee_percent": "3.00",
    "tiers": []
  },
  "month": { "AUD": { "sales": 1170, "fees": 35.1, "lines": 4 } },
  "unreported": [
    {
      "id": 812,
      "order_ref": "#1042",
      "sales": "345.00",
      "currency": "AUD",
      "fee_percent": "3.00",
      "fee": "10.35",
      "placed_at": "2026-10-05T04:31:02+00:00"
    }
  ]
}

Errors

HTTPerrormessage
401unauthorizedSend Authorization: Bearer <secret key>. Keys are made in PrintWisp, on your store's Overview → API keys.
{
  "error": "unauthorized",
  "message": "Send Authorization: Bearer <secret key>. Keys are made in PrintWisp, on your store's Overview → API keys."
}

← Every routeQuickstart →