Native SuiteScript 2.1 connector for calling the QubitOn API from NetSuite. Full API coverage with 42 methods across address validation, tax ID verification, bank account checks, sanctions screening, compliance, risk assessment, and more -- all from within your NetSuite account.
// 1. Deploy the connector (SDF or manual upload)
// 2. Create a QubitOn Configuration record with your API key
// 3. Call any of the 42 API methods
/**
* @NApiVersion 2.1
* @NModuleScope SameAccount
*/
define(['/SuiteScripts/QubitOn/qubiton_api_client'], function (api) {
api.loadConfig();
var result = api.validateAddress({
addressLine1: '1600 Pennsylvania Ave NW',
city: 'Washington',
state: 'DC',
postalCode: '20500',
country: 'US'
});
log.debug('Valid', result.isValid);
log.debug('Standardized', result.standardizedAddress);
});Get your free API key at www.qubiton.com.
| Benefit | Details |
|---|---|
| Native SuiteScript | Pure SuiteScript 2.1 -- no middleware, external runtimes, or SuiteCloud Plus required |
| Zero-code configuration | Toggle validations per record type via point-and-click custom records |
| 3-layer architecture | API client, validation orchestrator, and record-type hooks -- use any layer independently |
| Configurable error handling | Stop, warn, or silently log validation failures per record type |
| Full audit trail | Every API call logged to a custom record with method, endpoint, status, and duration |
| Address correction accept/reject | Client Script prompts users to accept or reject standardized addresses with side-by-side comparison |
| Governance-aware | Map/Reduce batch scripts respect NetSuite governance limits |
| SDF-deployable | Full SuiteCloud Development Framework project for one-command deployment |
| All NetSuite editions | Works on Standard, Premium, OneWorld, and SuiteSuccess |
+------------------------------------------------------------------+
| Layer 3: Record Hooks |
| User Event Scripts (vendor, customer) |
| Client Scripts (real-time UI validation + address correction) |
| Map/Reduce (batch processing) |
| Suitelet (configuration dashboard) |
+------------------------------------------------------------------+
| Layer 2: Validation Orchestrator (qubiton_validation.js) |
| Config-driven rules, per-record-type toggles, country filters |
| Error mode routing (stop / warn / silent) |
| Address correction detection (original vs corrected diff) |
+------------------------------------------------------------------+
| Layer 1: API Client (qubiton_api_client.js) |
| 42 methods, N/https module, JSON serialization, error handling |
+------------------------------------------------------------------+
| Shared: Config loader, API logging, constants |
+------------------------------------------------------------------+
| |
v v
QubitOn Configuration QubitOn API Log
(custom record) (custom record)
|
v
https://api.qubiton.com
Layer 1 -- API Client: Direct HTTP calls to the QubitOn API. Use standalone for ad-hoc queries, RESTlets, or Suitelets.
Layer 2 -- Validation Orchestrator: Reads rules from the Validation Config custom record and dispatches validations with per-record-type error modes and country filters. Detects address corrections and flags them for the accept/reject UI flow.
Layer 3 -- Record Hooks: Pre-built User Event, Client, Map/Reduce, and Suitelet scripts for common NetSuite record types. The Client Script presents an accept/reject dialog when the API returns a corrected address.
- Address validation across 249 countries with USPS-certified US validation
- Address correction accept/reject -- Client Script shows a side-by-side comparison when the API returns a corrected address; user can accept (auto-update the record) or reject (keep original)
- Tax ID verification against government registries worldwide
- Tax ID format validation for structure checks without live registry lookups
- Bank account validation for routing numbers, IBANs, and SWIFT/BIC codes (standard and Pro)
- Sanctions screening against OFAC, EU, UN, and UK HMT lists
- PEP screening for Politically Exposed Persons
- Entity risk assessment for fraud and risk scoring
- Credit analysis, credit scoring, and bankruptcy lookups for vendor due diligence
- Payment failure rate lookups
- ESG scoring for environmental, social, and governance reporting
- Healthcare provider exclusion checks (validate and lookup)
- NPI and MEDPASS validation for healthcare providers
- EPA enforcement action lookups
- Corporate hierarchy and beneficial ownership research
- Company hierarchy lookup by identifier (DUNS, EIN)
- DUNS number lookup
- Business classification (SIC, NAICS) lookup
- Peppol e-invoicing participant validation and scheme lookup
- Diversity certification validation and lookup
- Ariba supplier profile lookup and validation
- Gender identification from name
- IP address quality and reputation checks
- Domain security reports
- Currency exchange rates with historical date support
- Payment terms analysis for early-pay discount optimization
- Indian identity validation (PAN, Aadhaar, GSTIN)
- Disqualified directors screening
- DOT/FMCSA motor carrier lookups
- Real-time UI validation via Client Scripts with field-level feedback
- Batch processing via governance-aware Map/Reduce scripts
| # | Method | HTTP | Endpoint | Description |
|---|---|---|---|---|
| 1 | validateAddress |
POST | /api/address/validate |
Address validation across 249 countries; USPS-certified for US |
| 2 | validateTax |
POST | /api/tax/validate |
Tax ID validation against government registries |
| 3 | validateBank |
POST | /api/bank/validate |
Bank account validation (routing, IBAN, SWIFT/BIC) |
| 4 | validateBankPro |
POST | /api/bankaccount/pro/validate |
Enhanced bank validation with account name matching |
| 5 | validatePhone |
POST | /api/phone/validate |
Phone number validation and formatting |
| 6 | validateEmail |
POST | /api/email/validate |
Email deliverability and domain validation |
| 7 | validateInIdentity |
POST | /api/inidentity/validate |
Indian identity validation (PAN, Aadhaar, GSTIN) |
| 8 | validateTaxFormat |
POST | /api/tax/format-validate |
Tax ID format-only validation (no registry lookup) |
| 9 | getSupportedTaxFormats |
GET | /api/tax/format-validate/countries |
Supported tax ID format countries |
| 10 | validateCertification |
POST | /api/certification/validate |
Business certification validation |
| 11 | validateDisqualifiedDirectors |
POST | /api/disqualifieddirectors/validate |
Disqualified director screening |
| 12 | validateEpaProsecution |
POST | /api/criminalprosecution/validate |
EPA criminal prosecution check |
| 13 | validateProviderExclusion |
POST | /api/providerexclusion/validate |
Healthcare provider exclusion check (OIG/GSA) |
| 14 | validateNpi |
POST | /api/nationalprovideridentifier/validate |
National Provider Identifier validation |
| 15 | validateMedpass |
POST | /api/Medpass/validate |
MEDPASS provider screening |
| 16 | validateEsgScore |
POST | /api/esg/Scores |
ESG score retrieval |
| 17 | validateIpQuality |
POST | /api/ipquality/validate |
IP address quality and reputation check |
| 18 | validatePeppolId |
POST | /api/peppol/validate |
Peppol participant ID validation |
| # | Method | HTTP | Endpoint | Description |
|---|---|---|---|---|
| 19 | getPeppolSchemes |
GET | /api/peppol/schemes |
Peppol identifier scheme list |
| 20 | lookupBusinessRegistration |
POST | /api/businessregistration/lookup |
Company registration lookup |
| 21 | lookupDunsNumber |
POST | /api/duns-number-lookup |
D-U-N-S number lookup |
| 22 | lookupBusinessClassification |
POST | /api/businessclassification/lookup |
SIC/NAICS classification lookup |
| 23 | lookupCorporateHierarchy |
POST | /api/corporatehierarchy/lookup |
Corporate parent/subsidiary structure |
| 24 | lookupCompanyHierarchy |
POST | /api/company/hierarchy/lookup |
Company hierarchy by identifier (DUNS, EIN) |
| 25 | lookupBeneficialOwnership |
POST | /api/beneficialownership/lookup |
Beneficial ownership information |
| 26 | lookupCertification |
POST | /api/certification/lookup |
Certification search by company |
| 27 | identifyGender |
POST | /api/genderize/identifygender |
Gender identification from name |
| 28 | lookupAribaSupplierProfile |
POST | /api/aribasupplierprofile/lookup |
Ariba supplier profile lookup by ANID |
| # | Method | HTTP | Endpoint | Description |
|---|---|---|---|---|
| 29 | screenSanctions |
POST | /api/prohibited/lookup |
Global sanctions screening (OFAC, EU, UN, UK HMT) |
| 30 | screenPep |
POST | /api/pep/lookup |
Politically Exposed Person screening |
| 31 | assessEntityRisk |
POST | /api/entity/fraud/lookup |
Entity fraud / risk assessment |
| 32 | lookupCreditAnalysis |
POST | /api/creditanalysis/lookup |
Detailed credit analysis report |
| 33 | lookupCreditScore |
POST | /api/risk/lookup |
Company credit score (category: Credit Score) |
| 34 | lookupBankruptcy |
POST | /api/risk/lookup |
Bankruptcy records (category: Bankruptcy) |
| 35 | lookupFailRate |
POST | /api/risk/lookup |
Payment failure rate (category: Fail Rate) |
| # | Method | HTTP | Endpoint | Description |
|---|---|---|---|---|
| 36 | lookupDotMotorCarrier |
POST | /api/dot/fmcsa/lookup |
DOT/FMCSA motor carrier lookup |
| 37 | lookupProviderExclusion |
POST | /api/providerexclusion/lookup |
Healthcare provider exclusion records |
| 38 | validateAribaSupplierProfile |
POST | /api/aribasupplierprofile/validate |
Ariba supplier profile validation |
| # | Method | HTTP | Endpoint | Description |
|---|---|---|---|---|
| 39 | getExchangeRates |
POST | /api/currency/exchange-rates/{baseCurrency} |
Currency exchange rates (current and historical) |
| 40 | analyzePaymentTerms |
POST | /api/paymentterms/validate |
Payment terms early-pay discount analysis |
| 41 | lookupDomainSecurity |
POST | /api/itsecurity/domainreport |
Domain cybersecurity report |
| # | Method | HTTP | Endpoint | Description |
|---|---|---|---|---|
| 42 | callApi |
* | (any) | Generic API call for advanced usage |
Methods 33-35 (
lookupCreditScore,lookupBankruptcy,lookupFailRate) share the same endpoint (/api/risk/lookup) and are differentiated by thecategoryfield in the request payload.
# Clone the repository
git clone https://github.com/qubitonhq/qubiton-netsuite.git
cd qubiton-netsuite
# Authenticate with your NetSuite account
suitecloud account:setup
# Validate and deploy
suitecloud project:validate
suitecloud project:deploy- Upload all files from
src/FileCabinet/SuiteScripts/QubitOn/to your File Cabinet underSuiteScripts/QubitOn/ - Import custom record XML files from
Objects/or create them manually - Create script records and deployments for each script type
See the Setup Guide for detailed step-by-step instructions.
- Navigate to Customization > Lists, Records, & Fields > Record Types > QubitOn Configuration
- Create a new record and enter your API key
- Set error mode to W (Warning) for initial rollout
- Create Validation Config records for each record type you want to validate
This connector is built to meet Oracle NetSuite SuiteApp marketplace certification requirements:
| Requirement | Status |
|---|---|
| SDF project structure | manifest.xml, deploy.xml, Objects/, FileCabinet/ |
| BundleInstallationScript | qubiton_install.js — afterInstall seeds config, afterUpdate preserves existing, beforeUninstall cleans logs |
| Governance compliance | All scripts check getRemainingUsage() before API calls (thresholds: API client 20, UE 100, MR map 200/reduce 50, Suitelet 100) |
| Custom role | QubitOn Administrator role with scoped permissions (custom records, Suitelets, script deployments) |
| Script record deployments | All 7 scripts have XML script records with proper deployment targets |
| Data cleanup utility | Admin Suitelet for purging old API logs with date filter and governance-aware batch deletion |
| No hardcoded credentials | API key stored in encrypted custom record field; base URL configurable |
| Audit trail | Every API call logged with method, endpoint, status, duration, user |
| Error isolation | Configurable error modes (Stop/Warn/Silent) per record type |
| Uninstall support | beforeUninstall cleans up API log records older than 90 days |
qubiton-netsuite/
manifest.xml -- SDF project manifest (publisher, version, deps)
deploy.xml -- SDF deployment configuration
Objects/
customrecord_qubiton_config.xml -- Configuration custom record
customrecord_qubiton_val_cfg.xml -- Validation config custom record
customrecord_qubiton_api_log.xml -- API log custom record
customscript_qbn_vendor_ue.xml -- Vendor UE script record + deployment
customscript_qbn_customer_ue.xml -- Customer UE script record + deployment
customscript_qbn_batch_mr.xml -- Map/Reduce script record + deployment
customscript_qbn_config_sl.xml -- Config Suitelet script record + deployment
customscript_qbn_client.xml -- Client Script record + deployments (vendor + customer)
customscript_qbn_install.xml -- Bundle Installation script record
customscript_qbn_cleanup_sl.xml -- Cleanup Suitelet script record + deployment
customrole_qbn_admin.xml -- QubitOn Administrator custom role
src/FileCabinet/SuiteScripts/QubitOn/
qubiton_api_client.js -- Layer 1: API client (42 methods)
qubiton_validation.js -- Layer 2: Validation orchestrator
qubiton_vendor_ue.js -- Vendor User Event script
qubiton_customer_ue.js -- Customer User Event script
qubiton_client.js -- Client Script (UI validation + address correction)
qubiton_batch_mr.js -- Map/Reduce batch validation
qubiton_config_sl.js -- Configuration Suitelet (dashboard + connection test)
qubiton_install.js -- Bundle Installation script (install/update/uninstall)
qubiton_cleanup_sl.js -- Data cleanup Suitelet (admin maintenance)
tests/
qubiton_api_client_test.js -- API client unit tests (160 tests)
docs/
setup.md -- Installation guide
configuration.md -- Configuration reference
examples.md -- Code examples for all 42 methods
netsuite-integration.md -- NetSuite integration patterns
LICENSE -- MIT License
README.md -- This file
| Edition | SuiteScript | Support Level |
|---|---|---|
| NetSuite Standard | 2.1 | Full |
| NetSuite Premium | 2.1 | Full |
| NetSuite OneWorld | 2.1 | Full (multi-subsidiary) |
| NetSuite SuiteSuccess | 2.1 | Full |
| NetSuite Sandbox | 2.1 | Full |
| Script Type | Use Case | Layer |
|---|---|---|
| User Event | Vendor/customer validation on save | 2 + 3 |
| Client Script | Real-time UI validation + address correction accept/reject | 1 + 3 |
| Map/Reduce | Batch validation | 1 + 2 |
| Suitelet | Configuration dashboard, manual checks | 1 |
| RESTlet | External system integration | 1 |
| Workflow Action | SuiteFlow conditional branching | 1 |
| Scheduled | Recurring batch jobs | 1 + 2 |
The connector uses only standard SuiteScript 2.1 modules:
| Module | Purpose |
|---|---|
N/https |
HTTP calls to QubitOn API |
N/record |
Record operations (load, save, submit) |
N/search |
Saved Search and ad-hoc queries |
N/runtime |
Script parameters, current user, governance |
N/error |
Custom error creation |
N/ui/serverWidget |
Suitelet forms |
N/ui/dialog |
Client Script dialogs (address correction accept/reject) |
N/log |
Server-side logging |
No external libraries or SuiteCloud Plus are required.
The QubitOn API is also available as a Model Context Protocol server with tools mapped 1:1 to API endpoints, workflow prompts, and reference data resources. Connect your AI assistant directly to QubitOn for natural-language data validation.
MCP Manifest: mcp.qubiton.com
| Document | Description |
|---|---|
| Setup Guide | Prerequisites, SDF deployment, manual install, troubleshooting |
| Configuration | Config records, validation rules, error modes, logging |
| API Examples | SuiteScript code examples for all 42 methods |
| NetSuite Integration | Vendor/customer hooks, batch, workflows, address correction |
Contributions are welcome. Please follow these guidelines:
- Fork the repository
- Create a feature branch (
feat/your-feature) - Write tests for new functionality
- Ensure all existing tests pass
- Submit a pull request with a clear description
# Clone your fork
git clone https://github.com/your-username/qubiton-netsuite.git
cd qubiton-netsuite
# Install SuiteCloud CLI
npm install -g @oracle/suitecloud-cli
# Set up your sandbox account
suitecloud account:setup
# Deploy to sandbox for testing
suitecloud project:deploy- SuiteScript 2.1 with JSDoc annotations
@NApiVersion 2.1and@NModuleScope SameAccounton all scripts- camelCase for method and variable names
- Descriptive error messages with context
- No external dependencies beyond standard SuiteScript modules
QubitOn provides native connectors and SDKs for other platforms:
| Connector | Platform | Language | Repo |
|---|---|---|---|
| Go SDK | Any platform | Go | qubiton-go |
| SAP S/4HANA | SAP ECC, S/4HANA, BTP | ABAP | qubiton-sap |
| Oracle | Oracle DB 11g+, EBS, Fusion | PL/SQL | qubiton-oracle |
| QuickBooks Online | QuickBooks Online | TypeScript | qubiton-quickbooks |
Plus 30+ pre-built integrations for Salesforce, HubSpot, Snowflake, Databricks, Zapier, Make, and more at www.qubiton.com/integrations.
MIT -- Copyright (c) 2026 apexanalytix, Inc.