@happyvertical/accounting 0.91.0 → 0.93.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/dist/types.d.ts CHANGED
@@ -129,7 +129,27 @@ export interface CustomerInput {
129
129
  currency?: string;
130
130
  /** Additional metadata */
131
131
  metadata?: Record<string, unknown>;
132
+ /**
133
+ * Stable caller-owned key for creating this provider customer exactly once.
134
+ * Used only when the customer has no `externalId` yet. A retry with the same
135
+ * key returns the customer the first attempt created: Stripe replays the
136
+ * create inside its idempotency window, and after it the adapter finds the
137
+ * customer by the `local_id` it tags on every customer. Reuse the key only
138
+ * for the same customer contents.
139
+ */
140
+ idempotencyKey?: string;
132
141
  }
142
+ /**
143
+ * How a provider collects an invoice.
144
+ *
145
+ * - `send_invoice`: the customer is sent a payable invoice (default).
146
+ * - `charge_automatically`: the provider charges the customer's saved default
147
+ * payment method when the invoice is sent, and its own retry/dunning rules
148
+ * apply to failures. Providers that cannot charge a stored payment method
149
+ * (for example, push-payment rails such as BTC) must reject it rather than
150
+ * silently falling back to `send_invoice`.
151
+ */
152
+ export type InvoiceCollectionMethod = 'send_invoice' | 'charge_automatically';
133
153
  /**
134
154
  * Invoice line item input
135
155
  */
@@ -146,15 +166,27 @@ export interface InvoiceLineItemInput {
146
166
  * currency unit.
147
167
  */
148
168
  unitPrice: number;
149
- /** Discount amount */
169
+ /**
170
+ * Total discount for this line (not per unit), in the currency's major
171
+ * unit. Must be between 0 and `quantity × unitPrice`. The Stripe provider
172
+ * applies it as an amount-off discount on the invoice item, so the invoice
173
+ * shows the discount and Stripe Tax taxes the discounted amount.
174
+ */
150
175
  discount?: number;
151
176
  /** Tax rate (decimal, e.g., 0.0825 for 8.25%) */
152
177
  taxRate?: number;
153
178
  /** Calculated line total */
154
179
  amount?: number;
155
- /** Service/product date range start */
180
+ /**
181
+ * Service period start. Set together with `periodEnd`; the Stripe provider
182
+ * sends both as the invoice item's `period` (Unix seconds).
183
+ */
156
184
  periodStart?: Date;
157
- /** Service/product date range end */
185
+ /**
186
+ * Service period end, exclusive (the instant the next period starts), which
187
+ * is also how Stripe reports subscription line periods. Must not be before
188
+ * `periodStart`.
189
+ */
158
190
  periodEnd?: Date;
159
191
  }
160
192
  /**
@@ -203,6 +235,17 @@ export interface InvoiceInput {
203
235
  * address. The provider-calculated amount is returned by invoice reads.
204
236
  */
205
237
  automaticTax?: boolean;
238
+ /**
239
+ * How the provider collects this invoice. Defaults to `send_invoice`. With
240
+ * `charge_automatically`, Stripe charges the customer's default payment
241
+ * method (see `billing.setDefaultPaymentMethod`) after the invoice is sent,
242
+ * on Stripe's own collection schedule (not necessarily immediately), and
243
+ * Stripe's retry settings drive `invoice.payment_failed` / `invoice.paid`
244
+ * webhooks. `dueDate` is not sent for automatically charged invoices. On
245
+ * `sync()` of an existing invoice, a set `collectionMethod` is sent too;
246
+ * Stripe only allows changing it while the invoice is a draft.
247
+ */
248
+ collectionMethod?: InvoiceCollectionMethod;
206
249
  }
207
250
  /**
208
251
  * Vendor input for sync operations (AP side)
@@ -340,7 +383,11 @@ export interface ExternalInvoice extends ExternalRecord {
340
383
  totalAmount: number;
341
384
  amountPaid: number;
342
385
  balance: number;
343
- status: 'draft' | 'sent' | 'viewed' | 'paid' | 'overdue' | 'voided';
386
+ /**
387
+ * `uncollectible` is an open balance the seller has written off (Stripe
388
+ * `uncollectible`); it can still be paid or voided later.
389
+ */
390
+ status: 'draft' | 'sent' | 'viewed' | 'paid' | 'overdue' | 'voided' | 'uncollectible';
344
391
  currency: string;
345
392
  }
346
393
  /**
@@ -382,6 +429,108 @@ export interface ExternalPayment extends ExternalRecord {
382
429
  invoiceExternalIds?: string[];
383
430
  status: 'pending' | 'completed' | 'failed' | 'refunded';
384
431
  }
432
+ /**
433
+ * Outcome of a merchant-initiated charge.
434
+ *
435
+ * - `succeeded`: funds are secured.
436
+ * - `processing`: the provider accepted the charge but settlement is pending;
437
+ * wait for the payment webhook before granting value.
438
+ * - `requires_action`: the issuer requires customer authentication (for
439
+ * example 3-D Secure); nothing was charged. Results never carry the
440
+ * provider's client secret, so do not try to complete this attempt: next
441
+ * time the customer is present, have them re-save the card (Stripe:
442
+ * `setup` mode Checkout, then `setDefaultPaymentMethod`) and charge again
443
+ * under a new idempotency key.
444
+ * - `failed`: declined or unusable payment method; nothing was charged.
445
+ * - `canceled`: the payment was canceled before completion (webhooks only).
446
+ */
447
+ export type PaymentChargeStatus = 'succeeded' | 'processing' | 'requires_action' | 'failed' | 'canceled';
448
+ /**
449
+ * Charge a customer's saved payment method without the customer present
450
+ * (off-session), for example to top up a prepaid balance.
451
+ *
452
+ * Amounts are **integer minor units** of `currency`: the ISO 4217 minor unit
453
+ * (`1999` USD = 19.99, `1200` JPY = 1200). A provider for a non-ISO asset
454
+ * documents its smallest unit (for example satoshis for BTC). Providers
455
+ * convert to their own representation at the boundary.
456
+ */
457
+ export interface SavedPaymentMethodChargeInput {
458
+ /** Provider customer that owns the saved payment method. */
459
+ customerExternalId: string;
460
+ /**
461
+ * Saved payment method to charge. Omit to charge the customer's default
462
+ * payment method; a customer without one yields a `failed` result with
463
+ * `failureCode: 'payment_method_missing'` and no provider charge.
464
+ */
465
+ paymentMethodExternalId?: string;
466
+ /**
467
+ * Positive integer minor units of `currency`, by the ISO 4217 exponent
468
+ * (not the runtime's `Intl` display digits, which differ for a few
469
+ * currencies such as RSD and IQD).
470
+ */
471
+ amountMinor: number;
472
+ /** ISO 4217 currency code (case-insensitive). */
473
+ currency: string;
474
+ /**
475
+ * Required stable caller-owned key for this logical charge. Every retry
476
+ * with the same key returns the original charge instead of charging again,
477
+ * including after the provider's own idempotency window. Providers tag the
478
+ * charge with it, and payment webhooks report it as `chargeKey`. Scope it
479
+ * to the payer (keys are global to the provider account) and use a new key
480
+ * for a new attempt: a key reused with a different amount, currency, or
481
+ * customer is refused, not charged. A different explicit payment method is
482
+ * refused too; a change of the customer's default between retries is
483
+ * refused only inside the provider's idempotency window (Stripe
484
+ * `idempotency_error`) and afterwards returns the original charge, which
485
+ * reports the method it actually used. Pass `paymentMethodExternalId` to
486
+ * pin the method.
487
+ */
488
+ idempotencyKey: string;
489
+ /** Statement/description text shown to the customer where supported. */
490
+ description?: string;
491
+ /** Opaque values stored on the provider charge and returned by webhooks. */
492
+ metadata?: Record<string, string | number | boolean | null | undefined>;
493
+ }
494
+ export interface SavedPaymentMethodChargeResult {
495
+ status: PaymentChargeStatus;
496
+ provider: AccountingProviderType;
497
+ /** Provider payment id (Stripe PaymentIntent), when one was created. */
498
+ paymentExternalId?: string;
499
+ customerExternalId: string;
500
+ paymentMethodExternalId?: string;
501
+ /** Integer minor units of `currency`. */
502
+ amountMinor: number;
503
+ /** Upper-case ISO 4217 code. */
504
+ currency: string;
505
+ /** The caller's `idempotencyKey`. */
506
+ chargeKey: string;
507
+ /** Provider failure code (for example `card_declined`, `authentication_required`). */
508
+ failureCode?: string;
509
+ /** Issuer decline code, when the provider reports one. */
510
+ declineCode?: string;
511
+ /** Provider failure message, safe to log (contains no card data). */
512
+ failureMessage?: string;
513
+ raw?: unknown;
514
+ }
515
+ /**
516
+ * Payment lifecycle facts normalized from a verified webhook, so hosts can
517
+ * settle merchant-initiated charges without parsing provider payloads.
518
+ */
519
+ export interface WebhookPaymentSummary {
520
+ status: PaymentChargeStatus;
521
+ paymentExternalId: string;
522
+ customerExternalId?: string;
523
+ /** Integer minor units, when the provider amount converts exactly. */
524
+ amountMinor?: number;
525
+ /** Upper-case ISO 4217 code. */
526
+ currency?: string;
527
+ /** `idempotencyKey` of the `chargeSavedPaymentMethod` call that created it. */
528
+ chargeKey?: string;
529
+ failureCode?: string;
530
+ declineCode?: string;
531
+ failureMessage?: string;
532
+ metadata: Record<string, string>;
533
+ }
385
534
  export type StripeCheckoutMode = 'payment' | 'setup' | 'subscription';
386
535
  export type StripeSubscriptionStatus = 'active' | 'canceled' | 'incomplete' | 'incomplete_expired' | 'past_due' | 'paused' | 'trialing' | 'unpaid';
387
536
  export interface StripeRecurringPriceData {
@@ -390,7 +539,23 @@ export interface StripeRecurringPriceData {
390
539
  }
391
540
  export interface StripeCheckoutPriceData {
392
541
  currency: string;
393
- unitAmount: number;
542
+ /**
543
+ * Unit amount in **Stripe's** smallest currency unit, passed through
544
+ * unconverted. Stripe's unit differs from the ISO 4217 minor unit for some
545
+ * currencies (for example ISK and UGX); prefer `unitAmountMinor`. Set
546
+ * exactly one of `unitAmount` and `unitAmountMinor`.
547
+ */
548
+ unitAmount?: number;
549
+ /**
550
+ * Unit amount in integer ISO 4217 minor units (`1999` USD, `1200` JPY),
551
+ * converted to Stripe's unit by the adapter.
552
+ */
553
+ unitAmountMinor?: number;
554
+ /**
555
+ * Stripe Tax behavior of this ad-hoc price. Defaults to `exclusive` when the
556
+ * session sets `automaticTax`.
557
+ */
558
+ taxBehavior?: 'exclusive' | 'inclusive' | 'unspecified';
394
559
  product?: string;
395
560
  productName?: string;
396
561
  recurring?: StripeRecurringPriceData;
@@ -400,27 +565,84 @@ export interface StripeCheckoutLineItem {
400
565
  priceData?: StripeCheckoutPriceData;
401
566
  quantity?: number;
402
567
  }
568
+ export interface StripeCheckoutCustomerUpdate {
569
+ /** `auto` saves the address collected in Checkout to the customer. */
570
+ address?: 'auto' | 'never';
571
+ name?: 'auto' | 'never';
572
+ shipping?: 'auto' | 'never';
573
+ }
403
574
  export interface StripeCheckoutSessionInput {
575
+ /** Defaults to `subscription`. */
404
576
  mode?: StripeCheckoutMode;
405
577
  successUrl: string;
406
578
  cancelUrl: string;
407
579
  customerExternalId?: string;
408
580
  customerEmail?: string;
409
581
  clientReferenceId?: string;
410
- lineItems: StripeCheckoutLineItem[];
582
+ /**
583
+ * Required in `payment` and `subscription` mode; must be omitted in `setup`
584
+ * mode, which saves a payment method without charging.
585
+ */
586
+ lineItems?: StripeCheckoutLineItem[];
411
587
  metadata?: Record<string, string | number | boolean | null | undefined>;
412
588
  allowPromotionCodes?: boolean;
413
589
  /** Stable caller-owned key reused when creating the same Checkout Session. */
414
590
  idempotencyKey?: string;
591
+ /**
592
+ * Calculate tax with Stripe Tax (`automatic_tax[enabled]`). Stripe needs
593
+ * the buyer's location: collect it with `billingAddressCollection`, or for
594
+ * an existing customer without an address set `customerUpdate.address:
595
+ * 'auto'`. Not valid in `setup` mode.
596
+ */
597
+ automaticTax?: boolean;
598
+ /** Collect the billing address (`auto` collects it only when needed). */
599
+ billingAddressCollection?: 'auto' | 'required';
600
+ /** Save details collected in Checkout back to `customerExternalId`. */
601
+ customerUpdate?: StripeCheckoutCustomerUpdate;
602
+ /**
603
+ * Three-letter currency. Required in `setup` mode unless
604
+ * `paymentMethodTypes` is set.
605
+ */
606
+ currency?: string;
607
+ /** Restrict payment method types (for example `['card']`). */
608
+ paymentMethodTypes?: string[];
609
+ /**
610
+ * `payment` mode only: also save the payment method for later
611
+ * (`payment_intent_data[setup_future_usage]`); `off_session` allows later
612
+ * merchant-initiated charges such as automatic top-ups.
613
+ */
614
+ setupFutureUsage?: 'off_session' | 'on_session';
415
615
  }
416
616
  export interface StripeCheckoutSession {
417
617
  externalId: string;
418
618
  url: string | null;
619
+ mode?: StripeCheckoutMode;
419
620
  customerExternalId?: string;
420
621
  subscriptionExternalId?: string;
421
622
  paymentIntentExternalId?: string;
623
+ /** SetupIntent of a `setup` mode session. */
624
+ setupIntentExternalId?: string;
422
625
  raw?: unknown;
423
626
  }
627
+ /**
628
+ * A retrieved Checkout Session, with the saved payment method resolved from
629
+ * its SetupIntent (`setup` mode) or PaymentIntent (`payment` mode).
630
+ */
631
+ export interface StripeCheckoutSessionDetails extends StripeCheckoutSession {
632
+ status?: 'open' | 'complete' | 'expired';
633
+ paymentStatus?: 'paid' | 'unpaid' | 'no_payment_required';
634
+ /** The payment method the session collected, once complete. */
635
+ paymentMethodExternalId?: string;
636
+ /** Upper-case ISO 4217 code. */
637
+ currency?: string;
638
+ /** Line-item amount before discounts and tax, integer ISO minor units. */
639
+ amountSubtotalMinor?: number;
640
+ /** Tax calculated by Stripe Tax, integer ISO minor units. */
641
+ amountTaxMinor?: number;
642
+ /** Amount collected, integer ISO minor units. */
643
+ amountTotalMinor?: number;
644
+ metadata: Record<string, string>;
645
+ }
424
646
  export interface StripeCustomerPortalSessionInput {
425
647
  customerExternalId: string;
426
648
  returnUrl: string;
@@ -553,6 +775,11 @@ export interface WebhookEvent {
553
775
  resourceType?: 'customer' | 'invoice' | 'payment' | 'vendor' | 'bill';
554
776
  /** Associated resource external ID */
555
777
  resourceId?: string;
778
+ /**
779
+ * Normalized payment facts for payment events (Stripe `payment_intent.*`),
780
+ * including charges made by `payments.chargeSavedPaymentMethod`.
781
+ */
782
+ payment?: WebhookPaymentSummary;
556
783
  }
557
784
  /**
558
785
  * Customer operations interface
@@ -583,6 +810,11 @@ export interface InvoiceOperations {
583
810
  send(externalId: string): Promise<void>;
584
811
  /** Void/cancel invoice */
585
812
  void(externalId: string): Promise<void>;
813
+ /**
814
+ * Write off an open invoice as uncollectible. Optional: providers without
815
+ * the concept omit it.
816
+ */
817
+ markUncollectible?(externalId: string): Promise<void>;
586
818
  }
587
819
  /**
588
820
  * Vendor operations interface
@@ -618,6 +850,13 @@ export interface PaymentOperations {
618
850
  pull(externalId: string): Promise<ExternalPayment>;
619
851
  /** List payments from provider */
620
852
  list(options?: ListOptions): Promise<ExternalPayment[]>;
853
+ /**
854
+ * Charge a saved payment method off-session, idempotently by
855
+ * `input.idempotencyKey`. Optional: providers that cannot pull funds from a
856
+ * stored payment method (for example push-payment rails such as BTC) omit
857
+ * it, which is how callers detect the capability.
858
+ */
859
+ chargeSavedPaymentMethod?(input: SavedPaymentMethodChargeInput): Promise<SavedPaymentMethodChargeResult>;
621
860
  }
622
861
  /**
623
862
  * Stripe billing operations interface.
@@ -629,6 +868,18 @@ export interface PaymentOperations {
629
868
  export interface StripeBillingOperations {
630
869
  /** Create a Stripe Checkout Session */
631
870
  createCheckoutSession(input: StripeCheckoutSessionInput): Promise<StripeCheckoutSession>;
871
+ /**
872
+ * Retrieve a Checkout Session, resolving the payment method it collected
873
+ * (use after a `setup` mode session completes). Optional so existing
874
+ * structural implementations keep compiling; `StripeProvider` implements it.
875
+ */
876
+ retrieveCheckoutSession?(sessionExternalId: string): Promise<StripeCheckoutSessionDetails>;
877
+ /**
878
+ * Make a saved payment method the customer's default for invoices and for
879
+ * `payments.chargeSavedPaymentMethod` without an explicit method. Optional
880
+ * for the same reason; `StripeProvider` implements it.
881
+ */
882
+ setDefaultPaymentMethod?(customerExternalId: string, paymentMethodExternalId: string): Promise<void>;
632
883
  /** Create a Stripe Customer Portal Session */
633
884
  createCustomerPortalSession(input: StripeCustomerPortalSessionInput): Promise<StripeCustomerPortalSession>;
634
885
  /** Retrieve a Stripe subscription status summary */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/accounting",
3
- "version": "0.91.0",
3
+ "version": "0.93.0",
4
4
  "description": "Multi-provider accounting integration for AR/AP sync and audit with QuickBooks, Stripe, and more",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -37,7 +37,7 @@
37
37
  "license": "MIT",
38
38
  "dependencies": {
39
39
  "intuit-oauth": "^4.2.3",
40
- "@happyvertical/utils": "0.91.0"
40
+ "@happyvertical/utils": "0.93.0"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "25.0.10",
@@ -1 +0,0 @@
1
- {"version":3,"file":"stripe-e3yn8cEJ.js","names":[],"sources":["../../src/providers/stripe/index.ts"],"sourcesContent":["/**\n * Stripe Provider\n *\n * Implements Stripe AR, payment, webhook, and billing operations using the\n * Stripe HTTP API directly. The SDK keeps Stripe as an optional runtime\n * dependency by relying on the platform fetch implementation.\n */\n\nimport { createHmac, randomUUID, timingSafeEqual } from 'node:crypto';\nimport type {\n AccountingProviderType,\n AuditMatch,\n AuditOperations,\n AuditReport,\n BillInput,\n BillOperations,\n CustomerInput,\n CustomerOperations,\n DateRange,\n ExternalBill,\n ExternalCustomer,\n ExternalInvoice,\n ExternalPayment,\n ExternalRecord,\n ExternalVendor,\n FieldDiff,\n InvoiceInput,\n InvoiceOperations,\n ListOptions,\n PaymentInput,\n PaymentOperations,\n StripeAccountingProvider,\n StripeBillingOperations,\n StripeCheckoutLineItem,\n StripeCheckoutSession,\n StripeCheckoutSessionInput,\n StripeCustomerPortalSession,\n StripeCustomerPortalSessionInput,\n StripeOptions,\n StripeSubscriptionStatus,\n StripeSubscriptionStatusResult,\n SyncResult,\n VendorInput,\n VendorOperations,\n WebhookEvent,\n WebhookOperations,\n} from '../../types.js';\n\ntype StripePrimitive = string | number | boolean | Date | null | undefined;\ntype StripeFormValue =\n | StripePrimitive\n | StripeFormValue[]\n | { [key: string]: StripeFormValue };\n\ninterface StripeListResponse<T> {\n object: 'list';\n data: T[];\n has_more?: boolean;\n}\n\ninterface StripeCustomer {\n id: string;\n name?: string | null;\n email?: string | null;\n phone?: string | null;\n address?: StripeAddress | null;\n balance?: number | null;\n currency?: string | null;\n}\n\ninterface StripeAddress {\n line1?: string | null;\n line2?: string | null;\n city?: string | null;\n state?: string | null;\n postal_code?: string | null;\n country?: string | null;\n}\n\ninterface StripeInvoice {\n id: string;\n number?: string | null;\n customer?: string | StripeCustomer | null;\n created?: number | null;\n due_date?: number | null;\n subtotal?: number | null;\n tax?: number | null;\n total_taxes?: Array<{ amount?: number | null }> | null;\n total?: number | null;\n amount_paid?: number | null;\n amount_remaining?: number | null;\n status?: string | null;\n currency?: string | null;\n metadata?: Record<string, string> | null;\n}\n\ninterface StripeInvoiceItem {\n id: string;\n metadata?: Record<string, string> | null;\n}\n\ninterface StripePaymentIntent {\n id: string;\n amount?: number | null;\n currency?: string | null;\n created?: number | null;\n status?: string | null;\n invoice?: string | null;\n payment_method_types?: string[] | null;\n latest_charge?: string | null;\n}\n\ninterface StripeCheckoutSessionResponse {\n id: string;\n url?: string | null;\n customer?: string | null;\n subscription?: string | null;\n payment_intent?: string | null;\n}\n\ninterface StripePortalSessionResponse {\n id: string;\n url: string;\n}\n\ninterface StripeSubscription {\n id: string;\n status: StripeSubscriptionStatus;\n customer: string | StripeCustomer;\n current_period_start?: number | null;\n current_period_end?: number | null;\n cancel_at_period_end?: boolean | null;\n canceled_at?: number | null;\n trial_end?: number | null;\n}\n\ninterface StripeWebhookPayload {\n id?: string | null;\n type?: string | null;\n created?: number | null;\n data?: {\n object?: {\n id?: string | null;\n object?: string | null;\n } | null;\n } | null;\n}\n\n/**\n * Stripe accounting provider.\n */\nexport class StripeProvider implements StripeAccountingProvider {\n readonly type = 'stripe' as const;\n\n private readonly options: StripeOptions;\n private readonly fetchImpl: typeof fetch;\n\n readonly customers: CustomerOperations;\n readonly invoices: InvoiceOperations;\n readonly vendors: VendorOperations;\n readonly bills: BillOperations;\n readonly payments: PaymentOperations;\n readonly audit: AuditOperations;\n readonly webhooks: WebhookOperations;\n readonly billing: StripeBillingOperations;\n\n constructor(options: StripeOptions) {\n this.options = {\n timeout: 30000,\n maxRetries: 3,\n apiBaseUrl: 'https://api.stripe.com',\n webhookTolerance: 300,\n ...options,\n };\n this.fetchImpl = options.fetch || fetch;\n\n this.customers = new StripeCustomerOperations(this);\n this.invoices = new StripeInvoiceOperations(this);\n this.vendors = new UnsupportedVendorOperations();\n this.bills = new UnsupportedBillOperations();\n this.payments = new StripePaymentOperations(this);\n this.audit = new StripeAuditOperations(this);\n this.webhooks = new StripeWebhookOperations(this.options);\n this.billing = new StripeBillingOperationsImpl(this);\n }\n\n async request<T>(\n method: 'GET' | 'POST' | 'DELETE',\n endpoint: string,\n params?: Record<string, StripeFormValue>,\n options: { idempotencyKey?: string } = {},\n ): Promise<T> {\n const timeout = this.options.timeout || 30000;\n const maxRetries = this.options.maxRetries || 3;\n const idempotencyKey =\n method === 'POST'\n ? (options.idempotencyKey ?? `sdk-${randomUUID()}`)\n : null;\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const url = this.buildUrl(endpoint, method === 'GET' ? params : {});\n const body =\n method === 'POST' && params\n ? encodeStripeForm(params).toString()\n : undefined;\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.options.secretKey}`,\n Accept: 'application/json',\n };\n if (method === 'POST') {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n if (idempotencyKey) {\n headers['Idempotency-Key'] = idempotencyKey;\n }\n }\n if (this.options.apiVersion) {\n headers['Stripe-Version'] = this.options.apiVersion;\n }\n\n const response = await this.fetchImpl(url, {\n method,\n headers,\n body,\n signal: controller.signal,\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n const error = new Error(\n `Stripe API error (${response.status}): ${errorText}`,\n );\n\n if (response.status < 500 && response.status !== 429) {\n throw error;\n }\n\n lastError = error;\n } else {\n const text = await response.text();\n return (text ? JSON.parse(text) : {}) as T;\n }\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n const statusMatch = lastError.message.match(\n /Stripe API error \\((\\d+)\\)/,\n );\n if (statusMatch) {\n const status = Number.parseInt(statusMatch[1], 10);\n if (status >= 400 && status < 500 && status !== 429) {\n throw lastError;\n }\n }\n } finally {\n clearTimeout(timeoutId);\n }\n\n if (attempt < maxRetries) {\n await sleep(2 ** attempt * 500);\n }\n }\n\n throw lastError || new Error('Stripe request failed after retries');\n }\n\n private buildUrl(\n endpoint: string,\n params?: Record<string, StripeFormValue>,\n ): string {\n const baseUrl = this.options.apiBaseUrl || 'https://api.stripe.com';\n const url = new URL(endpoint, baseUrl);\n\n if (params && Object.keys(params).length > 0) {\n for (const [key, value] of encodeStripeForm(params).entries()) {\n url.searchParams.append(key, value);\n }\n }\n\n return url.toString();\n }\n}\n\nclass StripeCustomerOperations implements CustomerOperations {\n constructor(private readonly provider: StripeProvider) {}\n\n async push(customer: CustomerInput): Promise<SyncResult> {\n const response = await this.provider.request<StripeCustomer>(\n 'POST',\n '/v1/customers',\n mapCustomerToStripe(customer),\n );\n\n return {\n action: 'created',\n externalId: response.id,\n syncedAt: new Date(),\n };\n }\n\n async pull(externalId: string): Promise<ExternalCustomer> {\n const customer = await this.provider.request<StripeCustomer>(\n 'GET',\n `/v1/customers/${encodeURIComponent(externalId)}`,\n );\n return mapStripeCustomer(customer);\n }\n\n async list(options: ListOptions = {}): Promise<ExternalCustomer[]> {\n const response = await this.provider.request<\n StripeListResponse<StripeCustomer>\n >('GET', '/v1/customers', mapListOptions(options));\n return response.data.map(mapStripeCustomer);\n }\n\n async sync(customer: CustomerInput): Promise<SyncResult> {\n if (!customer.externalId) {\n return this.push(customer);\n }\n\n await this.provider.request<StripeCustomer>(\n 'POST',\n `/v1/customers/${encodeURIComponent(customer.externalId)}`,\n mapCustomerToStripe(customer),\n );\n\n return {\n action: 'updated',\n externalId: customer.externalId,\n syncedAt: new Date(),\n };\n }\n}\n\nclass StripeInvoiceOperations implements InvoiceOperations {\n constructor(private readonly provider: StripeProvider) {}\n\n async push(invoice: InvoiceInput): Promise<SyncResult> {\n if (!invoice.customerExternalId) {\n throw new Error('Stripe invoices require customerExternalId');\n }\n\n const existingInvoice = invoice.idempotencyKey\n ? await this.findInvoiceByLocalId(invoice.customerExternalId, invoice.id)\n : undefined;\n if (existingInvoice) {\n return {\n action: 'created',\n externalId: existingInvoice.id,\n syncedAt: new Date(),\n };\n }\n\n const existingLineItemIndexes = invoice.idempotencyKey\n ? await this.findPendingLineItemIndexes(\n invoice.customerExternalId,\n invoice.id,\n )\n : new Set<number>();\n\n for (const [index, lineItem] of invoice.lineItems.entries()) {\n if (existingLineItemIndexes.has(index)) {\n continue;\n }\n await this.provider.request(\n 'POST',\n '/v1/invoiceitems',\n {\n customer: invoice.customerExternalId,\n currency: invoice.currency || 'usd',\n description: lineItem.description,\n quantity: lineItem.quantity,\n unit_amount_decimal: String(\n moneyToStripeMinorUnits(\n lineItem.unitPrice,\n invoice.currency || 'usd',\n ),\n ),\n tax_behavior: invoice.automaticTax ? 'exclusive' : undefined,\n metadata: normalizeMetadata({\n local_invoice_id: invoice.id,\n local_line_index: index,\n local_sku: lineItem.sku,\n local_discount: lineItem.discount,\n local_tax_rate: lineItem.taxRate,\n }),\n },\n {\n idempotencyKey: invoice.idempotencyKey\n ? `${invoice.idempotencyKey}:item:${index}`\n : undefined,\n },\n );\n }\n\n const response = await this.provider.request<StripeInvoice>(\n 'POST',\n '/v1/invoices',\n mapInvoiceToStripe(invoice),\n {\n idempotencyKey: invoice.idempotencyKey\n ? `${invoice.idempotencyKey}:invoice`\n : undefined,\n },\n );\n\n return {\n action: 'created',\n externalId: response.id,\n syncedAt: new Date(),\n };\n }\n\n async pull(externalId: string): Promise<ExternalInvoice> {\n const invoice = await this.provider.request<StripeInvoice>(\n 'GET',\n `/v1/invoices/${encodeURIComponent(externalId)}`,\n );\n return mapStripeInvoice(invoice);\n }\n\n async list(options: ListOptions = {}): Promise<ExternalInvoice[]> {\n const response = await this.provider.request<\n StripeListResponse<StripeInvoice>\n >('GET', '/v1/invoices', mapListOptions(options));\n return response.data.map(mapStripeInvoice);\n }\n\n async sync(invoice: InvoiceInput): Promise<SyncResult> {\n if (!invoice.externalId) {\n return this.push(invoice);\n }\n\n await this.provider.request<StripeInvoice>(\n 'POST',\n `/v1/invoices/${encodeURIComponent(invoice.externalId)}`,\n mapInvoiceUpdateToStripe(invoice),\n );\n\n return {\n action: 'updated',\n externalId: invoice.externalId,\n syncedAt: new Date(),\n };\n }\n\n async send(externalId: string): Promise<void> {\n await this.provider.request(\n 'POST',\n `/v1/invoices/${encodeURIComponent(externalId)}/send`,\n );\n }\n\n async void(externalId: string): Promise<void> {\n await this.provider.request(\n 'POST',\n `/v1/invoices/${encodeURIComponent(externalId)}/void`,\n );\n }\n\n private async findInvoiceByLocalId(\n customerExternalId: string,\n localInvoiceId: string,\n ): Promise<StripeInvoice | undefined> {\n let startingAfter: string | undefined;\n do {\n const response = await this.provider.request<\n StripeListResponse<StripeInvoice>\n >('GET', '/v1/invoices', {\n customer: customerExternalId,\n limit: 100,\n starting_after: startingAfter,\n });\n const existing = response.data.find(\n (invoice) => invoice.metadata?.local_id === localInvoiceId,\n );\n if (existing) {\n return existing;\n }\n startingAfter = response.has_more ? response.data.at(-1)?.id : undefined;\n } while (startingAfter);\n\n return undefined;\n }\n\n private async findPendingLineItemIndexes(\n customerExternalId: string,\n localInvoiceId: string,\n ): Promise<Set<number>> {\n const indexes = new Set<number>();\n let startingAfter: string | undefined;\n do {\n const response = await this.provider.request<\n StripeListResponse<StripeInvoiceItem>\n >('GET', '/v1/invoiceitems', {\n customer: customerExternalId,\n pending: true,\n limit: 100,\n starting_after: startingAfter,\n });\n for (const item of response.data) {\n if (item.metadata?.local_invoice_id !== localInvoiceId) {\n continue;\n }\n const index = Number(item.metadata.local_line_index);\n if (Number.isSafeInteger(index) && index >= 0) {\n indexes.add(index);\n }\n }\n startingAfter = response.has_more ? response.data.at(-1)?.id : undefined;\n } while (startingAfter);\n\n return indexes;\n }\n}\n\nclass StripePaymentOperations implements PaymentOperations {\n constructor(private readonly provider: StripeProvider) {}\n\n async pull(externalId: string): Promise<ExternalPayment> {\n const paymentIntent = await this.provider.request<StripePaymentIntent>(\n 'GET',\n `/v1/payment_intents/${encodeURIComponent(externalId)}`,\n );\n return mapStripePaymentIntent(paymentIntent);\n }\n\n async list(options: ListOptions = {}): Promise<ExternalPayment[]> {\n const response = await this.provider.request<\n StripeListResponse<StripePaymentIntent>\n >('GET', '/v1/payment_intents', mapListOptions(options));\n return response.data.map(mapStripePaymentIntent);\n }\n}\n\nclass StripeBillingOperationsImpl implements StripeBillingOperations {\n constructor(private readonly provider: StripeProvider) {}\n\n async createCheckoutSession(\n input: StripeCheckoutSessionInput,\n ): Promise<StripeCheckoutSession> {\n const response = await this.provider.request<StripeCheckoutSessionResponse>(\n 'POST',\n '/v1/checkout/sessions',\n mapCheckoutSessionToStripe(input),\n { idempotencyKey: input.idempotencyKey },\n );\n\n return {\n externalId: response.id,\n url: response.url || null,\n customerExternalId: response.customer || undefined,\n subscriptionExternalId: response.subscription || undefined,\n paymentIntentExternalId: response.payment_intent || undefined,\n raw: response,\n };\n }\n\n async createCustomerPortalSession(\n input: StripeCustomerPortalSessionInput,\n ): Promise<StripeCustomerPortalSession> {\n const response = await this.provider.request<StripePortalSessionResponse>(\n 'POST',\n '/v1/billing_portal/sessions',\n {\n customer: input.customerExternalId,\n return_url: input.returnUrl,\n configuration: input.configurationExternalId,\n },\n );\n\n return {\n externalId: response.id,\n url: response.url,\n raw: response,\n };\n }\n\n async retrieveSubscriptionStatus(\n subscriptionExternalId: string,\n ): Promise<StripeSubscriptionStatusResult> {\n const subscription = await this.provider.request<StripeSubscription>(\n 'GET',\n `/v1/subscriptions/${encodeURIComponent(subscriptionExternalId)}`,\n );\n\n return mapStripeSubscription(subscription);\n }\n\n async listCustomerSubscriptions(\n customerExternalId: string,\n ): Promise<StripeSubscriptionStatusResult[]> {\n const response = await this.provider.request<\n StripeListResponse<StripeSubscription>\n >('GET', '/v1/subscriptions', {\n customer: customerExternalId,\n status: 'all',\n limit: 100,\n });\n\n return response.data.map(mapStripeSubscription);\n }\n}\n\nclass UnsupportedVendorOperations implements VendorOperations {\n async push(_vendor: VendorInput): Promise<SyncResult> {\n throw new Error('Stripe does not support vendor operations');\n }\n\n async pull(_externalId: string): Promise<ExternalVendor> {\n throw new Error('Stripe does not support vendor operations');\n }\n\n async list(_options?: ListOptions): Promise<ExternalVendor[]> {\n throw new Error('Stripe does not support vendor operations');\n }\n\n async sync(_vendor: VendorInput): Promise<SyncResult> {\n throw new Error('Stripe does not support vendor operations');\n }\n}\n\nclass UnsupportedBillOperations implements BillOperations {\n async push(_bill: BillInput): Promise<SyncResult> {\n throw new Error('Stripe does not support bill operations');\n }\n\n async pull(_externalId: string): Promise<ExternalBill> {\n throw new Error('Stripe does not support bill operations');\n }\n\n async list(_options?: ListOptions): Promise<ExternalBill[]> {\n throw new Error('Stripe does not support bill operations');\n }\n\n async sync(_bill: BillInput): Promise<SyncResult> {\n throw new Error('Stripe does not support bill operations');\n }\n}\n\nclass StripeAuditOperations implements AuditOperations {\n constructor(private readonly provider: StripeProvider) {}\n\n async reconcileCustomers(\n locals: CustomerInput[],\n ): Promise<AuditReport<CustomerInput>> {\n const externals = await this.provider.customers.list({ limit: 100 });\n return reconcileRecords('stripe', locals, externals, compareCustomer);\n }\n\n async reconcileInvoices(\n locals: InvoiceInput[],\n dateRange?: DateRange,\n ): Promise<AuditReport<InvoiceInput>> {\n const externals = await this.provider.invoices.list({\n limit: 100,\n startDate: dateRange?.start,\n endDate: dateRange?.end,\n });\n return reconcileRecords('stripe', locals, externals, compareInvoice);\n }\n\n async reconcileVendors(\n _locals: VendorInput[],\n ): Promise<AuditReport<VendorInput>> {\n throw new Error('Stripe does not support vendor operations');\n }\n\n async reconcileBills(_locals: BillInput[]): Promise<AuditReport<BillInput>> {\n throw new Error('Stripe does not support bill operations');\n }\n\n async reconcilePayments(\n locals: PaymentInput[],\n dateRange?: DateRange,\n ): Promise<AuditReport<PaymentInput>> {\n const externals = await this.provider.payments.list({\n limit: 100,\n startDate: dateRange?.start,\n endDate: dateRange?.end,\n });\n return reconcileRecords('stripe', locals, externals, comparePayment);\n }\n}\n\nclass StripeWebhookOperations implements WebhookOperations {\n constructor(private readonly options: StripeOptions) {}\n\n verify(payload: string, signature: string, secret: string): boolean {\n const endpointSecret = secret || this.options.webhookSecret;\n if (!endpointSecret) {\n throw new Error(\n 'Stripe webhook secret not provided. Pass it as the secret parameter or configure webhookSecret in options.',\n );\n }\n\n const parsed = parseStripeSignatureHeader(signature);\n if (!parsed.timestamp || parsed.signatures.length === 0) {\n return false;\n }\n\n const tolerance = this.options.webhookTolerance ?? 300;\n const timestamp = Number.parseInt(parsed.timestamp, 10);\n if (\n !Number.isFinite(timestamp) ||\n Math.abs(Date.now() / 1000 - timestamp) > tolerance\n ) {\n return false;\n }\n\n const signedPayload = `${parsed.timestamp}.${payload}`;\n const expected = createHmac('sha256', endpointSecret)\n .update(signedPayload)\n .digest('hex');\n\n return parsed.signatures.some((value) =>\n constantTimeEqualHex(value, expected),\n );\n }\n\n parse(payload: string): WebhookEvent {\n let event: StripeWebhookPayload;\n try {\n event = JSON.parse(payload) as StripeWebhookPayload;\n } catch (error) {\n const message =\n error instanceof Error ? error.message : 'Unknown JSON parse error';\n throw new Error(`Invalid Stripe webhook payload: ${message}`);\n }\n\n const resource = event?.data?.object;\n return {\n type: event?.type || 'unknown',\n id: typeof event?.id === 'string' ? event.id : undefined,\n provider: 'stripe',\n timestamp: unixToDate(event?.created) || new Date(),\n payload: event,\n resourceType: mapStripeResourceType(\n resource?.object || undefined,\n event?.type || undefined,\n ),\n resourceId: typeof resource?.id === 'string' ? resource.id : undefined,\n };\n }\n}\n\nfunction encodeStripeForm(params: Record<string, StripeFormValue>) {\n const form = new URLSearchParams();\n\n for (const [key, value] of Object.entries(params)) {\n appendStripeFormValue(form, key, value);\n }\n\n return form;\n}\n\nfunction appendStripeFormValue(\n form: URLSearchParams,\n key: string,\n value: StripeFormValue,\n): void {\n if (value === undefined || value === null) {\n return;\n }\n\n if (value instanceof Date) {\n form.append(key, String(toUnixSeconds(value)));\n return;\n }\n\n if (Array.isArray(value)) {\n value.forEach((item, index) => {\n appendStripeFormValue(form, `${key}[${index}]`, item);\n });\n return;\n }\n\n if (typeof value === 'object') {\n for (const [childKey, childValue] of Object.entries(value)) {\n appendStripeFormValue(form, `${key}[${childKey}]`, childValue);\n }\n return;\n }\n\n form.append(key, String(value));\n}\n\nfunction mapCustomerToStripe(\n customer: CustomerInput,\n): Record<string, StripeFormValue> {\n const stripeCustomer: Record<string, StripeFormValue> = {\n name: customer.name,\n email: customer.email,\n phone: customer.phone,\n address: customer.billingAddress\n ? {\n line1: customer.billingAddress.street1,\n line2: customer.billingAddress.street2,\n city: customer.billingAddress.city,\n state: customer.billingAddress.state,\n postal_code: customer.billingAddress.postalCode,\n country: customer.billingAddress.country,\n }\n : undefined,\n metadata: normalizeMetadata({\n local_id: customer.id,\n payment_terms: customer.paymentTerms,\n ...customer.metadata,\n }),\n };\n\n if (customer.taxExempt !== undefined) {\n stripeCustomer.tax_exempt = customer.taxExempt ? 'exempt' : 'none';\n }\n\n return stripeCustomer;\n}\n\nfunction mapInvoiceToStripe(\n invoice: InvoiceInput,\n): Record<string, StripeFormValue> {\n return {\n customer: invoice.customerExternalId,\n collection_method: 'send_invoice',\n due_date: invoice.dueDate,\n auto_advance: false,\n pending_invoice_items_behavior: 'include',\n automatic_tax: invoice.automaticTax ? { enabled: true } : undefined,\n metadata: normalizeMetadata({\n local_id: invoice.id,\n invoice_number: invoice.invoiceNumber,\n reference: invoice.reference,\n memo: invoice.memo,\n tax_amount: invoice.taxAmount,\n subtotal: invoice.subtotal,\n total_amount: invoice.totalAmount,\n ...invoice.metadata,\n }),\n };\n}\n\nfunction mapInvoiceUpdateToStripe(\n invoice: InvoiceInput,\n): Record<string, StripeFormValue> {\n return {\n due_date: invoice.dueDate,\n metadata: normalizeMetadata({\n local_id: invoice.id,\n invoice_number: invoice.invoiceNumber,\n reference: invoice.reference,\n memo: invoice.memo,\n ...invoice.metadata,\n }),\n };\n}\n\nfunction mapCheckoutSessionToStripe(\n input: StripeCheckoutSessionInput,\n): Record<string, StripeFormValue> {\n return {\n mode: input.mode || 'subscription',\n success_url: input.successUrl,\n cancel_url: input.cancelUrl,\n customer: input.customerExternalId,\n customer_email: input.customerExternalId ? undefined : input.customerEmail,\n client_reference_id: input.clientReferenceId,\n allow_promotion_codes: input.allowPromotionCodes,\n line_items: input.lineItems.map(mapCheckoutLineItem),\n metadata: normalizeMetadata(input.metadata || {}),\n };\n}\n\nfunction mapCheckoutLineItem(\n lineItem: StripeCheckoutLineItem,\n): Record<string, StripeFormValue> {\n if (lineItem.price) {\n return {\n price: lineItem.price,\n quantity: lineItem.quantity || 1,\n };\n }\n\n if (!lineItem.priceData) {\n throw new Error('Stripe checkout line item requires price or priceData');\n }\n\n const productData = lineItem.priceData.product\n ? undefined\n : { name: lineItem.priceData.productName || 'Subscription' };\n\n return {\n quantity: lineItem.quantity || 1,\n price_data: {\n currency: lineItem.priceData.currency,\n unit_amount: lineItem.priceData.unitAmount,\n product: lineItem.priceData.product,\n product_data: productData,\n recurring: lineItem.priceData.recurring\n ? {\n interval: lineItem.priceData.recurring.interval,\n interval_count: lineItem.priceData.recurring.intervalCount,\n }\n : undefined,\n },\n };\n}\n\nfunction mapListOptions(options: ListOptions): Record<string, StripeFormValue> {\n return {\n limit: options.limit,\n starting_after:\n typeof options.offset === 'string' ? options.offset : undefined,\n created: {\n gte: options.startDate,\n lte: options.endDate,\n },\n status: options.status,\n };\n}\n\nfunction mapStripeCustomer(customer: StripeCustomer): ExternalCustomer {\n return {\n externalId: customer.id,\n provider: 'stripe',\n syncedAt: new Date(),\n name: customer.name || '',\n email: customer.email || undefined,\n phone: customer.phone || undefined,\n billingAddress: customer.address\n ? {\n street1: customer.address.line1 || undefined,\n street2: customer.address.line2 || undefined,\n city: customer.address.city || undefined,\n state: customer.address.state || undefined,\n postalCode: customer.address.postal_code || undefined,\n country: customer.address.country || undefined,\n }\n : undefined,\n balance:\n customer.balance === null || customer.balance === undefined\n ? undefined\n : stripeMinorUnitsToMoney(customer.balance, customer.currency),\n currency: customer.currency || undefined,\n raw: customer,\n };\n}\n\nfunction mapStripeInvoice(invoice: StripeInvoice): ExternalInvoice {\n return {\n externalId: invoice.id,\n provider: 'stripe',\n syncedAt: new Date(),\n invoiceNumber: invoice.number || invoice.id,\n customerExternalId:\n typeof invoice.customer === 'string'\n ? invoice.customer\n : invoice.customer?.id || '',\n issueDate: unixToDate(invoice.created) || new Date(),\n dueDate:\n unixToDate(invoice.due_date) || unixToDate(invoice.created) || new Date(),\n subtotal: stripeMinorUnitsToMoney(invoice.subtotal || 0, invoice.currency),\n taxAmount: stripeMinorUnitsToMoney(\n stripeInvoiceTaxAmount(invoice),\n invoice.currency,\n ),\n totalAmount: stripeMinorUnitsToMoney(invoice.total || 0, invoice.currency),\n amountPaid: stripeMinorUnitsToMoney(\n invoice.amount_paid || 0,\n invoice.currency,\n ),\n balance: stripeMinorUnitsToMoney(\n invoice.amount_remaining || 0,\n invoice.currency,\n ),\n status: mapStripeInvoiceStatus(invoice.status, invoice.due_date),\n currency: invoice.currency || 'usd',\n raw: invoice,\n };\n}\n\nfunction mapStripePaymentIntent(\n paymentIntent: StripePaymentIntent,\n): ExternalPayment {\n return {\n externalId: paymentIntent.id,\n provider: 'stripe',\n syncedAt: new Date(),\n amount: stripeMinorUnitsToMoney(\n paymentIntent.amount || 0,\n paymentIntent.currency,\n ),\n currency: paymentIntent.currency || 'usd',\n paidAt: unixToDate(paymentIntent.created) || new Date(),\n method: paymentIntent.payment_method_types?.[0],\n transactionId: paymentIntent.latest_charge || paymentIntent.id,\n invoiceExternalIds: paymentIntent.invoice\n ? [paymentIntent.invoice]\n : undefined,\n status: mapStripePaymentStatus(paymentIntent.status),\n raw: paymentIntent,\n };\n}\n\nfunction mapStripeSubscription(\n subscription: StripeSubscription,\n): StripeSubscriptionStatusResult {\n return {\n externalId: subscription.id,\n status: subscription.status,\n customerExternalId:\n typeof subscription.customer === 'string'\n ? subscription.customer\n : subscription.customer.id,\n currentPeriodStart: unixToDate(subscription.current_period_start),\n currentPeriodEnd: unixToDate(subscription.current_period_end),\n cancelAtPeriodEnd: Boolean(subscription.cancel_at_period_end),\n canceledAt: unixToDate(subscription.canceled_at),\n trialEnd: unixToDate(subscription.trial_end),\n raw: subscription,\n };\n}\n\nfunction mapStripeInvoiceStatus(\n status?: string | null,\n dueDate?: number | null,\n): ExternalInvoice['status'] {\n switch (status) {\n case 'draft':\n return 'draft';\n case 'paid':\n return 'paid';\n case 'void':\n return 'voided';\n case 'open':\n if (dueDate && dueDate * 1000 < Date.now()) {\n return 'overdue';\n }\n return 'sent';\n default:\n return 'sent';\n }\n}\n\nfunction mapStripePaymentStatus(\n status?: string | null,\n): ExternalPayment['status'] {\n switch (status) {\n case 'succeeded':\n return 'completed';\n case 'processing':\n case 'requires_action':\n case 'requires_capture':\n case 'requires_confirmation':\n return 'pending';\n case 'canceled':\n case 'requires_payment_method':\n return 'failed';\n default:\n return 'pending';\n }\n}\n\nfunction mapStripeResourceType(\n object?: string,\n eventType?: string,\n): WebhookEvent['resourceType'] | undefined {\n if (object === 'customer' || eventType?.startsWith('customer.')) {\n return 'customer';\n }\n if (object === 'invoice' || eventType?.startsWith('invoice.')) {\n return 'invoice';\n }\n if (\n object === 'payment_intent' ||\n object === 'charge' ||\n eventType?.startsWith('payment_intent.') ||\n eventType?.startsWith('charge.')\n ) {\n return 'payment';\n }\n return undefined;\n}\n\nfunction normalizeMetadata(\n metadata: Record<string, unknown>,\n): Record<string, string> {\n const normalized: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(metadata)) {\n if (value !== undefined && value !== null) {\n normalized[key] = String(value);\n }\n }\n\n return normalized;\n}\n\nfunction parseStripeSignatureHeader(signature: string): {\n timestamp?: string;\n signatures: string[];\n} {\n const parts = signature.split(',').map((part) => part.trim());\n const parsed: { timestamp?: string; signatures: string[] } = {\n signatures: [],\n };\n\n for (const part of parts) {\n const separatorIndex = part.indexOf('=');\n if (separatorIndex === -1) {\n continue;\n }\n\n const key = part.slice(0, separatorIndex);\n const value = part.slice(separatorIndex + 1);\n if (key === 't') {\n parsed.timestamp = value;\n }\n if (key === 'v1' && value) {\n parsed.signatures.push(value);\n }\n }\n\n return parsed;\n}\n\nfunction constantTimeEqualHex(left: string, right: string): boolean {\n try {\n const leftBuffer = Buffer.from(left, 'hex');\n const rightBuffer = Buffer.from(right, 'hex');\n return (\n leftBuffer.length === rightBuffer.length &&\n timingSafeEqual(leftBuffer, rightBuffer)\n );\n } catch {\n return false;\n }\n}\n\nfunction reconcileRecords<TLocal extends { externalId?: string }>(\n provider: AccountingProviderType,\n locals: TLocal[],\n externals: ExternalRecord[],\n compare: (local: TLocal, external: ExternalRecord) => FieldDiff[],\n): AuditReport<TLocal> {\n const externalById = new Map(\n externals.map((external) => [external.externalId, external]),\n );\n const matched: AuditMatch<TLocal>[] = [];\n const discrepancies: AuditReport<TLocal>['discrepancies'] = [];\n const localOnly: TLocal[] = [];\n const seenExternalIds = new Set<string>();\n\n for (const local of locals) {\n const external = local.externalId\n ? externalById.get(local.externalId)\n : undefined;\n\n if (!external) {\n localOnly.push(local);\n continue;\n }\n\n seenExternalIds.add(external.externalId);\n const differences = compare(local, external);\n if (differences.length === 0) {\n matched.push({ local, external, status: 'identical' });\n } else {\n discrepancies.push({ local, external, differences });\n }\n }\n\n const externalOnly = externals.filter(\n (external) => !seenExternalIds.has(external.externalId),\n );\n\n return {\n provider,\n auditedAt: new Date(),\n matched,\n localOnly,\n externalOnly,\n discrepancies,\n summary: {\n total: locals.length + externalOnly.length,\n matched: matched.length,\n localOnly: localOnly.length,\n externalOnly: externalOnly.length,\n discrepancies: discrepancies.length,\n },\n };\n}\n\nfunction compareCustomer(\n local: CustomerInput,\n external: ExternalRecord,\n): FieldDiff[] {\n const customer = external as ExternalCustomer;\n return [\n compareField('name', local.name, customer.name),\n compareField('email', local.email, customer.email),\n ].filter((diff): diff is FieldDiff => Boolean(diff));\n}\n\nfunction compareInvoice(\n local: InvoiceInput,\n external: ExternalRecord,\n): FieldDiff[] {\n const invoice = external as ExternalInvoice;\n return [\n compareField('totalAmount', local.totalAmount, invoice.totalAmount),\n compareField('currency', local.currency || 'usd', invoice.currency),\n ].filter((diff): diff is FieldDiff => Boolean(diff));\n}\n\nfunction comparePayment(\n local: PaymentInput,\n external: ExternalRecord,\n): FieldDiff[] {\n const payment = external as ExternalPayment;\n return [\n compareField('amount', local.amount, payment.amount),\n compareField('currency', local.currency || 'usd', payment.currency),\n ].filter((diff): diff is FieldDiff => Boolean(diff));\n}\n\nfunction compareField(\n field: string,\n localValue: unknown,\n externalValue: unknown,\n): FieldDiff | null {\n if (valuesEqual(localValue, externalValue)) {\n return null;\n }\n return { field, localValue, externalValue };\n}\n\nfunction valuesEqual(left: unknown, right: unknown): boolean {\n if (left === right) {\n return true;\n }\n if (typeof left === 'number' && typeof right === 'number') {\n return Math.abs(left - right) < 0.01;\n }\n return false;\n}\n\nfunction stripeInvoiceTaxAmount(invoice: StripeInvoice): number {\n if (typeof invoice.tax === 'number') {\n return invoice.tax;\n }\n return (invoice.total_taxes || []).reduce(\n (total, tax) => total + (tax.amount || 0),\n 0,\n );\n}\n\nconst STRIPE_ZERO_DECIMAL_CURRENCIES = new Set([\n 'BIF',\n 'CLP',\n 'DJF',\n 'GNF',\n 'JPY',\n 'KMF',\n 'KRW',\n 'MGA',\n 'PYG',\n 'RWF',\n 'VND',\n 'VUV',\n 'XAF',\n 'XOF',\n 'XPF',\n]);\nconst STRIPE_THREE_DECIMAL_CURRENCIES = new Set([\n 'BHD',\n 'IQD',\n 'JOD',\n 'KWD',\n 'LYD',\n 'OMR',\n 'TND',\n]);\n\nfunction stripeCurrencyMinorUnitFactor(currency?: string | null): number {\n const normalized = (currency || 'usd').toUpperCase();\n if (STRIPE_ZERO_DECIMAL_CURRENCIES.has(normalized)) {\n return 1;\n }\n if (STRIPE_THREE_DECIMAL_CURRENCIES.has(normalized)) {\n return 1_000;\n }\n return 100;\n}\n\nfunction moneyToStripeMinorUnits(amount: number, currency: string): number {\n return Math.round(amount * stripeCurrencyMinorUnitFactor(currency));\n}\n\nfunction stripeMinorUnitsToMoney(\n amount: number,\n currency?: string | null,\n): number {\n return amount / stripeCurrencyMinorUnitFactor(currency);\n}\n\nfunction centsToMoney(cents: number): number {\n return cents / 100;\n}\n\nfunction toUnixSeconds(date: Date): number {\n return Math.floor(date.getTime() / 1000);\n}\n\nfunction unixToDate(value?: number | null): Date | undefined {\n return value === null || value === undefined\n ? undefined\n : new Date(value * 1000);\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n"],"mappings":"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"}