createPlatformPayPaymentMethod
no longer returns atoken
object. #1236- If your integration depends on Stripe's Tokens API, please use
createPlatformPayToken
, which accepts identical arguments.
- If your integration depends on Stripe's Tokens API, please use
- Fixed an issue with
createPlatformPayPaymentMethod
on iOS where a "Canceled" error could be returned in production. #1236 - Fixed an issue where the
PlatformPayButton
withtype={PlatformPay.ButtonType.GooglePayMark}
would be unclickable. #1236 - Fixed an issue on Android where
CardField
would render without the necessary padding. 48debb2 - Fixed an issue on iOS where providing a
null
value to certain method parameters would result in a crash. #1252
- Fixed the
ShippingMethod
type to contain theisPending
field instead of atype
field (which previously was never correct). This reflects the inputs accepted. #1227 - Fixed the
ShippingMethod
type to contain thestartDate
andendDate
keys, if applicable. #1227 - Fixed instances of the "duplicate registered views" error. #1233
- Fixed extra margin that was being added to
<CardForm />
on Android. #1234
- Added the
hasPairedAppleWatch
option tocanAddCardToWallet
. #1219 - Added new functions and a new component to streamline integrating with Apple and Google Pay and add more feature support. See the Migrating to Platform Pay guide for more details. The old Apple and Google Pay APIs are marked as
deprecated
and will be removed in a future release, but are still supported in this version.
- Fixed an issue where builds would error with the message
'const' enums are not supported.
see commit - Fixed an issue where the
canAddCardToWallet
method would sometimes wrongly returnfalse
with adetails.status
ofMISSING_CONFIGURATION
in production builds. #1215 - Fixed an issue on Android where, for certain countries, the postal code would not be enabled but would still be required. #1213
- Fixed an issue on iOS where
canAddCardToWallet
would returnfalse
if the card had already been provisioned on a paired device like an Apple Watch, but had not yet been provisioned on the current device, and would also returnfalse
if the card had been provisioned on the current device, but not on a paired Apple Watch. #1219
- Added the
<AddressSheet />
component, which enables you to collect local and international shipping or billing addresses from your customers with address autocomplete. #1169 - Added the
defaultShippingDetails
field to theparams
argument ininitPaymentSheet(params)
. This will allow you to collect shipping details (either in your own UI or using the new<AddressSheet />
component) for payments in the Payment Sheet. #1169
- Fixed a build error on Android when using Kotlin version 1.7.10. #1195
- This library now supports iOS 13 and up, due to
stripe-ios
increasing the deployment target. If you would like to build for iOS 12, please continue to use@stripe/[email protected]
. #1190
- Added Link support in Payment Sheet. #1176
- Added the
resetPaymentSheetCustomer
method to clear persisted authentication state in the PaymentSheet. #1176 - Added
preferredNetwork
andavailableNetworks
fields to theCardResult
payment method. #1176 - Added support for custom fonts to
CardForm
andCardView
on Android. #1150 - Added support for customizing the call to action button label in Payment Sheet by providing the
primaryButtonLabel
property toinitPaymentSheet()
. #1190
- Fixed an issue on iOS where
confirmSetupIntent
would throw an error if theCard
payment method was provided with thepaymentMethodId
parameter. #1151 - Upgraded
stripe-android
to 20.15.+. #1176 - Upgraded
stripe-ios
to 23.1.+. #1190 - Fixed
FinancialConnections.Subcategory
andFinancialConnections.Permission
types to be camel-case instead of snake case. #1176 - Fixed an issue with Financial Connections on iOS where the app wouldn't properly redirect back after authentication. #1178
- Fixed
borderWidth
andborderRadius
for<CardField />
andCardForm />
was inconsistent across iOS and Android. #1182
- To comply with Google's new branding guidelines for the Google Pay button, the
<GooglePayButton />
component'stype
prop now only acceptsstandard
orpay
(pay_shadow
,pay_dark
,standard_shadow
, andstandard_dark
were all removed). It defaults tostandard
. #1135 - Your
compileSdkVersion
(inandroid/build.gradle
) now must be at least 33. Changing yourcompileSdkVersion
does not change runtime behavior.
- Add
returnURL
as an optional parameter tohandleNextAction
. Use this so the Stripe SDK can redirect back to your app after authentication. #1104
- Fixed an issue where the error resolved on iOS wasn't the root error. #1105
- Fix Expo Config Plugin support on SDK 46. #1111
- Updated
stripe-ios
from 22.7.+ to 22.8.+. Updatedstripe-android
from 20.9.+ to 20.12.+. This updates the Google Pay button to match the new brand guidelines. #1135
- Fixed an issue where some promises on Android would never resolve when using React Native 0.65.x or under. #1089.
- Your
compileSdkVersion
(inandroid/build.gradle
) now must be at least32
. Changing yourcompileSdkVersion
does not change runtime behavior.
confirmPayment
can now be called with just a client secret (e.g.await confirmPayment("payment-intent-id")
), in other words the payment method can be excluded. If the payment method is excluded, it is assumed by the SDK that you have attached the payment method on the server-side during payment intent creation. #1084- Payment Sheet now supports Link on iOS. #1086.
- Fixed a bug on Android where
collectBankAccountForPayment
,collectBankAccountForSetup
,collectBankAccountToken
, andcollectFinancialConnectionsAccounts
wouldn't work with Stripe Connect accounts. #1086. - Upgraded
stripe-ios
to 22.7.+ andstripe-android
to 20.9.+.
- Added the
collectBankAccountToken
&collectFinancialConnectionsAccounts
functions.
- Fixed an issue where
collectBankAccountForPayment
andcollectBankAccountForSetup
would fail on Android when using React Native 0.65.x or under. #1059 - Fixed an issue where Android apps could crash with the error
IllegalStateException: Cannot remove Fragment attached to a different FragmentManager
. #1054 - Bumped Gradle from 4.2.2 to 7.1.1. #1058
- The
<GooglePayButton />
component no longer overrides thetype
to use the dark mode version when the device is in Dark Mode. If you set thetype
value, it will always be respected. If you don't set thetype
value, it will match the system's theme (standard_shadow
when in Light Mode, andstandard_dark
when in Dark Mode). #1051
- Added support for
pay_dark
andstandard_dark
to the<GooglePayButton />
component'stype
prop. This allows you to display the dark Google Pay button. #1051 - Added support for
borderColor
,borderRadius
, andcursorColor
toCardForm
'scardStyle
prop on iOS (already exists on Android). #1048
- Reduced the size of the
@stripe/stripe-react-native
by preventing unnecessary files from being published. #1043
- #1020 Changed some of fields for the
params
object that is supplied toinitPaymentSheet(params)
:- Changed the
applePay
field. Previously this field accepted a boolean, now it accepts an object of typeApplePayParams
, which includes themerchantCountryCode
field, and a newpaymentSummaryItems
field (see "New features" below). - Changed the
googlePay
field. Previously this field accepted a boolean, now it accepts an object of typeGooglePayParams
, which includes themerchantCountryCode
,currencyCode
, andtestEnv
fields. - Since the
merchantCountryCode
field now lives under theapplePay
andgooglePay
objects, it has been removed from the baseparams
object. - Similarly, since the
currencyCode
andtestEnv
fields now live under thegooglePay
object, they have been removed from the baseparams
object .
- Changed the
- #1020 In
ApplePay.CartSummaryItem
:- Renamed
type
toisPending
- (if you hadtype: 'pending'
, replace it withisPending: true
. iftype: 'final'
, either remove it or setisPending: false
).- The same change was made to
ApplePay.ShippingMethod
: renamedtype
toisPending
.
- The same change was made to
- Added a new
paymentType
field. This field is required, and in all pre-existing cases where you created aCartSummaryItem
, should be set topaymentType: 'Immediate'
(support for typesDeferred
andRecurring
wasn't available until this release).
- Renamed
- Added support for iOS 15
paymentSummaryItems
:PKDeferredPaymentSummaryItem
andPKRecurringPaymentSummaryItem
. - You can now specify Apple Pay line items to be displayed when paying with Apple Pay in PaymentSheet by providing
applePay.paymentSummaryItems
to theinitPaymentSheet
method. #1020 - Added support for Affirm (previously, Affirm was only available in the Payment Sheet). 1036
- Fixed behavior of
CardField
andCardForm
on Android to match that on iOS; postal code input no longer accepts characters that are never present in postal codes (anything besides 0-9, a-z, A-Z, hyphens, and whitespace). #1027. - Fixed an issue on older version of React Native where calling
collectBankAccountForSetup
orcollectBankAccountForPayment
and getting aCanceled
result could cause a crash. #1037 - Fixed an issue where some Android builds would fail on the
lintVitalRelease
step. #1038
- Added the
canAddCardToWallet
method. #986.
- Fix build errors on Xcode 14 beta 1 by upgrading
stripe-ios
to~>22.5.1
. #1011 - Fixed an issue on Android where the
brand
field inCardField
'sonCardChange
callback wouldn't be set unless the card details were fully complete. #1012 - Fixed an issue where Payment Sheet would cause crashes on Android if
merchantDisplayName
wasn't provided. #1015 - Fixed a bug on Android where a crash could occur if the PaymentSheet was canceled and opened again. #1014
- Fixed an instance on iOS where
CardField
's expiry date would remain marked as valid, even when it's invalid. #1018
- Never show postal code input in
CardField
ifpostalCodeEnabled=false
(regardless ofcountryCode
). #996
- Added a
defaultValues
prop to theCardForm
component. Currently only acceptscountryCode
, and is Android-only. #974 - Added the
countryCode
prop to theCardField
component. #989 - Added option to create a PII token (represents the details of personally identifiable information) to the
createToken
method. #976
- Resolve with an Error (of type
Canceled
) if no payment option is selected in the Payment Sheet custom flow (i.e., thex
button is clicked to close the Payment Sheet). #975 - Fixed an issue on Android where the
complete
field in theonCardChange
callback would incorrectly be set totrue
even if the postal code wasn't filled out. #989 - Make
SetupIntent.lastSetupError
andPaymentIntent.lastPaymentError
object shape consistent on iOS and Android.#990
- Renamed
appearance.shapes.shadow.borderRadius
toappearance.shapes.shadow.blurRadius
, andappearance.primaryButton.shapes.shadow.borderRadius
toappearance.primaryButton.shapes.shadow.blurRadius
. #962
- Fixed cases where Android apps would crash with the error:
Unable to instantiate fragment com.reactnativestripesdk.PaymentLauncherFragment
. #965 - Fixed
appearance.shapes.shadow.offset
andappearance.primaryButton.shapes.shadow.offset
not applying the y-coordinate in the correct direction. #962 - Fixed a bug where
handleNextAction
wouldn't resolve on Android when using 3DS2. #966 - Fixed a bug where the wrong CVC icon was show in the
CardForm
component on Android. #966 - The card brand tint color is now correctly set in the
CardField
component on Android via thecardStyle.textColor
prop. #851
- Removed support for
primaryButtonColor
field oninitPaymentSheet()
. Please use the newappearance.primaryButton.colors.background
field instead. #940
- You can now customize the appearance of your Payment Sheet via the
appearance
field oninitPaymentSheet()
. #940 - Added Affirm and AU BECS Direct Debit support to Payment Sheet. #940
- Improved error messages on Android for failed
confirmPayment
andconfirmSetupIntent
calls, and any Google Pay related methods. #957 - Made Android card validation state consistent with iOS in the
CardField
onCardChange
callback. #958
- Card scanning is available in payment sheet on Android. #944
- To enable this, you will need to add
implementation 'com.stripe:stripecardscan:20.3.+'
to yourdependencies {}
block inandroid/app/build.gradle
.
- To enable this, you will need to add
us_bank_account
payment method is now available in the payment sheet on Android. #944
- #913 BREAKING CHANGE: Changed props for the
<AddToWalletButton />
component. Instead of passingcardHolderName
,cardLastFour
,cardDescription
, andcardBrand
directly as props, you will instead pass acardDetails
prop, which is an object containing the following fields:primaryAccountIdentifier
: Thewallet.primary_account_identifier
value from the issued card.name
: The card holder name (previouslycardHolderName
).description
: A user-facing description of the card (previouslycardDescription
).lastFour
: Last 4 digits of the card, optional (previouslycardLastFour
).brand
: The card brand, optional (previouslycardBrand
).
- #925 Feat:
us_bank_account
payment method is now available in the payment sheet on iOS. (& Updatedstripe-ios
from 22.2.0 to 22.3.0) - #929 Feat: added PayPal support (not currently supported for SetupIntents)
- #928 feat: expose 'cvc' when
dangerouslyGetCardDetails
is set to true - #931 feat: add token & paymentMethodId handling to confirmPayment for Cards
- #932 fix: manually forward activity results to paymentLauncherFragment
- #933 fix: address "Can not perform this action after onSaveInstanceState" crashes on Android
- #914 fix: add
fingerprint
to Card result object on Android (already present on iOS) - #912 fix: allow for providing zip code straight from
CardField
component on Android
- Breaking: This version requires you use
[email protected]
or above - #902 fix: create custom babel plugin for package.json imports in src/
- #889 Feat: add support for push provisioning (adding cards to native wallets)
- #890 BREAKING CHANGE: Changed parameters for:
createPaymentMethod
,confirmPayment
,confirmSetupIntent
,collectBankAccountForPayment
, andcollectBankAccountForSetup
. Please read this migration guide for details.- Renamed
type
field topaymentMethodType
onPaymentMethod.Result
,PaymentIntent.Result
, andSetupIntent.Result
(result ofcreatePaymentMethod
,retrieveSetupIntent
,confirmSetupIntent
,confirmPayment
,collectBankAccountForPayment
,collectBankAccountForSetup
,verifyMicrodepositsForPayment
, andverifyMicrodepositsForSetup
).
- Renamed
- #849 BREAKING CHANGE: Renamed
placeholder
prop on<CardField />
and<CardForm />
toplaceholders
. - #849 Feat: Added customized styling options to
<CardForm />
on Android.
- #894 Fix:
<CardField />
onBlur
callback will now be called appropriately on Android - #846 Fix: Avoid crashes when
currentActivity
is null - #879 Feat: Add support for ACHv2 payments on Android (already existed on iOS).
- #879 Chore: Upgraded
stripe-android
from v19.3.+ to v20.1.+ - #837 BREAKING CHANGE: Mostly fixes and changes to types, but some method's now accept slightly different parameters:
- Removed
setUrlSchemeOnAndroid
in favor ofsetReturnUrlSchemeOnAndroid
.setReturnUrlSchemeOnAndroid
functions exactly the same, this is just a rename. - Removed
handleCardAction
in favor ofhandleNextAction
.handleNextAction
functions exactly the same, this is just a rename. createPaymentMethod
'sbillingDetails
andshippingDetails
parameters no longer accept theaddressPostalCode
,addressCity
,addressCountry
,addressLine1
,addressLine2
, oraddressState
keys. Instead, they accept anaddress
object containing:city
,country
,line1
,line2
,postalCode
,state
.confirmPayment
'sbillingDetails
andshippingDetails
parameters no longer accept theaddressPostalCode
,addressCity
,addressCountry
,addressLine1
,addressLine2
, oraddressState
keys. Instead, they accept anaddress
object containing:city
,country
,line1
,line2
,postalCode
,state
.BillingDetails
no longer includesaddressPostalCode
,addressCity
,addressCountry
,addressLine1
,addressLine2
, oraddressState
keys. Instead, it includes anaddress
object containing:city
,country
,line1
,line2
,postalCode
,state
keys.ShippingDetails
no longer includesaddressPostalCode
,addressCity
,addressCountry
,addressLine1
,addressLine2
, oraddressState
keys. Instead, it includes anaddress
object containing:city
,country
,line1
,line2
,postalCode
,state
keys.PaymentIntents
was renamedPaymentIntent
. (If you were usingPaymentIntents.Status
, now you must change it toPaymentIntent.Status
)SetupIntents
was renamedSetupIntent
. (If you were usingSetupIntents.Status
, now you must change it toSetupIntent.Status
)- (Typescript)
Card.Token
is nowToken.Result
- (Typescript)
Card.Brand
is nowToken.CardBrand
- (Typescript)
Card.TokenType
is nowToken.Type
- (Typescript)
Card.BankAccount
is nowToken.BankAccount
- (Typescript)
Card.Params
is nowToken.Params
- (Typescript)
CardFormView.Names
is nowCardFormView.FieldName
- (Typescript)
CardFieldInput.Names
is nowCardFieldInput.FieldName
- (Typescript)
ApplePayButtonComponent.Styles
is nowApplePayButtonComponent.Style
- (Typescript)
ApplePayButtonComponent.Types
is nowApplePayButtonComponent.Type
- (Typescript)
PaymentMethod
is nowPaymentMethod.Result
- (Typescript)
PaymentIntent
is nowPaymentIntent.Result
- (Typescript)
SetupIntent
is nowSetupIntent.Result
- (Typescript) Exports that were under the
Card
namespace are now underToken
- (Typescript)
CreateTokenParams
is nowToken.CreateParams
- (Typescript)
BankAcccountHolderType
is nowToken.BankAcccountHolderType
- (Typescript)
ThreeDSecureConfigurationParams
is nowThreeDSecure.ConfigurationParams
- (Typescript)
PaymentMethodCreateParams.Params
is nowPaymentMethod.CreateParams
- (Typescript)
PaymentMethodCreateParams.Options
is nowPaymentMethod.ConfirmOptions
- (Typescript)
CreateTokenParams
is nowToken.CreateParams
- (Typescript)
ConfirmSetupIntent.Params
is nowSetupIntent.ConfirmParams
- (Typescript)
ConfirmSetupIntent.Options
is nowSetupIntent.ConfirmOptions
- (Typescript)
confirmPayment
now accepts thePaymentIntent.ConfirmParams
(same type, just renamed). - (Typescript)
BillingDetails
type is now exported directly, instead of under thePaymentMethodCreateParams
object. - (Typescript)
presentGooglePay
now acceptsGooglePay.PresentParams
- (Typescript)
GooglePay.PresentGooglePayParams
is nowGooglePay.PresentParams
- (Typescript)
GooglePay.PresentGooglePayType
is nowGooglePay.PresentType
- (Typescript)
GooglePay.IsGooglePaySupportedParams
is nowGooglePay.IsSupportedParams
- (Typescript) Removed
GooglePay.SetupIntentParams
- Removed
- #861 BREAKING: This library now supports iOS 12 and up, due to
stripe-ios
increasing the deployment target. If you would like to build for iOS 11, please continue to use@stripe/[email protected]
.- To upgrade your iOS deployment target to 12.0, you can either do so in Xcode under your
Build Settings
, or by modifyingIPHONEOS_DEPLOYMENT_TARGET
in yourproject.pbxproj
directly. You will also need to update your Podfile to target:ios, '12.0'
.
- To upgrade your iOS deployment target to 12.0, you can either do so in Xcode under your
- #861 Feat: Add support for ACHv2 payments on iOS only.
- #861 Chore: Upgrade
stripe-ios
to 22.0.0.
- #863 Feat: add card ID and bankAccount ID to token response
- #862 Feat: Add support for setting a card's
currency
when creating a Token - #854 Chore: Upgrade
stripe-ios
to 21.13.0. Upgradestripe-android
to 19.3.0. - #845 Feat: Added support for
placeholderColor
,textErrorColor
,borderColor
,borderRadius
, andborderWidth
forAuBECSDebitForm
on iOS
- #821 Feat: Add support for Klarna
- #630 Fix: card field focus jumps back to the card number field on Android
- #824 Fix: Google Pay error code when canceled should be 'Canceled'
- #832
- Deprecated
setUrlSchemeOnAndroid
in favor ofsetReturnUrlSchemeOnAndroid
.setReturnUrlSchemeOnAndroid
functions exactly the same, this is just a rename.setUrlSchemeOnAndroid
will be removed in a future release. - Deprecated
handleCardAction
in favor ofhandleNextAction
.handleNextAction
functions exactly the same, this is just a rename.handleCardAction
will be removed in a future release. - fix: Set
returnUrl
on Android inconfirmPayment
andconfirmSetupIntent
. - fix: Don't request focus on initialization of
CardForm
by default.
- Deprecated
- #810 Feat: add
isGooglePaySupported
method - #809 Fix: do not crash if no routing number provided when creating a bank account token on Android
- #814 Fix: cleanup
paymentSheetFlowController
ref before initializing new payment sheet - #806 Fix: properly assign
cursorColor
style on AndroidCardField
(requires Android 10 or higher). - #817 Chore: Upgrade
stripe-ios
to v21.12.0 andstripe-android
to v19.2.+
- #788 fix: assign
paymentSheetFragment
directly, instead of through intents which would sometimes result in aNullPointerException
. - #591 feat: add option to create a token directly from a bank account.
- #801 Upgraded
stripe-ios
to v21.11.1. Upgradedstripe-android
to v19.1.+. Added Android 12 support to example. - #774 feat: Add
currencyCode
support toinitPaymentSheet
for Google Pay & Setup Intents - #726 Update build.gradle to be more flexible in version of
stripe-android
(#726) - #675 Bug fixes for server example (#675)
- #629 feat: Add validation state to CardField (#423) (#629)
- #702 docs: Update GooglePay.md (#702)
- #690 docs: Correct default for existingPaymentMethodRequired (#690)
- #660 docs: Fixed readme js object typo (#660)
- #657 chore: updated the dependencies for the example app (#657)
- #658 fix: TS issue with 0.2.3 StripeProvider cannot be used as a JSX component (#658)
- #635 fix: billing address postal code (#635)
- #565 chore: Add jest mock file (#565)
- #587 chore: Update Podfile.lock stripe-react-native version (#587)
- #568 fix: check support for specific TextInputState methods (#568)
- #631 chore: Update tips migration guide (#631)
- #601 feat: Add button color, return URL, allowsDelayedPaymentMethods, and billing details to PaymentSheet (#601)
- #548 chore: split apple pay address by new line (#531)
- #546 fix: resolve initGooglePay with error if it's not available (#533)
- #525 feat: add
openApplePaySetup
method (#400) - #521 fix: support cardFormView for createToken method
- #514 feat: simpify
presentPaymentSheet
- #513 fix: set
null
as initial value forisApplePaySupported
(#496) - #506 feat: enhance payment sheet dx (#505)
- #415 feat: add multiline card form element (#83)
- #441 feat(android): add standalone Google Pay (#9)
- #422 feat: add WeChat Pay (#52)
- #453 chore: add JCB support for Apple Pay (#43)
- #451 fix: send postal code with card details (#420)
- #436 fix: cardfield crashes app (#391)
- #419 fix(android): error handling for createToken (#405)
- #394 [BREAKING CHANGE] fix: createToken response discrepancy (#344)
- #354 [BREAKING CHANGE] chore: rename top-level export
confirmPaymentMethod
toconfirmPayment
(#318) - #416 fix(android): googlePay setting on initPaymentSheet
- #392 fix:
created
timestamp discrepancy (#368) - #395 fix: resolve
initPaymentSheet
only when ready (#315) - #390 fix: add missing setupFutureUsage param (#367)
- #389 fix: set url scheme when using paymentMethodId (#378)
- #337 feat: expose CardField methods (focus, blur, clear)
- #366 fix: open payment sheet from modal (#315; #290)
- #309 feat: add
retrieveSetupIntent
method (#294) - #306 feat: add
dangerouslyGetFullCardDetails
prop toCardField
component (#280) - #298 feat: support SetupIntents in payment sheet (#293)
- #296 chore: support
testID
prop in all UI components (#268) - #295 feat(ios): return the
paymentMethod
object whenpresentApplePay
resolves (#271) - #273 feat: enrich the response error objects with additional information (#206)
- #276 fix(android): payment sheet not opening when
stripeAccountId
set (#267) - #266 feat(ios): add
borderRadius
prop to theApplePayButton
component (#258) - #260 feat: add the
StripeContainer
component that allows for dismissal of the keyboard when wrapped around theCardField
compnent (#222) - #255 fix(android): crash on
onActivityResult
when Stripe isn't initalized
- #247 feat: add
fontFamily
prop toCardField
component (#103) - #245 fix: clear card params when
CardField
input is invalidated (#237) - #228 feat: add ability to show error in Apple Pay sheet within
onShippingContactSelected
handler (#148) - #221 feat: add legacy
createToken
method for older integrations (#187) - #234 fix: add missing 3D Secure button props (#201)
- #226 feat: add
autofocus
prop toCardField
component (#199)
- #224 chore: upgrade to
stripe-android
version16.8.2
(#212) - #213 fix: expose config-plugin and add blank swift file
- #217 feat: E2E testing CI configuration
- #216 fix: unify cancel handling (#205)
- #215 fix: createPaymentMethod promise reject (#209)
- #208 fix: add
.npmignore
disallow list (#204) - #207 fix: handle different pjson output (#200)
- #197 fix: update library name in expo plugin
- Initial release
Special thanks to: Arek Kubaczkowski, Charlie Cruzan, and Jakub KΕobus.