stripe 8.203.0 → 8.206.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/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 8.206.0 - 2022-03-01
4
+ * [#1361](https://github.com/stripe/stripe-node/pull/1361) [#1362](https://github.com/stripe/stripe-node/pull/1362) API Updates
5
+ * Add support for new resource `TestHelpers.TestClock`
6
+ * Add support for `test_clock` on `CustomerCreateParams`, `Customer`, `Invoice`, `InvoiceItem`, `QuoteCreateParams`, `Quote`, `Subscription`, and `SubscriptionSchedule`
7
+ * Add support for `pending_invoice_items_behavior` on `InvoiceCreateParams`
8
+ * Change type of `ProductUpdateParams.url` from `string` to `emptyStringable(string)`
9
+ * Add support for `next_action` on `Refund`
10
+
11
+ ## 8.205.0 - 2022-02-25
12
+ * [#1098](https://github.com/stripe/stripe-node/pull/1098) Typescript: add declaration for `onDone` on `autoPagingEach`
13
+ * [#1357](https://github.com/stripe/stripe-node/pull/1357) Properly handle API errors with unknown error types
14
+ * [#1359](https://github.com/stripe/stripe-node/pull/1359) API Updates
15
+ * Change `BillingPortalConfiguration` `.business_profile.privacy_policy_url` and `.business_profile.terms_of_service_url` to be optional on requests and responses
16
+
17
+ * Add support for `konbini_payments` on `AccountUpdateParams.capabilities`, `AccountCreateParams.capabilities`, and `Account.capabilities`
18
+ * Add support for `konbini` on `Charge.payment_method_details`,
19
+ * Add support for `.payment_method_options.konbini` and `.payment_method_data.konbini` on the `PaymentIntent` API.
20
+ * Add support for `.payment_settings.payment_method_options.konbini` on the `Invoice` API.
21
+ * Add support for `.payment_method_options.konbini` on the `Subscription` API
22
+ * Add support for `.payment_method_options.konbini` on the `CheckoutSession` API
23
+ * Add support for `konbini` on the `PaymentMethod` API.
24
+ * Add support for `konbini_display_details` on `PaymentIntent.next_action`
25
+ * [#1311](https://github.com/stripe/stripe-node/pull/1311) update documentation to use appInfo
26
+
27
+ ## 8.204.0 - 2022-02-23
28
+ * [#1354](https://github.com/stripe/stripe-node/pull/1354) API Updates
29
+ * Add support for `setup_future_usage` on `PaymentIntentCreateParams.payment_method_options.*`
30
+ * Add support for new values `bbpos_wisepad3` and `stripe_m2` on enums `TerminalReaderListParams.device_type` and `Terminal.Reader.device_type`
31
+ * Add support for `object` on `ExternalAccountListParams` (fixes #1351)
32
+
3
33
  ## 8.203.0 - 2022-02-15
4
34
  * [#1350](https://github.com/stripe/stripe-node/pull/1350) API Updates
5
35
  * Add support for `verify_microdeposits` method on resources `PaymentIntent` and `SetupIntent`
package/README.md CHANGED
@@ -367,13 +367,27 @@ expect(event.id).to.equal(payload.id);
367
367
 
368
368
  ### Writing a Plugin
369
369
 
370
- If you're writing a plugin that uses the library, we'd appreciate it if you identified using `stripe.setAppInfo()`:
370
+ If you're writing a plugin that uses the library, we'd appreciate it if you instantiated your stripe client with `appInfo`, eg;
371
371
 
372
372
  ```js
373
- stripe.setAppInfo({
374
- name: 'MyAwesomePlugin',
375
- version: '1.2.34', // Optional
376
- url: 'https://myawesomeplugin.info', // Optional
373
+ const stripe = require('stripe')('sk_test_...', {
374
+ appInfo: {
375
+ name: 'MyAwesomePlugin',
376
+ version: '1.2.34', // Optional
377
+ url: 'https://myawesomeplugin.info', // Optional
378
+ }
379
+ });
380
+ ```
381
+
382
+ Or using ES modules or TypeScript:
383
+
384
+ ```js
385
+ const stripe = new Stripe(apiKey, {
386
+ appInfo: {
387
+ name: 'MyAwesomePlugin',
388
+ version: '1.2.34', // Optional
389
+ url: 'https://myawesomeplugin.info', // Optional
390
+ }
377
391
  });
378
392
  ```
379
393
 
package/VERSION CHANGED
@@ -1 +1 @@
1
- 8.203.0
1
+ 8.206.0
package/lib/Error.js CHANGED
@@ -49,7 +49,7 @@ class StripeError extends Error {
49
49
  case 'invalid_grant':
50
50
  return new StripeInvalidGrantError(rawStripeError);
51
51
  default:
52
- return new GenericError('Generic', 'Unknown Error');
52
+ return new StripeUnknownError(rawStripeError);
53
53
  }
54
54
  }
55
55
  }
@@ -122,6 +122,11 @@ class StripeIdempotencyError extends StripeError {}
122
122
  */
123
123
  class StripeInvalidGrantError extends StripeError {}
124
124
 
125
+ /**
126
+ * Any other error from Stripe not specifically captured above
127
+ */
128
+ class StripeUnknownError extends StripeError {}
129
+
125
130
  module.exports.generate = StripeError.generate;
126
131
  module.exports.StripeError = StripeError;
127
132
  module.exports.StripeCardError = StripeCardError;
@@ -134,3 +139,4 @@ module.exports.StripeConnectionError = StripeConnectionError;
134
139
  module.exports.StripeSignatureVerificationError = StripeSignatureVerificationError;
135
140
  module.exports.StripeIdempotencyError = StripeIdempotencyError;
136
141
  module.exports.StripeInvalidGrantError = StripeInvalidGrantError;
142
+ module.exports.StripeUnknownError = StripeUnknownError;
@@ -0,0 +1,36 @@
1
+ // File generated from our OpenAPI spec
2
+
3
+ 'use strict';
4
+
5
+ const StripeResource = require('../../StripeResource');
6
+ const stripeMethod = StripeResource.method;
7
+
8
+ module.exports = StripeResource.extend({
9
+ path: 'test_helpers/test_clocks',
10
+
11
+ create: stripeMethod({
12
+ method: 'POST',
13
+ path: '',
14
+ }),
15
+
16
+ retrieve: stripeMethod({
17
+ method: 'GET',
18
+ path: '/{testClock}',
19
+ }),
20
+
21
+ list: stripeMethod({
22
+ method: 'GET',
23
+ path: '',
24
+ methodType: 'list',
25
+ }),
26
+
27
+ del: stripeMethod({
28
+ method: 'DELETE',
29
+ path: '/{testClock}',
30
+ }),
31
+
32
+ advance: stripeMethod({
33
+ method: 'POST',
34
+ path: '/{testClock}/advance',
35
+ }),
36
+ });
package/lib/resources.js CHANGED
@@ -91,4 +91,7 @@ module.exports = {
91
91
  Locations: require('./resources/Terminal/Locations'),
92
92
  Readers: require('./resources/Terminal/Readers'),
93
93
  }),
94
+ TestHelpers: resourceNamespace('testHelpers', {
95
+ TestClocks: require('./resources/TestHelpers/TestClocks'),
96
+ }),
94
97
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stripe",
3
- "version": "8.203.0",
3
+ "version": "8.206.0",
4
4
  "description": "Stripe API wrapper",
5
5
  "keywords": [
6
6
  "stripe",
@@ -236,6 +236,11 @@ declare module 'stripe' {
236
236
  */
237
237
  klarna_payments?: Capabilities.KlarnaPayments;
238
238
 
239
+ /**
240
+ * The status of the konbini payments capability of the account, or whether the account can directly process konbini charges.
241
+ */
242
+ konbini_payments?: Capabilities.KonbiniPayments;
243
+
239
244
  /**
240
245
  * The status of the legacy payments capability of the account.
241
246
  */
@@ -310,6 +315,8 @@ declare module 'stripe' {
310
315
 
311
316
  type KlarnaPayments = 'active' | 'inactive' | 'pending';
312
317
 
318
+ type KonbiniPayments = 'active' | 'inactive' | 'pending';
319
+
313
320
  type LegacyPayments = 'active' | 'inactive' | 'pending';
314
321
 
315
322
  type OxxoPayments = 'active' | 'inactive' | 'pending';
@@ -1243,6 +1250,11 @@ declare module 'stripe' {
1243
1250
  */
1244
1251
  klarna_payments?: Capabilities.KlarnaPayments;
1245
1252
 
1253
+ /**
1254
+ * The konbini_payments capability.
1255
+ */
1256
+ konbini_payments?: Capabilities.KonbiniPayments;
1257
+
1246
1258
  /**
1247
1259
  * The legacy_payments capability.
1248
1260
  */
@@ -1397,6 +1409,13 @@ declare module 'stripe' {
1397
1409
  requested?: boolean;
1398
1410
  }
1399
1411
 
1412
+ interface KonbiniPayments {
1413
+ /**
1414
+ * Passing true requests the capability for the account, if it is not already requested. A requested capability may not immediately become active. Any requirements to activate the capability are returned in the `requirements` arrays.
1415
+ */
1416
+ requested?: boolean;
1417
+ }
1418
+
1400
1419
  interface LegacyPayments {
1401
1420
  /**
1402
1421
  * Passing true requests the capability for the account, if it is not already requested. A requested capability may not immediately become active. Any requirements to activate the capability are returned in the `requirements` arrays.
@@ -2313,6 +2332,11 @@ declare module 'stripe' {
2313
2332
  */
2314
2333
  klarna_payments?: Capabilities.KlarnaPayments;
2315
2334
 
2335
+ /**
2336
+ * The konbini_payments capability.
2337
+ */
2338
+ konbini_payments?: Capabilities.KonbiniPayments;
2339
+
2316
2340
  /**
2317
2341
  * The legacy_payments capability.
2318
2342
  */
@@ -2467,6 +2491,13 @@ declare module 'stripe' {
2467
2491
  requested?: boolean;
2468
2492
  }
2469
2493
 
2494
+ interface KonbiniPayments {
2495
+ /**
2496
+ * Passing true requests the capability for the account, if it is not already requested. A requested capability may not immediately become active. Any requirements to activate the capability are returned in the `requirements` arrays.
2497
+ */
2498
+ requested?: boolean;
2499
+ }
2500
+
2470
2501
  interface LegacyPayments {
2471
2502
  /**
2472
2503
  * Passing true requests the capability for the account, if it is not already requested. A requested capability may not immediately become active. Any requirements to activate the capability are returned in the `requirements` arrays.
@@ -72,12 +72,12 @@ declare module 'stripe' {
72
72
  /**
73
73
  * A link to the business's publicly available privacy policy.
74
74
  */
75
- privacy_policy_url: string;
75
+ privacy_policy_url: string | null;
76
76
 
77
77
  /**
78
78
  * A link to the business's publicly available terms of service.
79
79
  */
80
- terms_of_service_url: string;
80
+ terms_of_service_url: string | null;
81
81
  }
82
82
 
83
83
  interface Features {
@@ -273,12 +273,12 @@ declare module 'stripe' {
273
273
  /**
274
274
  * A link to the business's publicly available privacy policy.
275
275
  */
276
- privacy_policy_url: string;
276
+ privacy_policy_url?: string;
277
277
 
278
278
  /**
279
279
  * A link to the business's publicly available terms of service.
280
280
  */
281
- terms_of_service_url: string;
281
+ terms_of_service_url?: string;
282
282
  }
283
283
 
284
284
  interface Features {
@@ -509,12 +509,12 @@ declare module 'stripe' {
509
509
  /**
510
510
  * A link to the business's publicly available privacy policy.
511
511
  */
512
- privacy_policy_url?: string;
512
+ privacy_policy_url?: Stripe.Emptyable<string>;
513
513
 
514
514
  /**
515
515
  * A link to the business's publicly available terms of service.
516
516
  */
517
- terms_of_service_url?: string;
517
+ terms_of_service_url?: Stripe.Emptyable<string>;
518
518
  }
519
519
 
520
520
  interface Features {
@@ -418,6 +418,8 @@ declare module 'stripe' {
418
418
 
419
419
  klarna?: PaymentMethodDetails.Klarna;
420
420
 
421
+ konbini?: PaymentMethodDetails.Konbini;
422
+
421
423
  multibanco?: PaymentMethodDetails.Multibanco;
422
424
 
423
425
  oxxo?: PaymentMethodDetails.Oxxo;
@@ -1424,6 +1426,26 @@ declare module 'stripe' {
1424
1426
  preferred_locale: string | null;
1425
1427
  }
1426
1428
 
1429
+ interface Konbini {
1430
+ /**
1431
+ * If the payment succeeded, this contains the details of the convenience store where the payment was completed.
1432
+ */
1433
+ store: Konbini.Store | null;
1434
+ }
1435
+
1436
+ namespace Konbini {
1437
+ interface Store {
1438
+ /**
1439
+ * The name of the convenience store chain where the payment was completed.
1440
+ */
1441
+ chain: Store.Chain | null;
1442
+ }
1443
+
1444
+ namespace Store {
1445
+ type Chain = 'familymart' | 'lawson' | 'ministop' | 'seicomart';
1446
+ }
1447
+ }
1448
+
1427
1449
  interface Multibanco {
1428
1450
  /**
1429
1451
  * Entity number associated with this Multibanco payment.
@@ -437,6 +437,8 @@ declare module 'stripe' {
437
437
 
438
438
  boleto?: PaymentMethodOptions.Boleto;
439
439
 
440
+ konbini?: PaymentMethodOptions.Konbini;
441
+
440
442
  oxxo?: PaymentMethodOptions.Oxxo;
441
443
  }
442
444
 
@@ -498,6 +500,13 @@ declare module 'stripe' {
498
500
  expires_after_days: number;
499
501
  }
500
502
 
503
+ interface Konbini {
504
+ /**
505
+ * The number of calendar days (between 1 and 60) after which Konbini payment instructions will expire. For example, if a PaymentIntent is confirmed with Konbini and `expires_after_days` set to 2 on Monday JST, the instructions will expire on Wednesday 23:59:59 JST.
506
+ */
507
+ expires_after_days: number | null;
508
+ }
509
+
501
510
  interface Oxxo {
502
511
  /**
503
512
  * The number of calendar days before an OXXO invoice expires. For example, if you create an OXXO invoice on Monday and you set expires_after_days to 2, the OXXO invoice will expire on Wednesday at 23:59 America/Mexico_City time.
@@ -1172,9 +1181,7 @@ declare module 'stripe' {
1172
1181
  currency?: string;
1173
1182
 
1174
1183
  /**
1175
- * The description for the line item, to be displayed on the Checkout page.
1176
- *
1177
- * If using `price` or `price_data`, will default to the name of the associated product.
1184
+ * [Deprecated] The description for the line item, to be displayed on the Checkout page.
1178
1185
  */
1179
1186
  description?: string;
1180
1187
 
@@ -1508,13 +1515,18 @@ declare module 'stripe' {
1508
1515
  */
1509
1516
  boleto?: PaymentMethodOptions.Boleto;
1510
1517
 
1518
+ /**
1519
+ * contains details about the Konbini payment method options.
1520
+ */
1521
+ konbini?: PaymentMethodOptions.Konbini;
1522
+
1511
1523
  /**
1512
1524
  * contains details about the OXXO payment method options.
1513
1525
  */
1514
1526
  oxxo?: PaymentMethodOptions.Oxxo;
1515
1527
 
1516
1528
  /**
1517
- * contains details about the Wechat Pay payment method options.
1529
+ * contains details about the WeChat Pay payment method options.
1518
1530
  */
1519
1531
  wechat_pay?: PaymentMethodOptions.WechatPay;
1520
1532
  }
@@ -1587,6 +1599,13 @@ declare module 'stripe' {
1587
1599
  expires_after_days?: number;
1588
1600
  }
1589
1601
 
1602
+ interface Konbini {
1603
+ /**
1604
+ * The number of calendar days (between 1 and 60) after which Konbini payment instructions will expire. For example, if a PaymentIntent is confirmed with Konbini and `expires_after_days` set to 2 on Monday JST, the instructions will expire on Wednesday 23:59:59 JST. Defaults to 3 days.
1605
+ */
1606
+ expires_after_days?: Stripe.Emptyable<number>;
1607
+ }
1608
+
1590
1609
  interface Oxxo {
1591
1610
  /**
1592
1611
  * The number of calendar days before an OXXO voucher expires. For example, if you create an OXXO voucher on Monday and you set expires_after_days to 2, the OXXO invoice will expire on Wednesday at 23:59 America/Mexico_City time.
@@ -1626,6 +1645,7 @@ declare module 'stripe' {
1626
1645
  | 'grabpay'
1627
1646
  | 'ideal'
1628
1647
  | 'klarna'
1648
+ | 'konbini'
1629
1649
  | 'oxxo'
1630
1650
  | 'p24'
1631
1651
  | 'sepa_debit'
@@ -130,6 +130,11 @@ declare module 'stripe' {
130
130
  * The customer's tax IDs.
131
131
  */
132
132
  tax_ids?: ApiList<Stripe.TaxId>;
133
+
134
+ /**
135
+ * ID of the test clock this customer belongs to.
136
+ */
137
+ test_clock?: string | Stripe.TestHelpers.TestClock | null;
133
138
  }
134
139
 
135
140
  namespace Customer {
@@ -352,6 +357,11 @@ declare module 'stripe' {
352
357
  * The customer's tax IDs.
353
358
  */
354
359
  tax_id_data?: Array<CustomerCreateParams.TaxIdDatum>;
360
+
361
+ /**
362
+ * ID of the test clock to attach to the customer.
363
+ */
364
+ test_clock?: string;
355
365
  }
356
366
 
357
367
  namespace CustomerCreateParams {
@@ -696,6 +706,7 @@ declare module 'stripe' {
696
706
  | 'grabpay'
697
707
  | 'ideal'
698
708
  | 'klarna'
709
+ | 'konbini'
699
710
  | 'oxxo'
700
711
  | 'p24'
701
712
  | 'sepa_debit'
@@ -121,6 +121,12 @@ declare module 'stripe' {
121
121
  * Specifies which fields in the response should be expanded.
122
122
  */
123
123
  expand?: Array<string>;
124
+
125
+ object?: ExternalAccountListParams.Object;
126
+ }
127
+
128
+ namespace ExternalAccountListParams {
129
+ type Object = 'bank_account' | 'card';
124
130
  }
125
131
 
126
132
  interface ExternalAccountDeleteParams {}
@@ -105,6 +105,11 @@ declare module 'stripe' {
105
105
  */
106
106
  tax_rates: Array<Stripe.TaxRate> | null;
107
107
 
108
+ /**
109
+ * ID of the test clock this invoice item belongs to.
110
+ */
111
+ test_clock?: string | Stripe.TestHelpers.TestClock | null;
112
+
108
113
  /**
109
114
  * Unit amount (in the `currency` specified) of the invoice item.
110
115
  */
@@ -318,6 +318,11 @@ declare module 'stripe' {
318
318
  */
319
319
  tax: number | null;
320
320
 
321
+ /**
322
+ * ID of the test clock this invoice belongs to.
323
+ */
324
+ test_clock?: string | Stripe.TestHelpers.TestClock | null;
325
+
321
326
  threshold_reason?: Invoice.ThresholdReason;
322
327
 
323
328
  /**
@@ -603,6 +608,11 @@ declare module 'stripe' {
603
608
  * If paying by `card`, this sub-hash contains details about the Card payment method options to pass to the invoice's PaymentIntent.
604
609
  */
605
610
  card: PaymentMethodOptions.Card | null;
611
+
612
+ /**
613
+ * If paying by `konbini`, this sub-hash contains details about the Konbini payment method options to pass to the invoice's PaymentIntent.
614
+ */
615
+ konbini: PaymentMethodOptions.Konbini | null;
606
616
  }
607
617
 
608
618
  namespace PaymentMethodOptions {
@@ -651,6 +661,8 @@ declare module 'stripe' {
651
661
  namespace Card {
652
662
  type RequestThreeDSecure = 'any' | 'automatic';
653
663
  }
664
+
665
+ interface Konbini {}
654
666
  }
655
667
 
656
668
  type PaymentMethodType =
@@ -666,6 +678,7 @@ declare module 'stripe' {
666
678
  | 'giropay'
667
679
  | 'grabpay'
668
680
  | 'ideal'
681
+ | 'konbini'
669
682
  | 'sepa_credit_transfer'
670
683
  | 'sepa_debit'
671
684
  | 'sofort'
@@ -886,6 +899,11 @@ declare module 'stripe' {
886
899
  */
887
900
  payment_settings?: InvoiceCreateParams.PaymentSettings;
888
901
 
902
+ /**
903
+ * How to handle pending invoice items on invoice creation. One of `include`, `include_and_require`, or `exclude`. `include` will include any pending invoice items, and will create an empty draft invoice if no pending invoice items exist. `include_and_require` will include any pending invoice items, if no pending invoice items exist then the request will fail. `exclude` will always create an empty invoice draft regardless if there are pending invoice items or not. Defaults to `include_and_require` if the parameter is omitted.
904
+ */
905
+ pending_invoice_items_behavior?: InvoiceCreateParams.PendingInvoiceItemsBehavior;
906
+
889
907
  /**
890
908
  * Extra information about a charge for the customer's credit card statement. It must contain at least one letter. If not specified and this invoice is part of a subscription, the default `statement_descriptor` will be set to the first subscription item's product's `statement_descriptor`.
891
909
  */
@@ -966,6 +984,11 @@ declare module 'stripe' {
966
984
  * If paying by `card`, this sub-hash contains details about the Card payment method options to pass to the invoice's PaymentIntent.
967
985
  */
968
986
  card?: Stripe.Emptyable<PaymentMethodOptions.Card>;
987
+
988
+ /**
989
+ * If paying by `konbini`, this sub-hash contains details about the Konbini payment method options to pass to the invoice's PaymentIntent.
990
+ */
991
+ konbini?: Stripe.Emptyable<PaymentMethodOptions.Konbini>;
969
992
  }
970
993
 
971
994
  namespace PaymentMethodOptions {
@@ -1017,6 +1040,8 @@ declare module 'stripe' {
1017
1040
  namespace Card {
1018
1041
  type RequestThreeDSecure = 'any' | 'automatic';
1019
1042
  }
1043
+
1044
+ interface Konbini {}
1020
1045
  }
1021
1046
 
1022
1047
  type PaymentMethodType =
@@ -1032,12 +1057,18 @@ declare module 'stripe' {
1032
1057
  | 'giropay'
1033
1058
  | 'grabpay'
1034
1059
  | 'ideal'
1060
+ | 'konbini'
1035
1061
  | 'sepa_credit_transfer'
1036
1062
  | 'sepa_debit'
1037
1063
  | 'sofort'
1038
1064
  | 'wechat_pay';
1039
1065
  }
1040
1066
 
1067
+ type PendingInvoiceItemsBehavior =
1068
+ | 'exclude'
1069
+ | 'include'
1070
+ | 'include_and_require';
1071
+
1041
1072
  interface TransferData {
1042
1073
  /**
1043
1074
  * The amount that will be transferred automatically when the invoice is paid. If no amount is set, the full amount is transferred.
@@ -1224,6 +1255,11 @@ declare module 'stripe' {
1224
1255
  * If paying by `card`, this sub-hash contains details about the Card payment method options to pass to the invoice's PaymentIntent.
1225
1256
  */
1226
1257
  card?: Stripe.Emptyable<PaymentMethodOptions.Card>;
1258
+
1259
+ /**
1260
+ * If paying by `konbini`, this sub-hash contains details about the Konbini payment method options to pass to the invoice's PaymentIntent.
1261
+ */
1262
+ konbini?: Stripe.Emptyable<PaymentMethodOptions.Konbini>;
1227
1263
  }
1228
1264
 
1229
1265
  namespace PaymentMethodOptions {
@@ -1275,6 +1311,8 @@ declare module 'stripe' {
1275
1311
  namespace Card {
1276
1312
  type RequestThreeDSecure = 'any' | 'automatic';
1277
1313
  }
1314
+
1315
+ interface Konbini {}
1278
1316
  }
1279
1317
 
1280
1318
  type PaymentMethodType =
@@ -1290,6 +1328,7 @@ declare module 'stripe' {
1290
1328
  | 'giropay'
1291
1329
  | 'grabpay'
1292
1330
  | 'ideal'
1331
+ | 'konbini'
1293
1332
  | 'sepa_credit_transfer'
1294
1333
  | 'sepa_debit'
1295
1334
  | 'sofort'