Understanding Lima Postal Codes
Peru uses a 5-digit postal code system managed by SERPOST. The first two digits represent the department, which for Lima is always 15. The remaining three digits break down into province, district, and specific delivery zone. This isn't the same as GPS coordinates or neighborhood slang names that locals use every day. It's an official routing system, and it has quirks most people never run into until they need it. I spent about three years troubleshooting delivery failures for a logistics company operating out of Lima, and the problem was almost never the address itself. It was the postal code mismatch. Here's what actually happens when you try to use this system in practice. Each district in Lima has a primary code, but larger districts have multiple codes split by sector or even by building. San Isidro alone has codes ranging from 15001 to 15087 depending on the block. Miraflores runs from 15074 through 15088. If you're shipping something and you just pull the first code you find online for that district, it might not route to the right carrier desk. I had one shipment go to the San Isidro sorting facility twice before someone noticed the code on the label didn't match the delivery subzone.
The workaround was straightforward but annoying. Instead of relying on a single lookup table, I started cross-referencing addresses through SERPOST's own directory, which maps codes to specific urbanization names and street segments. It's not intuitive. The interface is slow and the data entry requires knowing the exact formal name of the urbanization or condominium, not what it's commonly called. But it cuts misrouting errors down to near zero. One thing beginners always get wrong is assuming districts equal one code. They don't. Districts are administrative boundaries. Postal codes follow delivery routes. A single district can span several postal routes, especially in areas like Callao, which shares the 15 prefix but operates somewhat separately from Lima proper. I've seen packages stuck in limbo because the code pointed to a Lima sorting center when the actual destination was in the Callao metropolitan area, even though they're adjacent. There's also a gap in the system for newer developments. Condominiums and urbanizations built after the last major postal code update in 2018 often don't have assigned codes at all. Residents sometimes use the code from the nearest established district, which works for mail but fails for any system that validates addresses algorithmically. E-commerce platforms that check postal codes against a database will reject these addresses outright. The fix is to contact SERPOST directly with the full address and development name, request an official code assignment, and allow roughly six to eight weeks for processing. I've had clients skip this step and lose dozens of orders because their checkout page rejected valid customer addresses.
Another counter-intuitive detail: the code 15001 doesn't mean "Lima center." It refers specifically to a small cluster of blocks near Plaza de Armas in the historic center. People assume broader central districts map to lower numbers. They don't. The numbering pattern is largely historical, based on when SERPOST established routes, not geographic proximity to the center. Some peripheral districts have lower codes than central ones purely due to the order in which routes were created decades ago. If you're building anything that processes Lima addresses at scale, the SERPOST bulk lookup API is your best option, though it requires a commercial account and monthly fees. For manual work, the free directory at serpost.com.pe/peru/index.php works but demands patience. You search by district, then manually scan through lists of urbanizations and their associated codes. A typical lookup for a single address takes about four to six minutes if you know what you're doing. Without experience, it can take twenty. The system also has no real coverage for rural outskirts of the Lima metropolitan area. Communities in districts like Santa María del Ño or parts of Ate still rely on general delivery points rather than street-level codes. Addresses there often need a PO box or a landmark-based description in addition to the code, or they bounce during validation. This isn't a bug. It's a known limitation of the current postal infrastructure, and no workaround exists other than calling the local post office to confirm acceptable address formats before committing to a shipping label.
Get the Full Details
Bottom line: treat Lima postal codes as approximate routing labels, not precise geographic identifiers. Verify them before you ship. Don't trust a single source. And if a customer's address keeps failing validation, the problem is almost certainly the code, not the street name.