{"_id":"@airvend/vaas-merchant","name":"@airvend/vaas-merchant","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@airvend/vaas-merchant","version":"1.0.0","description":"Official Node.js SDK for Airvend VAaS Merchant - Virtual account management, settlements, and payment processing for Nigerian banks","main":"src/index.js","types":"types/index.d.ts","exports":{".":"./src/index.js"},"scripts":{"test":"echo \"No tests yet\""},"keywords":["airvend","payant","payment","virtual-account","settlement","nigeria","providus","gtbank","globus","fcmb","stanbic","banking","fintech","sdk"],"author":{"name":"Success Drame","url":"Airvend Payment Services Limited"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/dijeomah/airvend-vaas-merchant-sdk.git"},"homepage":"https://github.com/dijeomah/airvend-vaas-merchant-sdkreadme","bugs":{"url":"https://github.com/dijeomah/airvend-vaas-merchant-sdk/issues"},"engines":{"node":">=12.0.0"},"dependencies":{"axios":"^1.4.0"},"_id":"@airvend/vaas-merchant@1.0.0","gitHead":"8100c1255caf3fee3f0179d461d5c1de91cd36e9","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-yKtfFnhE59iQkN07NDf+tIv7wPk0erISb5EqFCECARk7EyHZK3e4H6CZgVoImR6/7uhsPAWWbQ4WaMY50JG0yg==","shasum":"702412466f8c719eb5acffb8d83c192e6a70e99b","tarball":"https://registry.npmjs.org/@airvend/vaas-merchant/-/vaas-merchant-1.0.0.tgz","fileCount":13,"unpackedSize":45341,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD+FasQ9ydK34pVLWLAXm0bfQ46/JaEk0rBNuwMQ30uuwIhAJo46Qv3gi/TrrNkRxj625nIxAP3nRkPfX2PzP0bbowX"}]},"_npmUser":{"name":"dijeomah","email":"d.ije95@gmail.com"},"directories":{},"maintainers":[{"name":"dijeomah","email":"d.ije95@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vaas-merchant_1.0.0_1770282200342_0.2656405670397721"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-05T09:03:20.246Z","1.0.0":"2026-02-05T09:03:20.489Z","modified":"2026-02-05T09:03:20.752Z"},"maintainers":[{"name":"dijeomah","email":"d.ije95@gmail.com"}],"description":"Official Node.js SDK for Airvend VAaS Merchant - Virtual account management, settlements, and payment processing for Nigerian banks","homepage":"https://github.com/dijeomah/airvend-vaas-merchant-sdkreadme","keywords":["airvend","payant","payment","virtual-account","settlement","nigeria","providus","gtbank","globus","fcmb","stanbic","banking","fintech","sdk"],"repository":{"type":"git","url":"git+https://github.com/dijeomah/airvend-vaas-merchant-sdk.git"},"author":{"name":"Success Drame","url":"Airvend Payment Services Limited"},"bugs":{"url":"https://github.com/dijeomah/airvend-vaas-merchant-sdk/issues"},"license":"MIT","readme":"# @airvend/vaas-merchant\n\nOfficial Node.js SDK for the Airvend MerchantAPI. Easily integrate virtual accounts, settlements, transactions, and payment notifications into your application.\n\n## Installation\n\n```bash\nnpm install @airvend/vaas-merchant\n```\n\n## Quick Start\n\n```javascript\nconst Payant = require('@airvend/vaas-merchant');\n\nconst payant = new Payant({\n  apiKey: 'your-api-key'\n});\n\n// Create a virtual account\nconst account = await payant.virtualAccounts.create({\n  accountName: 'John Doe',\n  bvn: '12345678901',\n  phoneNumber: '08012345678'\n});\n\nconsole.log(account.data.accountNumber);\n```\n\n## Configuration\n\n```javascript\nconst payant = new Payant({\n  // Required: Your API key (JWT token)\n  apiKey: 'your-api-key',\n\n  // Optional: Secret key for webhook signature verification\n  secretKey: 'your-webhook-secret',\n\n  // Optional: Custom API base URL (defaults to production)\n  baseUrl: 'https://pwt.airvend.ng/api/v1',\n\n  // Optional: Request timeout in milliseconds (default: 30000)\n  timeout: 30000\n});\n```\n\n## Resources\n\n### Virtual Accounts\n\n```javascript\n// Create a virtual account\nconst account = await payant.virtualAccounts.create({\n  accountName: 'John Doe',\n  bvn: '12345678901',\n  phoneNumber: '08012345678',\n  email: 'john@example.com', // optional\n  provider: 'providus'       // optional\n});\n\n// Get account by account number\nconst account = await payant.virtualAccounts.get('1234567890');\n\n// Get account by phone number\nconst account = await payant.virtualAccounts.getByPhone('08012345678');\n\n// List all accounts with pagination\nconst accounts = await payant.virtualAccounts.list({\n  page: 1,\n  perpage: 20,\n  search: 'John'\n});\n\n// Disable an account\nawait payant.virtualAccounts.disable({\n  accountNumber: '1234567890',\n  provider: 'providus'\n});\n\n// Register a virtual account\nawait payant.virtualAccounts.register('providus', {\n  accountName: 'John Doe',\n  accountNumber: '1234567890',\n  tid: 'terminal-id',\n  settlementAccount: '0987654321',\n  phoneNumber: '08012345678'\n});\n\n// Verify a bank account\nconst verification = await payant.virtualAccounts.verifyBankAccount('058', {\n  accountNumber: '1234567890'\n});\n```\n\n### Transactions\n\n```javascript\n// List all transactions\nconst transactions = await payant.transactions.list({\n  page: 1,\n  perpage: 20\n});\n\n// Get transactions by account number\nconst transactions = await payant.transactions.getByAccount('1234567890', {\n  reference: 'optional-reference'\n});\n\n// Get POS transactions\nconst posTransactions = await payant.transactions.getByPOS('terminal-id');\n\n// Get POS account details\nconst posAccount = await payant.transactions.getPOSAccount('terminal-id');\n```\n\n### Settlements\n\n```javascript\n// List settlements\nconst settlements = await payant.settlements.list({\n  channel: '1',\n  page: 1,\n  perpage: 20,\n  startDate: '2024-01-01',\n  endDate: '2024-12-31'\n});\n\n// Re-push failed settlements\nawait payant.settlements.repush({\n  startDate: '2024-01-01',\n  endDate: '2024-01-31',\n  transactionRefs: ['ref1', 'ref2']\n});\n\n// Get settlement accounts\nconst accounts = await payant.settlements.getAccounts({\n  channel: '1',\n  provider: 'providus'\n});\n\n// Toggle settlement mode\nawait payant.settlements.toggleMode({\n  channelId: '1',\n  providerId: 'providus',\n  settlementType: 'auto', // 'auto' or 'manual'\n  vaasActType: 'direct'   // 'direct' or 'globus_tp'\n});\n\n// Update settlement status\nawait payant.settlements.updateStatus('transaction-ref', {\n  status: 'success'\n});\n```\n\n### Reports\n\n```javascript\n// Get transaction report\nconst report = await payant.reports.getTransactions('channel-id', {\n  startDate: '2024-01-01',\n  endDate: '2024-12-31'\n});\n\n// Get provider session report\nconst sessions = await payant.reports.getProviderSessions('providus', {\n  startDate: '2024-01-01',\n  endDate: '2024-12-31'\n});\n```\n\n### Authentication\n\n```javascript\n// Login\nconst auth = await payant.auth.login({\n  email: 'user@example.com',\n  password: 'password123'\n});\n\n// Update client with new token\npayant.setApiKey(auth.data.token);\n\n// Register (requires invitation token)\nawait payant.auth.register({\n  token: 'invitation-token',\n  email: 'newuser@example.com',\n  password: 'securepassword',\n  name: 'John Doe'\n});\n\n// Forgot password\nawait payant.auth.forgotPassword({\n  email: 'user@example.com'\n});\n\n// Reset password\nawait payant.auth.resetPassword('reset-token', {\n  password: 'newSecurePassword'\n});\n```\n\n### Webhooks\n\nHandle incoming webhooks from Payant:\n\n```javascript\nconst express = require('express');\nconst Payant = require('@airvend/vaas-merchant');\n\nconst app = express();\nconst payant = new Payant({\n  apiKey: 'your-api-key',\n  secretKey: 'your-webhook-secret'\n});\n\napp.post('/webhook', express.json(), (req, res) => {\n  const signature = req.headers['x-payant-signature'];\n\n  // Verify signature\n  if (!payant.webhooks.verifySignature(req.body, signature)) {\n    return res.status(401).json({ error: 'Invalid signature' });\n  }\n\n  // Parse the event\n  const event = payant.webhooks.parseEvent(req.body);\n\n  // Handle different event types\n  switch (event.type) {\n    case 'transaction.success':\n      console.log('Payment received:', event.data);\n      break;\n    case 'transaction.failed':\n      console.log('Payment failed:', event.data);\n      break;\n  }\n\n  // Send acknowledgment\n  res.json(payant.webhooks.acknowledge());\n});\n\napp.listen(3000);\n```\n\n### Health Check\n\n```javascript\n// Check API health\nconst health = await payant.checkHealth();\nconsole.log(health.status); // 'healthy'\n```\n\n### Custom Requests\n\nFor endpoints not covered by the SDK:\n\n```javascript\n// GET request\nconst result = await payant.request('GET', '/custom-endpoint', { param: 'value' });\n\n// POST request\nconst result = await payant.request('POST', '/custom-endpoint', { data: 'value' });\n```\n\n## Error Handling\n\nThe SDK throws specific errors for different scenarios:\n\n```javascript\nconst {\n  AirvendError,\n  AuthenticationError,\n  ValidationError,\n  NotFoundError,\n  RateLimitError\n} = require('@airvend/vaas-merchant');\n\ntry {\n  const account = await payant.virtualAccounts.get('invalid-account');\n} catch (error) {\n  if (error instanceof AuthenticationError) {\n    console.log('Invalid or expired API key');\n  } else if (error instanceof NotFoundError) {\n    console.log('Account not found');\n  } else if (error instanceof ValidationError) {\n    console.log('Validation failed:', error.errors);\n  } else if (error instanceof RateLimitError) {\n    console.log('Too many requests, slow down');\n  } else if (error instanceof AirvendError) {\n    console.log('API error:', error.message, error.statusCode);\n  }\n}\n```\n\n## TypeScript Support\n\nThe SDK includes TypeScript definitions:\n\n```typescript\nimport Payant, { PayantConfig, VirtualAccount, Transaction } from '@airvend/vaas-merchant';\n\nconst config: PayantConfig = {\n  apiKey: 'your-api-key',\n  secretKey: 'your-webhook-secret'\n};\n\nconst payant = new Payant(config);\n\nconst account: VirtualAccount = await payant.virtualAccounts.get('1234567890');\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-d8de6597d7ab23ae0d6c2a7373c3527a"}