chargefy-js 1.1.11 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -384,6 +384,29 @@ const result = await chargefy.checkouts.create({
384
384
  // result.value → Checkout (has clientSecret)
385
385
  ```
386
386
 
387
+ ### Create checkout with bundle (cross-sell)
388
+
389
+ When the main product is recurring, add-on products must use the **same billing period** (e.g. both monthly). `amount` is the **bundle total** in cents; each `crossSell` line uses `amountCents` as the line total (quantity already applied).
390
+
391
+ ```ts
392
+ const result = await chargefy.checkouts.create({
393
+ organizationId: 'org_xxx',
394
+ productId: 'prod_main',
395
+ amount: 15000, // R$ 150,00 total (main share + add-ons)
396
+ crossSell: [
397
+ {
398
+ productId: 'prod_addon',
399
+ productPriceId: 'price_xxx', // optional
400
+ quantity: 1,
401
+ amountCents: 5000,
402
+ nameSnapshot: 'Extra seats',
403
+ },
404
+ ],
405
+ customerEmail: 'customer@example.com',
406
+ successUrl: 'https://mysite.com/success',
407
+ })
408
+ ```
409
+
387
410
  ### Get a checkout
388
411
 
389
412
  ```ts
@@ -449,6 +472,37 @@ if (result.ok) {
449
472
 
450
473
  ---
451
474
 
475
+ ## Subscriptions
476
+
477
+ List and fetch subscriptions for your organization. Responses may include **`crossSell`**: bundle add-on lines; **`amount`** is the recurring bundle total in cents.
478
+
479
+ ```ts
480
+ const list = await chargefy.subscriptions.list({ active: true, limit: 50 })
481
+ const one = await chargefy.subscriptions.get('sub_xxx')
482
+ if (one.ok && one.value.crossSell?.length) {
483
+ console.log('Bundle add-ons:', one.value.crossSell)
484
+ }
485
+
486
+ // Update next due date, total, and/or bundle lines (OAT / session with write scope)
487
+ await chargefy.subscriptions.updateBilling('sub_xxx', {
488
+ dueDate: '2025-06-15',
489
+ amount: 12000,
490
+ crossSell: [
491
+ {
492
+ productId: 'prod_addon',
493
+ productPriceId: null,
494
+ quantity: 1,
495
+ amountCents: 2000,
496
+ nameSnapshot: 'Add-on',
497
+ },
498
+ ],
499
+ })
500
+ ```
501
+
502
+ Pass **`crossSell: []`** to clear add-ons. Omit **`crossSell`** on `updateBilling` if you only change `dueDate` or `amount` and want to keep existing lines unchanged.
503
+
504
+ ---
505
+
452
506
  ## Error Handling
453
507
 
454
508
  ```ts
@@ -501,6 +555,8 @@ import type {
501
555
  CheckoutConfirmed,
502
556
  ConfirmCheckoutRequest,
503
557
  CardData,
558
+ CrossSellLine,
559
+ UpdateSubscriptionBillingRequest,
504
560
  ListResponse,
505
561
  Result,
506
562
  // Sub-organizations & onboarding
package/dist/index.d.ts CHANGED
@@ -9,10 +9,11 @@ export type { Organization } from './models/organization.js';
9
9
  export type { Product, ProductPrice, CreateProductRequest, UpdateProductRequest, } from './models/product.js';
10
10
  export type { CheckoutLink, CreateCheckoutLinkRequest, UpdateCheckoutLinkRequest, } from './models/checkoutLink.js';
11
11
  export type { Buyer, BuyerListItem, BuyerListParams, CreateBuyerRequest, CreateBuyerResponse, BuyerLookupResult, } from './models/buyer.js';
12
+ export type { CrossSellLine } from './models/cross-sell.js';
12
13
  export type { Checkout, CheckoutConfirmed, CheckoutProduct, InstallmentOption, CreateCheckoutRequest, UpdateCheckoutRequest, ConfirmCheckoutRequest, GeneratePixRequest, CardData, PixPaymentData, } from './models/checkout.js';
13
14
  export type { ListResponse, ListParams } from './models/pagination.js';
14
15
  export type { Sale, SaleListParams, SaleStatus, PaymentType, SaleCardData, SaleBoletoData, SalePixData, SaleCustomer, SaleProduct, } from './models/sale.js';
15
- export type { Subscription, SubscriptionListParams, SubscriptionStatus, SubscriptionRecurringInterval, CustomerCancellationReason, SubscriptionProduct, SubscriptionCustomer, } from './models/subscription.js';
16
+ export type { Subscription, SubscriptionListParams, SubscriptionStatus, SubscriptionRecurringInterval, CustomerCancellationReason, SubscriptionProduct, SubscriptionCustomer, UpdateSubscriptionBillingRequest, } from './models/subscription.js';
16
17
  export type { SubOrganizationListItem, SubOrgAddress, SubOrgIndividual, SubOrgBusiness, SubOrgBankAccount, CreateSubOrganizationRequest, CreateSubOrganizationResponse, EmbedSubmitRequest, CheckExistingResponse, LinkExistingResponse, CreateProductForChildRequest, OrgAccessToken, CreateOrgAccessTokenRequest, CreateOrgAccessTokenResponse, } from './models/sub-organization.js';
17
18
  export type { WebhookEndpoint, WebhookEventType, WebhookFormat, CreateWebhookEndpointRequest, UpdateWebhookEndpointRequest, WebhookEndpointListParams, WebhookDeliveryListParams, } from './models/webhook.js';
18
19
  export { SUBORGANIZATION_EVENTS } from './models/webhook.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGzC,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAG3C,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,YAAY,EACV,OAAO,EACP,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAA;AACjC,YAAY,EACV,KAAK,EACL,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,YAAY,EACV,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,QAAQ,EACR,cAAc,GACf,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACtE,YAAY,EACV,IAAI,EACJ,cAAc,EACd,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,WAAW,GACZ,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,EAC7B,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,EACpB,gCAAgC,GACjC,MAAM,0BAA0B,CAAA;AACjC,YAAY,EACV,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,4BAA4B,EAC5B,6BAA6B,EAC7B,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,4BAA4B,EAC5B,cAAc,EACd,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,YAAY,EACV,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,6BAA6B,CAAA;AACpC,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,iBAAiB,CAAA;AACxB,YAAY,EACV,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,GAChB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AACxG,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAA;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA"}
@@ -1,3 +1,4 @@
1
+ import type { CrossSellLine } from './cross-sell.js';
1
2
  export interface InstallmentOption {
2
3
  installments: number;
3
4
  /** Amount per installment in cents. */
@@ -39,6 +40,8 @@ export interface Checkout {
39
40
  /** Installment fee options keyed by card brand ('Visa', 'MasterCard', 'Elo', 'American Express', 'default'). */
40
41
  installmentOptions?: Record<string, InstallmentOption[]> | null;
41
42
  product?: CheckoutProduct;
43
+ /** Bundle add-on lines; `amount` is the bundle total in cents. */
44
+ crossSell?: CrossSellLine[];
42
45
  metadata?: Record<string, unknown>;
43
46
  createdAt?: string;
44
47
  }
@@ -72,8 +75,13 @@ export interface CreateCheckoutRequest {
72
75
  customerEmail?: string;
73
76
  customerName?: string;
74
77
  customerTaxId?: string;
75
- /** Override the product price (cents). */
78
+ /**
79
+ * Bundle total in cents when using cross-sell add-ons.
80
+ * Required (positive) when `crossSell` is non-empty.
81
+ */
76
82
  amount?: number;
83
+ /** Add-on bundle lines; omit or use empty array for main product only. */
84
+ crossSell?: CrossSellLine[];
77
85
  successUrl?: string;
78
86
  requireBillingAddress?: boolean;
79
87
  metadata?: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/models/checkout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/models/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,EAAE,OAAO,CAAA;IACpB,iBAAiB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE;QACb,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAC1B,CAAA;CACF;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;IACjE,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,qBAAqB,EAAE,OAAO,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,gHAAgH;IAChH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,GAAG,IAAI,CAAA;IAC/D,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,kEAAkE;IAClE,SAAS,CAAC,EAAE,aAAa,EAAE,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAA;IACrB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAkB,SAAQ,QAAQ;IACjD,eAAe,CAAC,EAAE;QAChB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,gCAAgC;QAChC,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,gCAAgC;QAChC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAC/B,GAAG,IAAI,CAAA;IACR,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,aAAa,EAAE,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,2EAA2E;AAC3E,MAAM,WAAW,QAAQ;IACvB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAA;IAClB,6CAA6C;IAC7C,eAAe,EAAE,MAAM,CAAA;IACvB,2EAA2E;IAC3E,cAAc,EAAE,MAAM,CAAA;IACtB,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAA;IACX,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,aAAa,CAAA;IAC5B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mBAAmB;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,QAAQ,CAAA;IACd,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB"}
@@ -2,6 +2,7 @@
2
2
  * CheckoutPublic - Public-facing checkout model
3
3
  * Compatible with Polar's CheckoutPublic structure but with Celcoin payment processor
4
4
  */
5
+ import type { CrossSellLine } from '../cross-sell.js';
5
6
  export interface Address {
6
7
  line1?: string;
7
8
  line2?: string | null;
@@ -106,6 +107,8 @@ export interface CheckoutPublic {
106
107
  customFieldData?: Record<string, any>;
107
108
  paymentProcessorMetadata: Record<string, any>;
108
109
  subscriptionId?: string | null;
110
+ /** Bundle add-on lines; `amount` / `totalAmount` reflect bundle total. */
111
+ crossSell?: CrossSellLine[];
109
112
  metadata?: Record<string, any>;
110
113
  customerMetadata?: Record<string, string | number | boolean>;
111
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"checkoutpublic.d.ts","sourceRoot":"","sources":["../../../src/models/components/checkoutpublic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkoutpublic.d.ts","sourceRoot":"","sources":["../../../src/models/components/checkoutpublic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Bundle add-on line (cross-sell) aligned with API JSON after camelCase transformation.
3
+ *
4
+ * Rules (server-side):
5
+ * - Checkout/subscription `amount` is the **bundle total** in cents.
6
+ * - Sum of `amountCents` per line must not exceed that total.
7
+ * - Add-on products must belong to the same organization and match the main product's
8
+ * recurring billing period when the main product is recurring.
9
+ */
10
+ export interface CrossSellLine {
11
+ productId: string;
12
+ productPriceId?: string | null;
13
+ quantity: number;
14
+ /** Line total in cents (quantity already applied). */
15
+ amountCents: number;
16
+ nameSnapshot: string;
17
+ }
18
+ //# sourceMappingURL=cross-sell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-sell.d.ts","sourceRoot":"","sources":["../../src/models/cross-sell.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;CACrB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Bundle add-on line (cross-sell) aligned with API JSON after camelCase transformation.
3
+ *
4
+ * Rules (server-side):
5
+ * - Checkout/subscription `amount` is the **bundle total** in cents.
6
+ * - Sum of `amountCents` per line must not exceed that total.
7
+ * - Add-on products must belong to the same organization and match the main product's
8
+ * recurring billing period when the main product is recurring.
9
+ */
10
+ export {};
@@ -112,27 +112,12 @@ export interface CreateProductForChildRequest {
112
112
  referenceId?: string | null;
113
113
  }
114
114
  export interface CreateSubOrganizationResponse {
115
- organization: {
115
+ suborganization: {
116
116
  id: string;
117
117
  name: string;
118
118
  slug: string;
119
119
  status: string;
120
120
  };
121
- seller: {
122
- id: string;
123
- zoop_seller_id: string;
124
- status: string;
125
- seller_type: string;
126
- reused_existing_seller: boolean;
127
- };
128
- bank_account: {
129
- id: string;
130
- zoop_bank_account_id: string;
131
- bank_code: string;
132
- account_number_last4: string;
133
- account_type: string;
134
- is_verified: boolean;
135
- } | null;
136
121
  /** The API key for the new organization. Shown once — store it securely. */
137
122
  api_key: string;
138
123
  status: string;
@@ -1 +1 @@
1
- {"version":3,"file":"sub-organization.d.ts","sourceRoot":"","sources":["../../src/models/sub-organization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sub-organization.d.ts","sourceRoot":"","sources":["../../src/models/sub-organization.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { CrossSellLine } from './cross-sell.js';
1
2
  export type SubscriptionStatus = 'incomplete' | 'incomplete_expired' | 'trialing' | 'active' | 'past_due' | 'canceled' | 'unpaid';
2
3
  export type SubscriptionRecurringInterval = 'month' | 'year';
3
4
  export type CustomerCancellationReason = 'customer_service' | 'low_quality' | 'missing_features' | 'switched_service' | 'too_complex' | 'too_expensive' | 'unused' | 'other';
@@ -46,10 +47,23 @@ export interface Subscription {
46
47
  checkoutId?: string | null;
47
48
  userMetadata?: Record<string, unknown>;
48
49
  cardData?: SubscriptionCardData | null;
50
+ /** Bundle add-on snapshot; `amount` is the recurring bundle total in cents. */
51
+ crossSell?: CrossSellLine[];
49
52
  customer?: SubscriptionCustomer;
50
53
  product?: SubscriptionProduct;
51
54
  discount?: SubscriptionDiscount;
52
55
  }
56
+ export interface UpdateSubscriptionBillingRequest {
57
+ /** ISO date YYYY-MM-DD (next charge / period end alignment). */
58
+ dueDate?: string;
59
+ /** Bundle total in cents. Required when updating a non-empty `crossSell`. */
60
+ amount?: number;
61
+ /**
62
+ * When set (including `[]`), replaces stored bundle lines.
63
+ * Omit the property to leave `cross_sell` unchanged on the server.
64
+ */
65
+ crossSell?: CrossSellLine[];
66
+ }
53
67
  export interface SubscriptionListParams {
54
68
  organizationId?: string | string[];
55
69
  customerId?: string | string[];
@@ -1 +1 @@
1
- {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/models/subscription.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/models/subscription.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkouts.d.ts","sourceRoot":"","sources":["../../src/namespaces/checkouts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EACV,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAA;AAGxF,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,YAAY;IAE/C,qCAAqC;IACrC,MAAM,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAoBxE,4BAA4B;IAC5B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAOpD,2CAA2C;IAC3C,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAQ5E,mFAAmF;IACnF,oBAAoB,CAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAUtC,gDAAgD;IAChD,MAAM,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAcxE;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAwBnF;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;CAepF"}
1
+ {"version":3,"file":"checkouts.d.ts","sourceRoot":"","sources":["../../src/namespaces/checkouts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EACV,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAA;AAGxF,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,YAAY;IAE/C,qCAAqC;IACrC,MAAM,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAuBxE,4BAA4B;IAC5B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAOpD,2CAA2C;IAC3C,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAQ5E,mFAAmF;IACnF,oBAAoB,CAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAUtC,gDAAgD;IAChD,MAAM,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAcxE;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAwBnF;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;CAepF"}
@@ -1,4 +1,4 @@
1
- import { transformToSnakeCase } from '../utils/transformers.js';
1
+ import { crossSellLinesToSnakeCase, transformToSnakeCase } from '../utils/transformers.js';
2
2
  export class Checkouts {
3
3
  core;
4
4
  constructor(core) {
@@ -20,6 +20,9 @@ export class Checkouts {
20
20
  payload.customer_tax_id = body.customerTaxId;
21
21
  if (body.amount !== undefined)
22
22
  payload.amount = body.amount;
23
+ if (body.crossSell !== undefined && body.crossSell.length > 0) {
24
+ payload.cross_sell = crossSellLinesToSnakeCase(body.crossSell);
25
+ }
23
26
  if (body.successUrl !== undefined)
24
27
  payload.success_url = body.successUrl;
25
28
  if (body.requireBillingAddress !== undefined)
@@ -1,6 +1,6 @@
1
1
  import type { ChargefyCore, APIError } from '../core.js';
2
2
  import type { Result } from '../types/fp.js';
3
- import type { Subscription, SubscriptionListParams } from '../models/subscription.js';
3
+ import type { Subscription, SubscriptionListParams, UpdateSubscriptionBillingRequest } from '../models/subscription.js';
4
4
  import type { ListResponse } from '../models/pagination.js';
5
5
  export declare class Subscriptions {
6
6
  private readonly core;
@@ -9,5 +9,10 @@ export declare class Subscriptions {
9
9
  list(params?: SubscriptionListParams): Promise<Result<ListResponse<Subscription>, APIError>>;
10
10
  /** Get a subscription by ID. */
11
11
  get(id: string): Promise<Result<Subscription, APIError>>;
12
+ /**
13
+ * Update subscription billing: next due date, bundle total, and/or cross-sell lines.
14
+ * At least one of `dueDate`, `amount`, or `crossSell` must be provided.
15
+ */
16
+ updateBilling(subscriptionId: string, body: UpdateSubscriptionBillingRequest): Promise<Result<Subscription, APIError>>;
12
17
  }
13
18
  //# sourceMappingURL=subscriptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../../src/namespaces/subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,YAAY;IAE/C,gDAAgD;IAChD,IAAI,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC;IA2ChG,gCAAgC;IAChC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;CAMzD"}
1
+ {"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../../src/namespaces/subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,gCAAgC,EACjC,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,YAAY;IAE/C,gDAAgD;IAChD,IAAI,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC;IA2ChG,gCAAgC;IAChC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAOxD;;;OAGG;IACH,aAAa,CACX,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,gCAAgC,GACrC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;CAc3C"}
@@ -1,3 +1,4 @@
1
+ import { crossSellLinesToSnakeCase } from '../utils/transformers.js';
1
2
  export class Subscriptions {
2
3
  core;
3
4
  constructor(core) {
@@ -51,4 +52,24 @@ export class Subscriptions {
51
52
  path: `/v1/subscriptions/${encodeURIComponent(id)}`,
52
53
  });
53
54
  }
55
+ /**
56
+ * Update subscription billing: next due date, bundle total, and/or cross-sell lines.
57
+ * At least one of `dueDate`, `amount`, or `crossSell` must be provided.
58
+ */
59
+ updateBilling(subscriptionId, body) {
60
+ const payload = {};
61
+ if (body.dueDate !== undefined)
62
+ payload.due_date = body.dueDate;
63
+ if (body.amount !== undefined)
64
+ payload.amount = body.amount;
65
+ if (body.crossSell !== undefined) {
66
+ payload.cross_sell =
67
+ body.crossSell.length > 0 ? crossSellLinesToSnakeCase(body.crossSell) : [];
68
+ }
69
+ return this.core.request({
70
+ method: 'PATCH',
71
+ path: `/v1/subscriptions/${encodeURIComponent(subscriptionId)}/billing`,
72
+ body: payload,
73
+ });
74
+ }
54
75
  }
@@ -3,6 +3,16 @@
3
3
  * Converts between API snake_case and SDK camelCase
4
4
  */
5
5
  import type { CheckoutPublic } from '../models/components/checkoutpublic.js';
6
+ import type { CrossSellLine } from '../models/cross-sell.js';
7
+ /** API payload shape for `cross_sell` array items. */
8
+ export declare function crossSellLinesToSnakeCase(lines: CrossSellLine[]): Array<{
9
+ product_id: string;
10
+ product_price_id: string | null;
11
+ quantity: number;
12
+ amount_cents: number;
13
+ name_snapshot: string;
14
+ }>;
15
+ export declare function transformCrossSellToCamelCase(raw: unknown): CrossSellLine[] | undefined;
6
16
  /**
7
17
  * Transform API snake_case response to SDK camelCase
8
18
  */
@@ -1 +1 @@
1
- {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../src/utils/transformers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAE5E;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,CA+DtE;AAoED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAahE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAoBnD"}
1
+ {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../src/utils/transformers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D,sDAAsD;AACtD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EAAE,GACrB,KAAK,CAAC;IACP,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAC,CAQD;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,EAAE,GAAG,SAAS,CA8BvF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,CAiEtE;AAoED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAahE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAoBnD"}
@@ -2,6 +2,48 @@
2
2
  * Data transformation utilities
3
3
  * Converts between API snake_case and SDK camelCase
4
4
  */
5
+ /** API payload shape for `cross_sell` array items. */
6
+ export function crossSellLinesToSnakeCase(lines) {
7
+ return lines.map((l) => ({
8
+ product_id: l.productId,
9
+ product_price_id: l.productPriceId ?? null,
10
+ quantity: l.quantity,
11
+ amount_cents: l.amountCents,
12
+ name_snapshot: l.nameSnapshot,
13
+ }));
14
+ }
15
+ export function transformCrossSellToCamelCase(raw) {
16
+ if (!Array.isArray(raw) || raw.length === 0)
17
+ return undefined;
18
+ const out = [];
19
+ for (const row of raw) {
20
+ if (!row || typeof row !== 'object')
21
+ continue;
22
+ const r = row;
23
+ const productId = (r.product_id ?? r.productId);
24
+ if (typeof productId !== 'string')
25
+ continue;
26
+ const qty = typeof r.quantity === 'number' ? r.quantity : Number(r.quantity) || 1;
27
+ const amountCentsRaw = r.amount_cents ?? r.amountCents;
28
+ const amountCents = typeof amountCentsRaw === 'number' ? amountCentsRaw : Number(amountCentsRaw) || 0;
29
+ const nameSnapRaw = r.name_snapshot ?? r.nameSnapshot;
30
+ const nameSnapshot = typeof nameSnapRaw === 'string' ? nameSnapRaw : '';
31
+ const ppRaw = r.product_price_id ?? r.productPriceId;
32
+ const productPriceId = ppRaw === null || ppRaw === undefined
33
+ ? null
34
+ : typeof ppRaw === 'string'
35
+ ? ppRaw
36
+ : null;
37
+ out.push({
38
+ productId,
39
+ productPriceId,
40
+ quantity: qty,
41
+ amountCents,
42
+ nameSnapshot,
43
+ });
44
+ }
45
+ return out.length > 0 ? out : undefined;
46
+ }
5
47
  /**
6
48
  * Transform API snake_case response to SDK camelCase
7
49
  */
@@ -57,6 +99,7 @@ export function transformCheckoutToCamelCase(data) {
57
99
  subscriptionId: data.subscription_id,
58
100
  metadata: data.metadata,
59
101
  customerMetadata: data.customer_metadata,
102
+ crossSell: transformCrossSellToCamelCase(data.cross_sell),
60
103
  };
61
104
  }
62
105
  function transformAddressToCamelCase(address) {
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "1.1.11",
7
+ "version": "1.2.0",
8
8
  "type": "module",
9
9
  "main": "./dist/index.js",
10
10
  "module": "./dist/index.js",
package/src/index.ts CHANGED
@@ -31,6 +31,7 @@ export type {
31
31
  CreateBuyerResponse,
32
32
  BuyerLookupResult,
33
33
  } from './models/buyer.js'
34
+ export type { CrossSellLine } from './models/cross-sell.js'
34
35
  export type {
35
36
  Checkout,
36
37
  CheckoutConfirmed,
@@ -63,6 +64,7 @@ export type {
63
64
  CustomerCancellationReason,
64
65
  SubscriptionProduct,
65
66
  SubscriptionCustomer,
67
+ UpdateSubscriptionBillingRequest,
66
68
  } from './models/subscription.js'
67
69
  export type {
68
70
  SubOrganizationListItem,
@@ -1,3 +1,5 @@
1
+ import type { CrossSellLine } from './cross-sell.js'
2
+
1
3
  export interface InstallmentOption {
2
4
  installments: number
3
5
  /** Amount per installment in cents. */
@@ -41,6 +43,8 @@ export interface Checkout {
41
43
  /** Installment fee options keyed by card brand ('Visa', 'MasterCard', 'Elo', 'American Express', 'default'). */
42
44
  installmentOptions?: Record<string, InstallmentOption[]> | null
43
45
  product?: CheckoutProduct
46
+ /** Bundle add-on lines; `amount` is the bundle total in cents. */
47
+ crossSell?: CrossSellLine[]
44
48
  metadata?: Record<string, unknown>
45
49
  createdAt?: string
46
50
  }
@@ -77,8 +81,13 @@ export interface CreateCheckoutRequest {
77
81
  customerEmail?: string
78
82
  customerName?: string
79
83
  customerTaxId?: string
80
- /** Override the product price (cents). */
84
+ /**
85
+ * Bundle total in cents when using cross-sell add-ons.
86
+ * Required (positive) when `crossSell` is non-empty.
87
+ */
81
88
  amount?: number
89
+ /** Add-on bundle lines; omit or use empty array for main product only. */
90
+ crossSell?: CrossSellLine[]
82
91
  successUrl?: string
83
92
  requireBillingAddress?: boolean
84
93
  metadata?: Record<string, unknown>
@@ -3,6 +3,8 @@
3
3
  * Compatible with Polar's CheckoutPublic structure but with Celcoin payment processor
4
4
  */
5
5
 
6
+ import type { CrossSellLine } from '../cross-sell.js'
7
+
6
8
  export interface Address {
7
9
  line1?: string
8
10
  line2?: string | null
@@ -135,6 +137,9 @@ export interface CheckoutPublic {
135
137
  // Subscription
136
138
  subscriptionId?: string | null
137
139
 
140
+ /** Bundle add-on lines; `amount` / `totalAmount` reflect bundle total. */
141
+ crossSell?: CrossSellLine[]
142
+
138
143
  // Metadata
139
144
  metadata?: Record<string, any>
140
145
  customerMetadata?: Record<string, string | number | boolean>
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Bundle add-on line (cross-sell) aligned with API JSON after camelCase transformation.
3
+ *
4
+ * Rules (server-side):
5
+ * - Checkout/subscription `amount` is the **bundle total** in cents.
6
+ * - Sum of `amountCents` per line must not exceed that total.
7
+ * - Add-on products must belong to the same organization and match the main product's
8
+ * recurring billing period when the main product is recurring.
9
+ */
10
+
11
+ export interface CrossSellLine {
12
+ productId: string
13
+ productPriceId?: string | null
14
+ quantity: number
15
+ /** Line total in cents (quantity already applied). */
16
+ amountCents: number
17
+ nameSnapshot: string
18
+ }
@@ -120,27 +120,12 @@ export interface CreateProductForChildRequest {
120
120
  // ── Response ──────────────────────────────────────────────────────────────────
121
121
 
122
122
  export interface CreateSubOrganizationResponse {
123
- organization: {
123
+ suborganization: {
124
124
  id: string
125
125
  name: string
126
126
  slug: string
127
127
  status: string
128
128
  }
129
- seller: {
130
- id: string
131
- zoop_seller_id: string
132
- status: string
133
- seller_type: string
134
- reused_existing_seller: boolean
135
- }
136
- bank_account: {
137
- id: string
138
- zoop_bank_account_id: string
139
- bank_code: string
140
- account_number_last4: string
141
- account_type: string
142
- is_verified: boolean
143
- } | null
144
129
  /** The API key for the new organization. Shown once — store it securely. */
145
130
  api_key: string
146
131
  status: string
@@ -1,3 +1,5 @@
1
+ import type { CrossSellLine } from './cross-sell.js'
2
+
1
3
  export type SubscriptionStatus =
2
4
  | 'incomplete'
3
5
  | 'incomplete_expired'
@@ -68,11 +70,25 @@ export interface Subscription {
68
70
  checkoutId?: string | null
69
71
  userMetadata?: Record<string, unknown>
70
72
  cardData?: SubscriptionCardData | null
73
+ /** Bundle add-on snapshot; `amount` is the recurring bundle total in cents. */
74
+ crossSell?: CrossSellLine[]
71
75
  customer?: SubscriptionCustomer
72
76
  product?: SubscriptionProduct
73
77
  discount?: SubscriptionDiscount
74
78
  }
75
79
 
80
+ export interface UpdateSubscriptionBillingRequest {
81
+ /** ISO date YYYY-MM-DD (next charge / period end alignment). */
82
+ dueDate?: string
83
+ /** Bundle total in cents. Required when updating a non-empty `crossSell`. */
84
+ amount?: number
85
+ /**
86
+ * When set (including `[]`), replaces stored bundle lines.
87
+ * Omit the property to leave `cross_sell` unchanged on the server.
88
+ */
89
+ crossSell?: CrossSellLine[]
90
+ }
91
+
76
92
  export interface SubscriptionListParams {
77
93
  organizationId?: string | string[]
78
94
  customerId?: string | string[]
@@ -9,7 +9,7 @@ import type {
9
9
  GeneratePixRequest,
10
10
  } from '../models/checkout.js'
11
11
  import type { CheckoutUpdatePublic } from '../models/components/checkoutupdatepublic.js'
12
- import { transformToSnakeCase } from '../utils/transformers.js'
12
+ import { crossSellLinesToSnakeCase, transformToSnakeCase } from '../utils/transformers.js'
13
13
 
14
14
  export class Checkouts {
15
15
  constructor(private readonly core: ChargefyCore) {}
@@ -25,6 +25,9 @@ export class Checkouts {
25
25
  if (body.customerName !== undefined) payload.customer_name = body.customerName
26
26
  if (body.customerTaxId !== undefined) payload.customer_tax_id = body.customerTaxId
27
27
  if (body.amount !== undefined) payload.amount = body.amount
28
+ if (body.crossSell !== undefined && body.crossSell.length > 0) {
29
+ payload.cross_sell = crossSellLinesToSnakeCase(body.crossSell)
30
+ }
28
31
  if (body.successUrl !== undefined) payload.success_url = body.successUrl
29
32
  if (body.requireBillingAddress !== undefined) payload.require_billing_address = body.requireBillingAddress
30
33
  if (body.metadata !== undefined) payload.metadata = body.metadata
@@ -1,6 +1,11 @@
1
1
  import type { ChargefyCore, APIError } from '../core.js'
2
2
  import type { Result } from '../types/fp.js'
3
- import type { Subscription, SubscriptionListParams } from '../models/subscription.js'
3
+ import type {
4
+ Subscription,
5
+ SubscriptionListParams,
6
+ UpdateSubscriptionBillingRequest,
7
+ } from '../models/subscription.js'
8
+ import { crossSellLinesToSnakeCase } from '../utils/transformers.js'
4
9
  import type { ListResponse } from '../models/pagination.js'
5
10
 
6
11
  export class Subscriptions {
@@ -57,4 +62,26 @@ export class Subscriptions {
57
62
  path: `/v1/subscriptions/${encodeURIComponent(id)}`,
58
63
  })
59
64
  }
65
+
66
+ /**
67
+ * Update subscription billing: next due date, bundle total, and/or cross-sell lines.
68
+ * At least one of `dueDate`, `amount`, or `crossSell` must be provided.
69
+ */
70
+ updateBilling(
71
+ subscriptionId: string,
72
+ body: UpdateSubscriptionBillingRequest
73
+ ): Promise<Result<Subscription, APIError>> {
74
+ const payload: Record<string, unknown> = {}
75
+ if (body.dueDate !== undefined) payload.due_date = body.dueDate
76
+ if (body.amount !== undefined) payload.amount = body.amount
77
+ if (body.crossSell !== undefined) {
78
+ payload.cross_sell =
79
+ body.crossSell.length > 0 ? crossSellLinesToSnakeCase(body.crossSell) : []
80
+ }
81
+ return this.core.request<Subscription>({
82
+ method: 'PATCH',
83
+ path: `/v1/subscriptions/${encodeURIComponent(subscriptionId)}/billing`,
84
+ body: payload,
85
+ })
86
+ }
60
87
  }
@@ -4,6 +4,58 @@
4
4
  */
5
5
 
6
6
  import type { CheckoutPublic } from '../models/components/checkoutpublic.js'
7
+ import type { CrossSellLine } from '../models/cross-sell.js'
8
+
9
+ /** API payload shape for `cross_sell` array items. */
10
+ export function crossSellLinesToSnakeCase(
11
+ lines: CrossSellLine[]
12
+ ): Array<{
13
+ product_id: string
14
+ product_price_id: string | null
15
+ quantity: number
16
+ amount_cents: number
17
+ name_snapshot: string
18
+ }> {
19
+ return lines.map((l) => ({
20
+ product_id: l.productId,
21
+ product_price_id: l.productPriceId ?? null,
22
+ quantity: l.quantity,
23
+ amount_cents: l.amountCents,
24
+ name_snapshot: l.nameSnapshot,
25
+ }))
26
+ }
27
+
28
+ export function transformCrossSellToCamelCase(raw: unknown): CrossSellLine[] | undefined {
29
+ if (!Array.isArray(raw) || raw.length === 0) return undefined
30
+ const out: CrossSellLine[] = []
31
+ for (const row of raw) {
32
+ if (!row || typeof row !== 'object') continue
33
+ const r = row as Record<string, unknown>
34
+ const productId = (r.product_id ?? r.productId) as unknown
35
+ if (typeof productId !== 'string') continue
36
+ const qty = typeof r.quantity === 'number' ? r.quantity : Number(r.quantity) || 1
37
+ const amountCentsRaw = r.amount_cents ?? r.amountCents
38
+ const amountCents =
39
+ typeof amountCentsRaw === 'number' ? amountCentsRaw : Number(amountCentsRaw) || 0
40
+ const nameSnapRaw = r.name_snapshot ?? r.nameSnapshot
41
+ const nameSnapshot = typeof nameSnapRaw === 'string' ? nameSnapRaw : ''
42
+ const ppRaw = r.product_price_id ?? r.productPriceId
43
+ const productPriceId =
44
+ ppRaw === null || ppRaw === undefined
45
+ ? null
46
+ : typeof ppRaw === 'string'
47
+ ? ppRaw
48
+ : null
49
+ out.push({
50
+ productId,
51
+ productPriceId,
52
+ quantity: qty,
53
+ amountCents,
54
+ nameSnapshot,
55
+ })
56
+ }
57
+ return out.length > 0 ? out : undefined
58
+ }
7
59
 
8
60
  /**
9
61
  * Transform API snake_case response to SDK camelCase
@@ -70,6 +122,8 @@ export function transformCheckoutToCamelCase(data: any): CheckoutPublic {
70
122
  subscriptionId: data.subscription_id,
71
123
  metadata: data.metadata,
72
124
  customerMetadata: data.customer_metadata,
125
+
126
+ crossSell: transformCrossSellToCamelCase(data.cross_sell),
73
127
  }
74
128
  }
75
129