@whop/elements 1.0.0-beta.4 → 1.0.0-beta.5

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/payments.d.cts CHANGED
@@ -12,17 +12,13 @@
12
12
  export type PaymentsOptions = (
13
13
  | {
14
14
  /**
15
- * Account ID, prefixed `biz_`. Required for PaymentsElement; omit only when calling static methods without an account surface.
15
+ * Account ID, prefixed `biz_`. Omit only when calling static methods without an account surface.
16
16
  */
17
17
  accountId: string;
18
18
  /**
19
19
  * Mount mode, `payment` by default. `setup` saves a payment method and charges nothing, now or later: only methods that can be saved are offered and amount bounds do not apply. Confirm with `createConfirmationToken()`, then create the setup intent server-side.
20
20
  */
21
21
  mode?: "payment";
22
- /**
23
- * Scoped bearer token for PaymentsElement. Requires `payment:basic:read`; buyer emails additionally require `member:email:read`. Omit only with a same-origin Whop session.
24
- */
25
- accessToken?: string;
26
22
  /**
27
23
  * Plan ID, prefixed `plan_`. It resolves client-side to currency, amount, and method configuration. Pass a plan or inline currency and amount, never both.
28
24
  */
@@ -36,7 +32,7 @@ export type PaymentsOptions = (
36
32
  */
37
33
  returnUrl?: string;
38
34
  /**
39
- * A setup saves the payment method for `off_session` use, the only usage a setup accepts, and displays the save consent.
35
+ * A setup saves the payment method for `off_session` use, the only usage a setup accepts.
40
36
  */
41
37
  setupFutureUsage?: "off_session" | "on_session";
42
38
  /**
@@ -58,17 +54,13 @@ export type PaymentsOptions = (
58
54
  }
59
55
  | {
60
56
  /**
61
- * Account ID, prefixed `biz_`. Required for PaymentsElement; omit only when calling static methods without an account surface.
57
+ * Account ID, prefixed `biz_`. Omit only when calling static methods without an account surface.
62
58
  */
63
59
  accountId: string;
64
60
  /**
65
61
  * Mount mode, `payment` by default. `setup` saves a payment method and charges nothing, now or later: only methods that can be saved are offered and amount bounds do not apply. Confirm with `createConfirmationToken()`, then create the setup intent server-side.
66
62
  */
67
63
  mode?: "payment";
68
- /**
69
- * Scoped bearer token for PaymentsElement. Requires `payment:basic:read`; buyer emails additionally require `member:email:read`. Omit only with a same-origin Whop session.
70
- */
71
- accessToken?: string;
72
64
  /**
73
65
  * Lowercase three-letter ISO 4217 currency code. It filters the payment-method matrix.
74
66
  */
@@ -90,7 +82,7 @@ export type PaymentsOptions = (
90
82
  */
91
83
  returnUrl?: string;
92
84
  /**
93
- * A setup saves the payment method for `off_session` use, the only usage a setup accepts, and displays the save consent.
85
+ * A setup saves the payment method for `off_session` use, the only usage a setup accepts.
94
86
  */
95
87
  setupFutureUsage?: "off_session" | "on_session";
96
88
  /**
@@ -112,17 +104,13 @@ export type PaymentsOptions = (
112
104
  }
113
105
  | {
114
106
  /**
115
- * Account ID, prefixed `biz_`. Required for PaymentsElement; omit only when calling static methods without an account surface.
107
+ * Account ID, prefixed `biz_`. Omit only when calling static methods without an account surface.
116
108
  */
117
109
  accountId: string;
118
110
  /**
119
111
  * Mount mode, `payment` by default. `setup` saves a payment method and charges nothing, now or later: only methods that can be saved are offered and amount bounds do not apply. Confirm with `createConfirmationToken()`, then create the setup intent server-side.
120
112
  */
121
113
  mode: "setup";
122
- /**
123
- * Scoped bearer token for PaymentsElement. Requires `payment:basic:read`; buyer emails additionally require `member:email:read`. Omit only with a same-origin Whop session.
124
- */
125
- accessToken?: string;
126
114
  /**
127
115
  * Lowercase three-letter ISO 4217 currency code. It filters the payment-method matrix.
128
116
  */
@@ -148,7 +136,7 @@ export type PaymentsOptions = (
148
136
  */
149
137
  returnUrl?: string;
150
138
  /**
151
- * A setup saves the payment method for `off_session` use, the only usage a setup accepts, and displays the save consent.
139
+ * A setup saves the payment method for `off_session` use, the only usage a setup accepts.
152
140
  */
153
141
  setupFutureUsage?: "off_session";
154
142
  /**
@@ -170,13 +158,9 @@ export type PaymentsOptions = (
170
158
  }
171
159
  | {
172
160
  /**
173
- * Account ID, prefixed `biz_`. Required for PaymentsElement; omit only when calling static methods without an account surface.
161
+ * Account ID, prefixed `biz_`. Omit only when calling static methods without an account surface.
174
162
  */
175
163
  accountId?: string;
176
- /**
177
- * Scoped bearer token for PaymentsElement. Requires `payment:basic:read`; buyer emails additionally require `member:email:read`. Omit only with a same-origin Whop session.
178
- */
179
- accessToken?: string;
180
164
  /**
181
165
  * Mount mode, `payment` by default. `setup` saves a payment method and charges nothing, now or later: only methods that can be saved are offered and amount bounds do not apply. Confirm with `createConfirmationToken()`, then create the setup intent server-side.
182
166
  */
@@ -206,7 +190,7 @@ export type PaymentsOptions = (
206
190
  */
207
191
  returnUrl?: string;
208
192
  /**
209
- * A setup saves the payment method for `off_session` use, the only usage a setup accepts, and displays the save consent.
193
+ * A setup saves the payment method for `off_session` use, the only usage a setup accepts.
210
194
  */
211
195
  setupFutureUsage?: "off_session" | "on_session";
212
196
  /**
@@ -237,120 +221,6 @@ export type PaymentsOptions = (
237
221
  locale?: import("./_framework.js").WhopElementsLocale;
238
222
  };
239
223
 
240
- /**
241
- * Consumer props for the "payments" element. Set at create (or as `<PaymentsElement />` JSX props), and updatable live via `update()`.
242
- * @see https://docs.whop.com/elements/latest/payments/payments
243
- */
244
- export interface PaymentsElementProps {
245
- /**
246
- * Show the header action menu, Export button, and table settings button.
247
- * @default true
248
- */
249
- showActions?: boolean;
250
- /**
251
- * Show the three-dot action menu on each payment row.
252
- * @default true
253
- */
254
- showRowActions?: boolean;
255
- /**
256
- * Show the six payment status boxes above the filters.
257
- * @default true
258
- */
259
- showStatusTabs?: boolean;
260
- /**
261
- * Show the tracking column and filter for physical-product accounts. Tracking data requires `shipment:basic:read`.
262
- * @default true
263
- */
264
- showTracking?: boolean;
265
- }
266
-
267
- /**
268
- * The live handle for a mounted "payments" element. Returned by `create("payments")`; in React, the component's `ref`.
269
- * @see https://docs.whop.com/elements/latest/payments/payments
270
- */
271
- export interface PaymentsElementHandle {
272
- /**
273
- * Reload payments after a refund or another change.
274
- */
275
- refresh: () => Promise<void>;
276
- /**
277
- * Mounts the element in `target` and starts loading. React components mount themselves.
278
- */
279
- mount: (target: string | HTMLElement) => void;
280
- /**
281
- * Removes the element and releases its frame and subscriptions. You can call it more than once. React removes the element automatically.
282
- */
283
- destroy: () => void;
284
- /**
285
- * Merges new props into the mounted element. In React, change the component props instead.
286
- */
287
- update: (options: Partial<PaymentsElementProps>) => void;
288
- }
289
-
290
- /**
291
- * Options for `create("payments")`: the consumer props plus event callbacks and lifecycle hooks.
292
- * @example
293
- * ```ts
294
- * const payments = payments.create("payments", {}); // this interface: props + on<Event> callbacks
295
- * payments.mount("#payments-payments");
296
- * ```
297
- * @see https://docs.whop.com/elements/latest/payments/payments
298
- */
299
- export interface PaymentsElementCreateOptions {
300
- /**
301
- * Show the header action menu, Export button, and table settings button.
302
- * @default true
303
- */
304
- showActions?: boolean;
305
- /**
306
- * Show the three-dot action menu on each payment row.
307
- * @default true
308
- */
309
- showRowActions?: boolean;
310
- /**
311
- * Show the six payment status boxes above the filters.
312
- * @default true
313
- */
314
- showStatusTabs?: boolean;
315
- /**
316
- * Show the tracking column and filter for physical-product accounts. Tracking data requires `shipment:basic:read`.
317
- * @default true
318
- */
319
- showTracking?: boolean;
320
- /**
321
- * Open payment details in your application.
322
- */
323
- onPaymentSelected?: ((payload: { paymentId: string; }) => void);
324
- /**
325
- * Open the invoice in your application.
326
- */
327
- onInvoiceRequested?: ((payload: { paymentId: string; }) => void);
328
- /**
329
- * Open the buyer in your application.
330
- */
331
- onUserSelected?: ((payload: { userId: string; }) => void);
332
- /**
333
- * The viewer requested a refund. Your application must confirm and authorize it server-side. Refund controls are enabled only when this callback is provided.
334
- */
335
- onRefundRequested?: ((payload: { paymentIds: string[]; }) => void);
336
- /**
337
- * Open the account’s payment settings in your application.
338
- */
339
- onSettingsRequested?: ((payload: Record<string, never>) => void);
340
- /**
341
- * Runs after the loading skeleton first paints and before `onReady`.
342
- */
343
- onLoaderStart?: (() => void);
344
- /**
345
- * Runs after the element's first complete paint.
346
- */
347
- onReady?: (() => void);
348
- /**
349
- * Runs when the element fails to load or crashes. The fallback remains visible. Use `code` for programmatic handling. `sourceKey` identifies a failed host-state source.
350
- */
351
- onError?: ((e: { message: string; code?: string | undefined; sourceKey?: string | undefined; }) => void);
352
- }
353
-
354
224
  /**
355
225
  * Consumer props for the "payment" element. Set at create (or as `<PaymentElement />` JSX props), and updatable live via `update()`.
356
226
  * @see https://docs.whop.com/elements/latest/payments/payment
@@ -362,10 +232,10 @@ export interface PaymentElementProps {
362
232
  */
363
233
  order?: string[];
364
234
  /**
365
- * Controls billing-details collection. `billingDetails: 'minimal'` (default) follows each method's matrix. Methods collect name and the complete country format by default. An override may collect only the declared minimum or nothing. For cards, the minimum is name on card, country, and postal code. `'full'` requires name and the complete country format for every fresh method. `'never'` hides the block. Pass the address to `createConfirmationToken` instead. The country selector includes only countries supported by the method and payment currency. With an installment plan selected, it narrows to the countries the plan serves — the billing country is the transaction country the charge processes under. It locks when only one is available.
235
+ * Controls billing-details collection. `billingDetails: 'minimal'` (default) follows each method's matrix. Methods collect name and the complete country format by default. An override may collect only the declared minimum or nothing. For cards, the minimum is name on card, country, and postal code. `'full'` requires name and the complete country format for every fresh method. `'never'` hides the block. `phone: 'never'` hides only the billing phone input when your form already collects it; pass `billingDetails.phone` to `createConfirmationToken` for methods that require it. Pass the address to `createConfirmationToken` instead. The country selector includes only countries supported by the method and payment currency. With an installment plan selected, it narrows to the countries the plan serves — the billing country is the transaction country the charge processes under. It locks when only one is available.
366
236
  * @default {"billingDetails":"minimal"}
367
237
  */
368
- fields?: { billingDetails?: "full" | "minimal" | "never" | undefined; };
238
+ fields?: { billingDetails?: "full" | "minimal" | "never" | undefined; phone?: "never" | "auto" | undefined; };
369
239
  /**
370
240
  * Picker layout. `accordion` (default) stacks methods and expands details inline. `horizontal` shows equal-width, non-scrolling tiles with selected details below. After four methods, a More tile opens a native selector. The method picked there occupies the final tile until the next selection. Selection and confirmation behave identically.
371
241
  * @default "accordion"
@@ -422,10 +292,10 @@ export interface PaymentElementCreateOptions {
422
292
  */
423
293
  order?: string[];
424
294
  /**
425
- * Controls billing-details collection. `billingDetails: 'minimal'` (default) follows each method's matrix. Methods collect name and the complete country format by default. An override may collect only the declared minimum or nothing. For cards, the minimum is name on card, country, and postal code. `'full'` requires name and the complete country format for every fresh method. `'never'` hides the block. Pass the address to `createConfirmationToken` instead. The country selector includes only countries supported by the method and payment currency. With an installment plan selected, it narrows to the countries the plan serves — the billing country is the transaction country the charge processes under. It locks when only one is available.
295
+ * Controls billing-details collection. `billingDetails: 'minimal'` (default) follows each method's matrix. Methods collect name and the complete country format by default. An override may collect only the declared minimum or nothing. For cards, the minimum is name on card, country, and postal code. `'full'` requires name and the complete country format for every fresh method. `'never'` hides the block. `phone: 'never'` hides only the billing phone input when your form already collects it; pass `billingDetails.phone` to `createConfirmationToken` for methods that require it. Pass the address to `createConfirmationToken` instead. The country selector includes only countries supported by the method and payment currency. With an installment plan selected, it narrows to the countries the plan serves — the billing country is the transaction country the charge processes under. It locks when only one is available.
426
296
  * @default {"billingDetails":"minimal"}
427
297
  */
428
- fields?: { billingDetails?: "full" | "minimal" | "never" | undefined; };
298
+ fields?: { billingDetails?: "full" | "minimal" | "never" | undefined; phone?: "never" | "auto" | undefined; };
429
299
  /**
430
300
  * Picker layout. `accordion` (default) stacks methods and expands details inline. `horizontal` shows equal-width, non-scrolling tiles with selected details below. After four methods, a More tile opens a native selector. The method picked there occupies the final tile until the next selection. Selection and confirmation behave identically.
431
301
  * @default "accordion"
@@ -442,9 +312,9 @@ export interface PaymentElementCreateOptions {
442
312
  */
443
313
  autoSelect?: boolean;
444
314
  /**
445
- * Fires when selection changes. `complete: true` means the buyer selected a method and completed its card fields or required inputs. Use it to enable confirmation. `method` provides category, per-currency countries, and amount bounds for dependent UI such as country fields. `supportsBuyerFee` indicates whether to include Whop's buyer service fee in the displayed total.
315
+ * Fires when selection changes. `complete: true` means the buyer selected a method and completed its card fields or required inputs. Use it to enable confirmation. `method` provides category, per-currency countries, and amount bounds for dependent UI such as country fields. `requiresBillingPhone` indicates whether the selected method requires a phone in billing details, including when `fields.phone` disables its input. `supportsBuyerFee` indicates whether to include Whop's buyer service fee in the displayed total.
446
316
  */
447
- onChange?: ((payload: { complete: boolean; type?: string | undefined; supportsBuyerFee?: boolean | undefined; method?: { type: string; category: string; template: string; display_name: string; countries: ({ country: string; min_amount: number | null; max_amount: number | null; })[]; min_amount: number | null; max_amount: number | null; } | undefined; }) => void);
317
+ onChange?: ((payload: { complete: boolean; type?: string | undefined; supportsBuyerFee?: boolean | undefined; requiresBillingPhone?: boolean | undefined; method?: { type: string; category: string; template: string; display_name: string; countries: ({ country: string; min_amount: number | null; max_amount: number | null; })[]; min_amount: number | null; max_amount: number | null; } | undefined; }) => void);
448
318
  /**
449
319
  * Fires about 300 ms after the internal billing address changes. Use it for tax, shipping, or other address-dependent updates. `country` is an ISO 3166-1 alpha-2 code. The payload omits other address keys when empty or unused for that country. `complete: true` means the billing block is valid and complete. This event fires only while the payment element owns address collection. With `fields.billingDetails: 'never'`, use your address source. With a mounted `AddressElement`, use its `change` event.
450
320
  */
@@ -473,6 +343,11 @@ export interface AddressElementProps {
473
343
  * @default "billing"
474
344
  */
475
345
  mode?: "billing" | "shipping";
346
+ /**
347
+ * `full` (default) stacks labeled fields. `compact` groups placeholder-labeled fields within one border.
348
+ * @default "full"
349
+ */
350
+ layout?: "full" | "compact";
476
351
  /**
477
352
  * Address line 2: always visible (default), revealed by a text button (`toggle`), or never collected.
478
353
  * @default "always"
@@ -483,11 +358,6 @@ export interface AddressElementProps {
483
358
  * @default "combined"
484
359
  */
485
360
  name?: "split" | "combined" | "none";
486
- /**
487
- * `full` (default) stacks labeled fields. `compact` groups placeholder-labeled fields within one border.
488
- * @default "full"
489
- */
490
- layout?: "full" | "compact";
491
361
  /**
492
362
  * `full` (default) follows the selected country's complete address format. `minimal` collects only country and postal code. `name` independently adds required name fields. Set `name` to `none` to omit them. This element does not add fields required by a payment method. Card confirmation requires a name, country, and postal code, so keep `name` enabled or pass `billingDetails.name`.
493
363
  * @default "full"
@@ -519,7 +389,7 @@ export interface AddressElementProps {
519
389
  /**
520
390
  * Additional fields rendered with the address form. Values are validated and emitted in the separate `custom` map.
521
391
  */
522
- customFields?: ({ key: string; label: string; type: "text" | "select" | "phone" | "date"; position: "after_name" | "after_organization" | "before_country" | "after_address"; required?: boolean | undefined; options?: string[] | undefined; format?: string | undefined; autocomplete?: string | undefined; })[];
392
+ customFields?: ({ key: string; label: string; type: "phone" | "text" | "select" | "date"; position: "after_name" | "after_organization" | "before_country" | "after_address"; required?: boolean | undefined; options?: string[] | undefined; format?: string | undefined; autocomplete?: string | undefined; })[];
523
393
  /**
524
394
  * Fallback country after `defaultValues` and IP detection. Use an ISO 3166-1 alpha-2 code. An empty value falls back to `US`.
525
395
  * @default ""
@@ -569,6 +439,11 @@ export interface AddressElementCreateOptions {
569
439
  * @default "billing"
570
440
  */
571
441
  mode?: "billing" | "shipping";
442
+ /**
443
+ * `full` (default) stacks labeled fields. `compact` groups placeholder-labeled fields within one border.
444
+ * @default "full"
445
+ */
446
+ layout?: "full" | "compact";
572
447
  /**
573
448
  * Address line 2: always visible (default), revealed by a text button (`toggle`), or never collected.
574
449
  * @default "always"
@@ -579,11 +454,6 @@ export interface AddressElementCreateOptions {
579
454
  * @default "combined"
580
455
  */
581
456
  name?: "split" | "combined" | "none";
582
- /**
583
- * `full` (default) stacks labeled fields. `compact` groups placeholder-labeled fields within one border.
584
- * @default "full"
585
- */
586
- layout?: "full" | "compact";
587
457
  /**
588
458
  * `full` (default) follows the selected country's complete address format. `minimal` collects only country and postal code. `name` independently adds required name fields. Set `name` to `none` to omit them. This element does not add fields required by a payment method. Card confirmation requires a name, country, and postal code, so keep `name` enabled or pass `billingDetails.name`.
589
459
  * @default "full"
@@ -615,7 +485,7 @@ export interface AddressElementCreateOptions {
615
485
  /**
616
486
  * Additional fields rendered with the address form. Values are validated and emitted in the separate `custom` map.
617
487
  */
618
- customFields?: ({ key: string; label: string; type: "text" | "select" | "phone" | "date"; position: "after_name" | "after_organization" | "before_country" | "after_address"; required?: boolean | undefined; options?: string[] | undefined; format?: string | undefined; autocomplete?: string | undefined; })[];
488
+ customFields?: ({ key: string; label: string; type: "phone" | "text" | "select" | "date"; position: "after_name" | "after_organization" | "before_country" | "after_address"; required?: boolean | undefined; options?: string[] | undefined; format?: string | undefined; autocomplete?: string | undefined; })[];
619
489
  /**
620
490
  * Fallback country after `defaultValues` and IP detection. Use an ISO 3166-1 alpha-2 code. An empty value falls back to `US`.
621
491
  * @default ""
@@ -1176,7 +1046,7 @@ export interface PaymentRequestResourceOptions {
1176
1046
  */
1177
1047
  export interface PaymentRequestResource {
1178
1048
  /**
1179
- * Returns availability for each wallet when the account offers it, the device supports it, and this page's origin is approved for the account (first-party whop.com pages are pre-approved; a merchant page needs its domain registered and verified as a [payment method domain](/api-reference/beta/payment-method-domains/payment-method-domain)). Apple Pay on non-WebKit browsers is the desktop iPhone-handoff flow, so mobile devices there report it unavailable — native Apple Pay on iOS browsers is unaffected. `order` ranks the wallets by which sheet is native to the browser — Apple Pay first on Safari, Google Pay first elsewhere — so express buttons can stack best-first. This primes `show()`. Always await it first.
1049
+ * Returns availability for each wallet when the account offers it, the device supports it, and this page's origin is approved for the account (first-party whop.com pages are pre-approved; a merchant page needs its domain registered and verified as a [payment method domain](/api-reference/beta/payment-method-domains/payment-method-domain), and offering Google Pay there is subject to the [Google Pay API Terms of Service](https://payments.developers.google.com/terms/sellertos)). Apple Pay on non-WebKit browsers is the desktop iPhone-handoff flow, so mobile devices there report it unavailable — native Apple Pay on iOS browsers is unaffected. `order` ranks the wallets by which sheet is native to the browser — Apple Pay first on Safari, Google Pay first elsewhere — so express buttons can stack best-first. This primes `show()`. Always await it first.
1180
1050
  */
1181
1051
  canMakePayment: () => Promise<WalletAvailability>;
1182
1052
  /**
@@ -1219,10 +1089,6 @@ export interface PaymentRequestResource {
1219
1089
  * @see https://docs.whop.com/elements/latest/payments/overview
1220
1090
  */
1221
1091
  export interface PaymentsHandle {
1222
- /**
1223
- * The dashboard payments table with status cards, search, filters, sorting, row selection, CSV export, column settings, and pagination. Reads all payment pages to compute complete counts and filter locally; intended for accounts with modest payment histories. Customer details and refunds are handed to your application through events.
1224
- */
1225
- create(name: "payments", options?: PaymentsElementCreateOptions): PaymentsElementHandle;
1226
1092
  /**
1227
1093
  * Shows available payment methods and collects the selected method's required fields and disclosures. Use `change` to enable your pay button. In its activation handler, call `payments.createConfirmationToken()`. Confirm the token server-side, then pass any pending step to `payments.handleNextAction(…)`. Use `addressChange` for address-dependent updates.
1228
1094
  * Exclusive slot `entry`. Mount exactly one of: payment | card | cardFields.
@@ -1250,10 +1116,10 @@ export interface PaymentsHandle {
1250
1116
  */
1251
1117
  create(name: "branding", options?: BrandingElementCreateOptions): BrandingElementHandle;
1252
1118
  /**
1253
- * Creates a confirmation token for the selected method from your pay button. Pass the checkout's billing details. They must include `email`. Cards also need `name` and an address containing `line1` and `country`. Wallet selections open their sheet during the pay-button interaction. Confirm the returned `confirmationToken` server-side, then call `WhopElements.payments.handleNextAction(…)`.
1119
+ * Creates a confirmation token for the selected method from your pay button. Pass the checkout's billing details. They must include `email`. Supply `phone` for methods that require it when billing collection is disabled. Cards also need `name` and an address containing `line1` and `country`. Wallet selections open their sheet during the pay-button interaction. Confirm the returned `confirmationToken` server-side, then call `WhopElements.payments.handleNextAction(…)`.
1254
1120
  * Runs on your page (host-side), not in the controller iframe.
1255
1121
  */
1256
- createConfirmationToken: (input: { billingDetails?: { email?: string | undefined; name?: string | undefined; address?: { country?: string | undefined; line1?: string | undefined; line2?: string | undefined; city?: string | undefined; state?: string | undefined; postal_code?: string | undefined; } | undefined; } | undefined; }) => Promise<{ confirmationToken: string; type: string; }>;
1122
+ createConfirmationToken: (input: { billingDetails?: { email?: string | undefined; name?: string | undefined; phone?: string | undefined; address?: { country?: string | undefined; line1?: string | undefined; line2?: string | undefined; city?: string | undefined; state?: string | undefined; postal_code?: string | undefined; } | undefined; } | undefined; }) => Promise<{ confirmationToken: string; type: string; }>;
1257
1123
  /**
1258
1124
  * Three separately mountable, PCI-isolated card fields for custom layouts: number, expiration, and security code. Create with `payments.create("cardFields")`, place each field, enable your payment button from `onChange`, and confirm with `payments.createConfirmationToken()`. Card numbers remain in hosted fields.
1259
1125
  * Exclusive slot `entry`. Mount exactly one of: payment | card | cardFields.