SUQODocs
User GuideAPI ReferenceSDKs
TypeScript SDK v1.0.0. This version is frozen and no longer updated. Read the latest (1.1.0).

Browse the catalog

Browsing your product catalog with the SUQO TypeScript SDK.

Read-only — the only resource that works before your seller account completes KYC verification, since there's no seller action involved in just browsing your own catalog.

Listing products

const page = await suqo.products.list();
page.results; // Product[]

list() is paginated — see Pagination for page/pageSize and .autoPaging(). It takes the same { page?, pageSize? } params every paginated resource does:

await suqo.products.list({ page: 2, pageSize: 50 });

Finding a billing period to subscribe to

A Product carries its plan[], and each Plan carries its billingPeriods[]. The pbpId on a billing period is what you pass to subscriptions.create() — it's the one identifier that ties "what a buyer is browsing" to "what they subscribe to":

const product = page.results[0];
const billingPeriod = product?.plan[0]?.billingPeriods[0];
if (!billingPeriod) throw new Error("no billing period available");

await suqo.subscriptions.create({
  pbpId: billingPeriod.pbpId,
  returnUrl: "https://your-app.example/return",
  customer: { phone: "9800000001", fullName: "John Doe", email: "[email protected]", address: "Kathmandu" },
});

Fields worth knowing about

  • vat can be null — not every product has VAT configured.
  • price, vatPercentage, totalSubscribers are decimal-shaped values sent as strings on the wire (e.g. "500.00") and kept as strings end to end — never coerced to number. Format or parse them yourself if you need arithmetic; the SDK won't silently round anything.
  • plan and a plan's billingPeriods can both come back empty — a product with no plans configured yet is spec-legal, not a bug in your integration.
interface Product {
  productId: string;
  name: string;
  description: string;
  type: string;
  isActive: boolean;
  termsAndConditions: string;
  featuresAndBenefits: string;
  vat: ProductVat | null;
  productImage: string[];
  plan: Plan[];
  totalSubscribers: string; // decimal string
  createdAt: string;
  updatedAt: string;
}

On this page