diff --git a/packages/paypal-payments-pro-integration/src/PayPalPaymentsProPaymentMethod.test.tsx b/packages/paypal-payments-pro-integration/src/PayPalPaymentsProPaymentMethod.test.tsx
new file mode 100644
index 0000000000..98479a6391
--- /dev/null
+++ b/packages/paypal-payments-pro-integration/src/PayPalPaymentsProPaymentMethod.test.tsx
@@ -0,0 +1,97 @@
+import {
+ type CheckoutSelectors,
+ type CheckoutService,
+ createCheckoutService,
+ createLanguageService,
+} from '@bigcommerce/checkout-sdk';
+import { screen } from '@testing-library/react';
+import React from 'react';
+
+import type {
+ PaymentFormService,
+ PaymentMethodProps,
+} from '@bigcommerce/checkout/payment-integration-api';
+import {
+ getCart,
+ getCustomer,
+ getPaymentFormServiceMock,
+ getPaymentMethod,
+ getStoreConfig,
+} from '@bigcommerce/checkout/test-mocks';
+import { render } from '@bigcommerce/checkout/test-utils';
+
+import PaypalPaymentsProPaymentMethod from './PayPalPaymentsProPaymentMethod';
+
+const hostedPaymentMethodText = 'Hosted Payment Component rendered successfully';
+const hostedCreditCardPaymentMethodText =
+ 'Hosted Credit Card Payment Component rendered successfully';
+
+// eslint-disable-next-line @typescript-eslint/no-unsafe-return
+jest.mock('@bigcommerce/checkout/hosted-payment-integration', () => ({
+ ...jest.requireActual('@bigcommerce/checkout/hosted-payment-integration'),
+ HostedPaymentComponent: () =>
{hostedPaymentMethodText}
,
+}));
+
+// eslint-disable-next-line @typescript-eslint/no-unsafe-return
+jest.mock('@bigcommerce/checkout/hosted-credit-card-integration', () => ({
+ ...jest.requireActual('@bigcommerce/checkout/hosted-credit-card-integration'),
+ HostedCreditCardComponent: () => {hostedCreditCardPaymentMethodText}
,
+}));
+
+describe('PaypalPaymentsProPaymentMethod', () => {
+ let checkoutService: CheckoutService;
+ let checkoutState: CheckoutSelectors;
+ let defaultProps: Omit;
+ let paymentForm: PaymentFormService;
+ let paymentMethod: PaymentMethodProps['method'];
+
+ beforeEach(() => {
+ checkoutService = createCheckoutService();
+ checkoutState = checkoutService.getState();
+ paymentForm = getPaymentFormServiceMock();
+ paymentMethod = {
+ ...getPaymentMethod(),
+ id: 'paypalpaymentsprous',
+ gateway: 'paypal',
+ };
+
+ jest.spyOn(checkoutState.data, 'getConfig').mockReturnValue(getStoreConfig());
+ jest.spyOn(checkoutState.data, 'getCart').mockReturnValue(getCart());
+ jest.spyOn(checkoutState.data, 'getCustomer').mockReturnValue(getCustomer());
+ jest.spyOn(checkoutService, 'deinitializePayment').mockResolvedValue(checkoutState);
+
+ defaultProps = {
+ checkoutService,
+ checkoutState,
+ paymentForm,
+ language: createLanguageService(),
+ onUnhandledError: jest.fn(),
+ };
+ });
+
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it('renders HostedPaymentMethod when PaypalPaymentsPro payment method has PAYMENT_TYPE_HOSTED type', () => {
+ const method = {
+ ...paymentMethod,
+ type: 'PAYMENT_TYPE_HOSTED',
+ };
+
+ render();
+
+ expect(screen.getByText(hostedPaymentMethodText)).toBeInTheDocument();
+ });
+
+ it('renders HostedCreditCardPaymentMethod when PaypalPaymentsPro payment method has PAYMENT_TYPE_HOSTED type', () => {
+ const method = {
+ ...paymentMethod,
+ type: 'PAYMENT_TYPE_API',
+ };
+
+ render();
+
+ expect(screen.getByText(hostedCreditCardPaymentMethodText)).toBeInTheDocument();
+ });
+});
diff --git a/packages/paypal-payments-pro-integration/src/PayPalPaymentsProPaymentMethod.tsx b/packages/paypal-payments-pro-integration/src/PayPalPaymentsProPaymentMethod.tsx
new file mode 100644
index 0000000000..9778256610
--- /dev/null
+++ b/packages/paypal-payments-pro-integration/src/PayPalPaymentsProPaymentMethod.tsx
@@ -0,0 +1,49 @@
+import React, { type FunctionComponent } from 'react';
+
+import { HostedCreditCardComponent } from '@bigcommerce/checkout/hosted-credit-card-integration';
+import { HostedPaymentComponent } from '@bigcommerce/checkout/hosted-payment-integration';
+import {
+ type PaymentMethodProps,
+ type PaymentMethodResolveId,
+ toResolvableComponent,
+} from '@bigcommerce/checkout/payment-integration-api';
+
+const PayPalPaymentsProPaymentMethod: FunctionComponent = ({
+ method,
+ checkoutService,
+ checkoutState,
+ paymentForm,
+ language,
+ onUnhandledError,
+}) => {
+ if (method.type === 'PAYMENT_TYPE_HOSTED') {
+ return (
+
+ );
+ }
+
+ return (
+
+ );
+};
+
+export default toResolvableComponent(
+ PayPalPaymentsProPaymentMethod,
+ [{ id: 'paypal' }],
+);
diff --git a/packages/paypal-payments-pro-integration/src/index.ts b/packages/paypal-payments-pro-integration/src/index.ts
index e69de29bb2..d542e94756 100644
--- a/packages/paypal-payments-pro-integration/src/index.ts
+++ b/packages/paypal-payments-pro-integration/src/index.ts
@@ -0,0 +1 @@
+export { default as PayPalPaymentsProPaymentMethod } from './PayPalPaymentsProPaymentMethod';