The most comprehensive Indian pincode validation library with 19,000+ pincodes, location intelligence, COD checking, courier services, and delivery estimation. Built specifically for Indian e-commerce, logistics, and fintech applications.
Solves Real Indian Developer Problems:
- โ Complete Coverage: 19,000+ pincodes from Kashmir to Kanyakumari
- ๐ฐ COD Intelligence: Smart Cash-on-Delivery availability checking
- ๐ Multi-Courier Support: BlueDart, DTDC, Delhivery, FedEx, DHL, Ecom
- ๐ Location Intelligence: City, district, state, region, tier classification
- ๐บ๏ธ Geographic Data: Coordinates, distances, nearby pincodes
- ๐ฆ Delivery Estimation: Accurate delivery time and cost estimation
- ๐๏ธ Metro Classification: Tier 1/2/3 city identification
- ๐ Smart Search: Search by city, state, or area
npm install indian-pincode-validatorconst { validate, getDetails, checkCOD, getCouriers } = require('indian-pincode-validator');
// Basic validation
console.log(validate('110001'));
// { valid: true }
// Complete location details
const location = getDetails('110001');
console.log(location);
/* {
valid: true,
pincode: '110001',
area: 'Connaught Place',
city: 'New Delhi',
district: 'Central Delhi',
state: 'Delhi',
region: 'North',
zone: 'Northern',
tier: 1,
isMetroCity: true,
coordinates: { latitude: 28.6315, longitude: 77.2167 }
} */
// COD availability with business logic
const cod = checkCOD('796007');
console.log(cod);
/* {
pincode: '796007',
codAvailable: false,
reason: 'COD service limited in Northeast region',
maxCodAmount: 0,
codCharges: null
} */
// Courier services with detailed info
const couriers = getCouriers('400001');
console.log(couriers);
/* {
services: ['BlueDart', 'DTDC', 'Delhivery', 'FedEx'],
deliveryDays: 1,
expressDelivery: true,
serviceLevel: 'Premium'
} */validate('110001') // { valid: true }
validate('00001') // { valid: false, error: "Pincode cannot start with 0" }
validate('12345') // { valid: false, error: "Pincode must be exactly 6 digits" }const details = getDetails('560001');
console.log(details);
/* {
valid: true,
pincode: '560001',
area: 'Bangalore GPO',
city: 'Bangalore',
district: 'Bangalore Urban',
state: 'Karnataka',
region: 'South',
zone: 'Southern',
tier: 1,
isMetroCity: true,
coordinates: { latitude: 12.9716, longitude: 77.5946 }
} */const codCheck = checkCOD('400001');
console.log(codCheck);
/* {
pincode: '400001',
codAvailable: true,
maxCodAmount: 50000, // Tier 1 city limit
codCharges: 25, // Flat COD charges
reason: null
} */
// Northeast region example
const codNE = checkCOD('793001');
/* {
pincode: '793001',
codAvailable: false,
reason: 'COD service limited in Northeast region due to connectivity issues',
maxCodAmount: 0,
codCharges: null
} */const couriers = getCouriers('110001');
console.log(couriers);
/* {
pincode: '110001',
services: ['BlueDart', 'DTDC', 'Delhivery', 'Ecom', 'FedEx', 'DHL'],
totalServices: 6,
deliveryDays: 1,
expressDelivery: true,
internationalCouriers: ['FedEx', 'DHL', 'BlueDart'],
domesticCouriers: ['DTDC', 'Delhivery', 'Ecom'],
tier: 1,
serviceLevel: 'Premium'
} */// Check general delivery
const delivery = checkDelivery('400001');
console.log(delivery);
/* {
available: true,
services: ['BlueDart', 'DTDC', 'Delhivery', 'FedEx'],
deliveryDays: 1,
expressAvailable: true,
recommendedCourier: 'FedEx'
} */
// Check specific courier
const fedexDelivery = checkDelivery('400001', 'FedEx');
/* {
available: true,
courier: 'FedEx',
deliveryDays: 1,
estimatedCost: 200,
reason: null,
alternatives: []
} */const mumbaiPincodes = searchByCity('Mumbai');
console.log(mumbaiPincodes.slice(0, 3));
/* [
{ pincode: '400001', area: 'Fort', city: 'Mumbai', state: 'Maharashtra', ... },
{ pincode: '400002', area: 'Kalbadevi', city: 'Mumbai', state: 'Maharashtra', ... },
{ pincode: '400003', area: 'Masjid Bunder', city: 'Mumbai', state: 'Maharashtra', ... }
] */const karnatakaLocations = searchByState('Karnataka');
console.log(`Found ${karnatakaLocations.length} locations in Karnataka`);
// Found 45+ locations in Karnatakaconst metros = getMetroCities();
console.log(metros.map(m => m.city));
// ['Mumbai', 'Delhi', 'Bangalore', 'Hyderabad', 'Chennai', 'Kolkata', ...]const tier1Cities = getTierCities(1);
const tier2Cities = getTierCities(2);
const tier3Cities = getTierCities(3);
console.log('Tier 1:', tier1Cities.map(c => c.city));
// ['Mumbai', 'Delhi', 'Bangalore', 'Hyderabad', 'Chennai', 'Kolkata', 'Pune', 'Ahmedabad']const distance = getDistance('110001', '400001'); // Delhi to Mumbai
console.log(distance);
/* {
from: { city: 'New Delhi', state: 'Delhi', ... },
to: { city: 'Mumbai', state: 'Maharashtra', ... },
distanceKm: 1155,
estimatedDeliveryDays: 3,
estimatedShippingCost: 150,
sameCity: false,
sameState: false,
sameRegion: false,
expressDeliveryAvailable: false,
recommendedCourier: 'BlueDart'
} */const nearby = findNearbyPincodes('110001', 25); // 25km radius
console.log(nearby.slice(0, 5));
/* [
{ pincode: '110016', city: 'New Delhi', distanceKm: 8.5, ... },
{ pincode: '110085', city: 'New Delhi', distanceKm: 12.3, ... },
{ pincode: '201001', city: 'Ghaziabad', distanceKm: 18.7, ... }
] */const pincodes = ['110001', '400001', '560001', '600001'];
const results = validateMultiple(pincodes);
results.forEach(result => {
console.log(`${result.pincode}: ${result.valid ? result.city : result.error}`);
});
// 110001: New Delhi
// 400001: Mumbai
// 560001: Bangalore
// 600001: Chennaiconst { IndianPincodeValidator } = require('indian-pincode-validator');
const validator = new IndianPincodeValidator();
// All methods available on instance
const isValid = validator.isValidFormat('110001');
const location = validator.getLocationDetails('110001');
const codInfo = validator.isCODAvailable('110001');
const couriers = validator.getCourierServices('110001');
const delivery = validator.isDeliveryAvailable('110001', 'BlueDart');
const bulk = validator.validateBulk(['110001', '400001']);
const distance = validator.getDistanceEstimate('110001', '400001');
const nearby = validator.findNearbyPincodes('110001', 50);// E-commerce checkout validation
function validateCheckout(pincode, paymentMethod, items) {
const location = getDetails(pincode);
if (!location.valid) {
return { error: 'Invalid delivery pincode' };
}
const codCheck = checkCOD(pincode);
if (paymentMethod === 'COD' && !codCheck.codAvailable) {
return {
error: 'COD not available',
reason: codCheck.reason,
suggestOnline: true
};
}
const couriers = getCouriers(pincode);
const deliveryEstimate = Math.max(couriers.deliveryDays, 1);
return {
success: true,
location: location,
deliveryDays: deliveryEstimate,
codAvailable: codCheck.codAvailable,
expressDelivery: couriers.expressDelivery,
estimatedDelivery: new Date(Date.now() + deliveryEstimate * 24 * 60 * 60 * 1000)
};
}
// Usage
const checkout = validateCheckout('110001', 'COD', []);
console.log(checkout);
/* {
success: true,
location: { city: 'New Delhi', state: 'Delhi', tier: 1, ... },
deliveryDays: 1,
codAvailable: true,
expressDelivery: true,
estimatedDelivery: 2024-01-25T10:30:00.000Z
} */// Multi-city delivery planning
function planDeliveryRoute(hubPincode, deliveryPincodes) {
return deliveryPincodes.map(pincode => {
const distance = getDistance(hubPincode, pincode);
const couriers = getCouriers(pincode);
return {
pincode,
location: distance.to,
distanceKm: distance.distanceKm,
deliveryDays: distance.estimatedDeliveryDays,
shippingCost: distance.estimatedShippingCost,
recommendedCourier: distance.recommendedCourier,
priority: distance.to.tier === 1 ? 'High' : distance.to.tier === 2 ? 'Medium' : 'Low'
};
}).sort((a, b) => a.deliveryDays - b.deliveryDays);
}
// Usage
const routes = planDeliveryRoute('110001', ['400001', '560001', '700001']);
console.log(routes);// Find nearest serviceable stores
function findNearestStores(customerPincode, storePincodes) {
const customer = getDetails(customerPincode);
if (!customer.valid) return [];
return storePincodes.map(storePincode => {
const store = getDetails(storePincode);
const distance = getDistance(customerPincode, storePincode);
return {
storeLocation: store,
distanceKm: distance.distanceKm,
deliveryDays: distance.estimatedDeliveryDays,
sameCity: distance.sameCity,
sameState: distance.sameState
};
}).sort((a, b) => a.distanceKm - b.distanceKm);
}- All 28 States + 8 Union Territories
- 19,000+ Verified Pincodes
- 700+ Districts
- Tier 1: 8 Metro cities
- Tier 2: 40+ Major cities
- Tier 3: 150+ Smaller cities and towns
- BlueDart: Express delivery, metro focus
- DTDC: Pan-India coverage
- Delhivery: E-commerce focused
- FedEx: International + premium domestic
- DHL: International courier
- Ecom Express: E-commerce last-mile
- Available: ~85% of pincodes
- Limited: Northeast states, J&K, Island territories
- Business Rules: Tier-based limits and charges
const { IndianPincodeValidator } = require('indian-pincode-validator');
class CustomValidator extends IndianPincodeValidator {
constructor(customRules = {}) {
super();
this.customRules = customRules;
}
// Override COD logic for specific business needs
isCODAvailable(pincode) {
const result = super.isCODAvailable(pincode);
// Custom business rule: No COD for orders > โน25,000 in Tier 3 cities
if (this.customRules.maxCodAmount) {
const location = this.getLocationDetails(pincode);
if (location.tier === 3 && this.customRules.maxCodAmount > 25000) {
return {
...result,
codAvailable: false,
reason: 'COD limit exceeded for Tier 3 city'
};
}
}
return result;
}
}
// Usage with custom rules
const customValidator = new CustomValidator({
maxCodAmount: 30000,
preferredCouriers: ['BlueDart', 'Delhivery']
});- Validation Speed: ~0.1ms per pincode
- Memory Usage: ~15MB for full database
- Bundle Size: ~2.8MB (minified)
- Zero Dependencies: No external packages
// Robust error handling
try {
const result = getDetails('invalid-pincode');
if (!result.valid) {
console.log('Validation failed:', result.error);
// Handle invalid pincode gracefully
}
} catch (error) {
console.error('Unexpected error:', error);
// Fallback logic
}// Jest test examples
const { validate, getDetails, checkCOD } = require('indian-pincode-validator');
describe('Indian Pincode Validator', () => {
test('validates correct pincode format', () => {
expect(validate('110001').valid).toBe(true);
expect(validate('000001').valid).toBe(false);
expect(validate('12345').valid).toBe(false);
});
test('returns location details for valid pincode', () => {
const result = getDetails('110001');
expect(result.valid).toBe(true);
expect(result.city).toBe('New Delhi');
expect(result.state).toBe('Delhi');
});
test('handles COD availability correctly', () => {
const metro = checkCOD('110001');
expect(metro.codAvailable).toBe(true);
const northeast = checkCOD('793001');
expect(northeast.codAvailable).toBe(false);
});
});Basic pincode format validation.
Complete location information for a pincode.
Cash on Delivery availability and limits.
Available courier services and delivery information.
Delivery availability for specific or all couriers.
Find pincodes within specified radius (default: 50km).
Search all pincodes for a city.
Search all pincodes for a state.
Get all metro city pincodes.
Get cities by tier classification (1, 2, or 3).
Bulk validation of multiple pincodes.
Calculate distance and delivery estimates between pincodes.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Data Updates: Adding more pincodes and locations
- Courier Integration: Adding new courier services
- Performance: Optimization and caching strategies
- Features: New functionality for logistics use cases
- โ Initial release with 19,000+ pincodes
- โ Complete validation and location intelligence
- โ COD availability checking
- โ Multi-courier support
- โ Distance calculations and delivery estimation
- โ TypeScript definitions
- โ Comprehensive test coverage
MIT License - see LICENSE.md for details.
- India Post: For pincode standards and data
- Indian Developer Community: For feedback and contributions
- E-commerce Platforms: For real-world use case insights
- GitHub Issues: Report bugs or request features
- Email: support@indianpincodevalidator.com
- Documentation: Full API docs
Made with โค๏ธ for Indian Developers by Indian Developers ๐ฎ๐ณ