@monei-js/vue-components

MONEI Vue 3 components for accepting payments with CardInput, Bizum, PayPal, and PaymentRequest.
1,693
Install
npm install @monei-js/vue-components
Latest Version:2.2.1
Vue:3
License:MIT
Last Updated:Sep 29, 2026
Links: npm
Maintainer: alexandresaiz

@monei-js/vue-components

Vue 3 components for MONEI payments. Typed props via defineComponent, template ref submit(), and idiomatic Vue API.

Install

npm install @monei-js/vue-components @monei-js/components

Components

Component Description
CardInput Secure card input (iframe) with submit()
Bizum Bizum button + phone verification modal
PayPal PayPal checkout button
PaymentRequest Apple Pay / browser Payment Request button

Quick Start

<script setup lang="ts">
import {ref} from 'vue';
import {CardInput, confirmPayment} from '@monei-js/vue-components';

const cardRef = ref();
const paymentId = 'pay_...';

async function handleSubmit() {
  const {token, error} = await cardRef.value.submit();
  if (error) return console.error(error);
  await confirmPayment({paymentId, paymentToken: token});
}
</script>

<template>
  <div>
    <CardInput ref="cardRef" :paymentId="paymentId" />
    <button @click="handleSubmit">Pay</button>
  </div>
</template>

API Re-exports

confirmPayment and api are re-exported from this package for convenience:

import {CardInput, Bizum, confirmPayment, api} from '@monei-js/vue-components';

Migrating from .driver('vue3')

Import changes

Before:

import {CardInput, Bizum, PayPal, PaymentRequest} from '@monei-js/components';

const MoneiCardInput = CardInput.driver('vue3');
const MoneiBizum = Bizum.driver('vue3');
const MoneiPayPal = PayPal.driver('vue3');
const MoneiPaymentRequest = PaymentRequest.driver('vue3');

After:

import {CardInput, Bizum, PayPal, PaymentRequest} from '@monei-js/vue-components';

submit() migration

Before (standalone createToken):

<script setup>
import {CardInput, createToken} from '@monei-js/components';

const MoneiCardInput = CardInput.driver('vue3');
const instance = CardInput({paymentId: '...'});
instance.render('#container');
const {token} = await createToken(instance);
</script>

After (typed submit() via template ref):

<template>
  <CardInput ref="cardInput" :payment-id="paymentId" :on-change="handleChange" />
</template>

<script setup lang="ts">
import {ref} from 'vue';
import {CardInput} from '@monei-js/vue-components';

const cardInput = ref<InstanceType<typeof CardInput>>();
const {token} = await cardInput.value!.submit({cardholderName: 'John'});
</script>

Full example

<template>
  <div>
    <CardInput ref="cardInput" :payment-id="paymentId" :on-change="handleChange" />
    <button @click="handleSubmit">Pay</button>
    <p v-if="error">{{ error }}</p>
  </div>
</template>

<script setup lang="ts">
import {ref} from 'vue';
import {CardInput, confirmPayment} from '@monei-js/vue-components';

const props = defineProps<{paymentId: string}>();
const cardInput = ref<InstanceType<typeof CardInput>>();
const error = ref('');

function handleChange({isValid}: {isValid: boolean}) {
  error.value = '';
}

async function handleSubmit() {
  const result = await cardInput.value!.submit();
  if (result.error) {
    error.value = result.error;
    return;
  }
  await confirmPayment({paymentId: props.paymentId, paymentToken: result.token});
}
</script>

Documentation

Full API reference: docs.monei.com/monei-js/reference

License

MIT

Related Packages

@mrjeffapp/vue-braintree-paypal-button

Vue component to integrate PayPal payments through Braintree using Vault flow

4,298 4
vue3-paystack

Paystack Plugin for Vue 3

11,421 20
vue-paystack

Vue Paystack Component for Vue 2.x.

16,144 120
simple-donation

A customizable PayPal donation module for Nuxt 3 and Nuxt 4 projects

595 0
vesan

UI Framework with Vue & Animadio

6,285 1

Version History

Version Released Vue License
2.2.1 >=3.3 MIT
2.2.0 >=3.3 MIT
2.1.0 >=3.3 MIT
2.0.7 >=3.3 MIT
2.0.6 >=3.3 MIT