LACNIC IPv4 Transfers in 2026: Rules, Fees, One-Year Hold

LACNIC IPv4 Transfers in 2026: Rules, Fees, One-Year Hold

LACNIC IPv4 Transfers in 2026: Rules, Fees, One-Year Hold

Short answer (checked 2026-11-10): LACNIC allows IPv4 transfers inside Latin America and the Caribbean and, since July 2020, to and from ARIN, APNIC and the RIPE NCC. The smallest block is a /24, a recipient in the region must justify its need to LACNIC first, the seller cannot get new IPv4 from LACNIC for one year, a block that has just moved cannot move again for one year, and space LACNIC itself handed out is locked for three years. LACNIC charges an administrative fee of US$ 1,037 below a /19 and US$ 1,555 from a /19 up. Blocks registered through Brazil's NIC.br or Mexico's NIC México go through those registries. Address prices are on /ipv4/pricing.

Checked on 2026-11-10. LACNIC: Policy Manual v2.21 (web version of section 2, IPv4, and section 11, exhaustion; LACNIC says the PDF prevails), intra-regional transfers and inter-regional transfers (steps and fees), IPv4 waitlist, transfer contacts, the inter-RIR announcement of 2020-07-21, and the status of proposals LAC-2023-7 (temporary transfers: withdrawn) and LAC-2020-1 (IPv6 as a transfer condition: abandoned). Data: LACNIC's transfers_latest.json (newest entry 2026-11-06) and delegated-lacnic-extended-latest (dated 2026-11-10).

The rules of section 2.3.2.18

Section 2.3.2.18 of the LACNIC Policy Manual is the whole transfer policy, and it is short. It covers transfers within the region and inter-RIR transfers alike:

  1. Minimum /24. Nothing smaller moves.
  2. The recipient justifies first. A recipient in the region must justify the space to LACNIC under the normal rules for an initial or additional allocation. For an ISP asking for /24 to /22 that means 25% used or needed at once and a one-year plan for 50% (section 2.3.3.1.1); an organisation that already holds space must show 80% use of it (2.3.4). A recipient in another region follows its own registry's rules.
  3. Holder check. LACNIC (or the other RIR) verifies that the seller is the registered holder and that the block is not in dispute. Within the region both sides sign the legal document of the transfer.
  4. Public log. Every transfer goes into a public transfer log: date, both organisations, the addresses and, for inter-RIR moves, both registries. Our script below reads it.
  5. The seller waits one year before it can receive IPv4 from LACNIC again (2.3.2.18.5).
  6. The block waits one year before it can be transferred again, in whole or in part (2.3.2.18.6).
  7. Space from LACNIC waits three years. Addresses allocated or assigned by LACNIC cannot be transferred for three years from the allocation date (2.3.2.18.9); the same three years apply to blocks from the exhaustion reserves (section 11).
  8. Legacy space loses its status. A legacy block transferred into the region is no longer legacy (2.3.2.18.10).

There is no lease clause. A proposal for temporary transfers, LAC-2023-7, was withdrawn, so a LACNIC transfer is permanent. If you only need addresses for a while, that is a lease, not a transfer.

Fees, steps and the LACNIC waitlist

LACNIC's fee is the same for transfers within the region and between regions: US$ 1,037 for a block from /24 up to (but not including) /19, US$ 1,555 for a /19 or larger. A US$ 200 down payment is due when the request is opened (by the regional side; for an inbound transfer, the recipient) and is not refunded if the need cannot be justified; the rest is paid after approval. Each seller is a separate transfer with its own fee. If the recipient's membership category goes up, LACNIC invoices the difference; a recipient that is not yet a member pays the full category fee plus the administrative fee and signs a service agreement. A transfer must be requested at least 30 days before the member's renewal invoice falls due.

Per IP the fee matters only for small blocks: US$ 1,037 is about US$ 4.05 per address on a /24 and about US$ 1.01 on a /22.

The steps for a block leaving LACNIC: the seller's administrative contact files the form in MiLACNIC, a LACNIC analyst asks for documents, the request is pre-approved and the receiving RIR is notified, that RIR approves its recipient, then the seller signs a transfer order and pays. Reverse DNS and RPKI may not be available at once after an inter-RIR move, so plan the ROA for the new holder; the ARIN to RIPE case is walked through in our inter-RIR transfer guide.

Why so many buy: LACNIC handed out its last IPv4 block on 2020-08-19 and runs a waitlist. LACNIC's own estimate is that the last request on it will wait at least 18 years and get at most 1,024 addresses; only members with IPv6 from LACNIC may join, only for an initial request, and a place on the list is lost in a purchase, sale or merger. For a RIPE-side comparison see RIPE waiting list vs buying a /24.

LACNIC vs RIPE NCC vs ARIN

LACNIC RIPE NCC ARIN
Recipient justifies need Yes, to LACNIC, under the allocation rules Inter-RIR only: a plan to use 50% in five years Yes, under NRPM 8.3 / 8.4
Hold on received space 1 year; 3 years on space LACNIC allocated 24 months (RIPE-807 2.2.1) Source must not have received ARIN IPv4 in the past 12 months
Registry fee US$ 1,037 below /19, US$ 1,555 from /19 None for the transfer; LIR fee applies $500 source fee; 2027 recipient fee $187.50 for a /24
Inter-RIR partners ARIN, APNIC, RIPE NCC (since July 2020) ARIN, APNIC, LACNIC APNIC, LACNIC, RIPE NCC
Waiting list Last request: at least 18 years (LACNIC estimate) 830 LIRs, front 501 days (2026-11-09) An 8.4 seller is barred from it for 36 months

RIPE and ARIN facts are from our checks of 2026-10-29 to 2026-11-09 (RIPE-807, ARIN NRPM 8.4, the ARIN 2027 fee schedule, RIPE's waiting-list statistics). AFRINIC is not in the LACNIC row: its transfer policy needs reciprocity and was not in force for inter-RIR moves when we last looked.

Brazil and Mexico: NIC.br and NIC México

Two countries in the region have national registries. LACNIC's transfer page sends organisations based in Brazil to Registro.br (NIC.br, numeracao@registro.br) and those in Mexico to IAR.MX (NIC México, ipmaster_iar@nic.mx). The policy is still LACNIC's; the forms, the language and the contract are the NIR's, and a buyer outside Brazil or Mexico ends up with the block registered elsewhere, either directly with LACNIC or in another region.

The two NIRs are most of the market. In LACNIC's delegation file, Brazil holds 43.6% of the region's IPv4 and Mexico 15.9%; over the last 12 months 235 of the transfers that landed in the LACNIC region went to Brazilian organisations, 34 to Mexican ones. A Brazilian or Mexican seller therefore starts with its NIR, not with LACNIC, and the first question to the seller is who its registry of record is. Check the block's reputation before you sign either way: IPv4 blacklist check before buying.

What LACNIC's transfer log shows

LACNIC publishes every transfer it has recorded as JSON, in the same format as the other registries, plus the usual delegation file. The script below reads both: transfers per year split into intra-LACNIC and inter-RIR flows, the largest seller to buyer moves of the last two years, the block sizes and recipient countries of the last 12 months, the age of blocks when they were sold, and how much space LACNIC handed out recently enough to still be inside the three-year lock. Bun or Node 18+, no dependencies. Save it as lacnic_transfers.js:

// lacnic_transfers.js - who moves IPv4 in the LACNIC region, and what is still locked
// Bun or Node 18+, no dependencies. Usage: bun lacnic_transfers.js
const BASE = 'https://ftp.lacnic.net/pub/stats/lacnic/';
const get = async (p) => {
  const r = await fetch(BASE + p);
  if (!r.ok) throw new Error(p + ': HTTP ' + r.status);
  return r;
};
const ip = (s) => s.split('.').reduce((a, o) => a * 256 + Number(o), 0);
const size = (n) => n.transfer_set.reduce((a, r) => a + ip(r.end_address) - ip(r.start_address) + 1, 0);
const pct = (a, b) => (b ? (100 * a / b).toFixed(1) : '0.0') + '%';
const fmt = (n) => n.toLocaleString('en-US');
const median = (a) => { a = [...a].sort((x, y) => x - y); return a.length ? a[a.length >> 1] : 0; };
const rir = (s) => (/RIPE/i.test(s) ? 'RIPE' : s); // the log spells RIPE three ways
const org = (o) => o.name.toUpperCase().replace(/[^\p{L}\p{N} ]/gu, '').replace(/ +/g, ' ').replace(/ (SA|LTDA|LIMITED|INC|SPA)$/, '');

const { transfers } = await (await get('transfers/transfers_latest.json')).json();
const dates = transfers.map((t) => t.transfer_date.slice(0, 10)).sort();
console.log(`Transfer log: ${transfers.length} entries, ${dates[0]} to ${dates.at(-1)}`);

// 1. per year: intra-LACNIC vs inbound / outbound, in addresses
const years = {};
for (const t of transfers) {
  const y = t.transfer_date.slice(0, 4);
  const v4 = (t.ip4nets || []).reduce((a, n) => a + size(n), 0);
  if (!v4) continue;
  const [src, dst] = [rir(t.source_rir), rir(t.recipient_rir)];
  const k = src === dst ? 'intra' : dst === 'LACNIC' ? 'in<-' + src : 'out->' + dst;
  const Y = (years[y] ??= { n: 0, ips: 0 });
  Y.n++; Y.ips += v4; Y[k] = (Y[k] || 0) + v4;
}
console.log('\nYear  transfers  IPv4 addresses  intra-LACNIC  inter-RIR flows');
for (const [y, Y] of Object.entries(years).sort()) {
  const flows = Object.keys(Y).filter((k) => /->|<-/.test(k)).map((k) => `${k} ${fmt(Y[k])}`).join(', ');
  console.log(`${y}  ${String(Y.n).padStart(9)}  ${fmt(Y.ips).padStart(14)}  ${pct(Y.intra || 0, Y.ips).padStart(12)}  ${flows || '-'}`);
}

// 2. the largest single moves of each of the last two years (one seller -> one buyer)
for (const y of Object.keys(years).sort().slice(-2)) {
  const pairs = {};
  for (const t of transfers.filter((t) => t.transfer_date.startsWith(y))) {
    const k = `${org(t.source_organization)} (${t.source_organization.country_code}) -> ${org(t.recipient_organization)} (${rir(t.recipient_rir)})`;
    const v4 = (t.ip4nets || []).reduce((a, n) => a + size(n), 0);
    if (v4) pairs[k] = (pairs[k] || 0) + v4;
  }
  console.log(`\nLargest ${y} pairs:`);
  for (const [k, v] of Object.entries(pairs).sort((a, b) => b[1] - a[1]).slice(0, 3))
    console.log(`  ${fmt(v).padStart(9)} ${pct(v, years[y].ips).padStart(6)}  ${k}`);
}

// 3. last 12 months: block sizes, countries, age of LACNIC-held blocks when they moved
const since = new Date(Date.now() - 365 * 864e5).toISOString().slice(0, 10);
const recent = transfers.filter((t) => t.transfer_date.slice(0, 10) >= since);
const bySize = {}, byCc = {}, ages = [];
let young = 0, blocks = 0;
for (const t of recent) {
  // an inbound entry carries the transfer date as its registration date: age only for LACNIC sources
  const age = (Date.parse(t.transfer_date.slice(0, 10)) - Date.parse(t.source_registration_date.slice(0, 10))) / 864e5 / 365.25;
  for (const n of t.ip4nets || []) {
    const pfx = '/' + (32 - Math.round(Math.log2(size(n))));
    bySize[pfx] = (bySize[pfx] || 0) + 1;
    blocks++;
    if (t.source_rir !== 'LACNIC') continue;
    ages.push(age);
    if (age < 3) young++;
  }
  if (t.recipient_rir === 'LACNIC') {
    const cc = t.recipient_organization.country_code;
    byCc[cc] = (byCc[cc] || 0) + 1;
  }
}
console.log(`\nLast 12 months (since ${since}): ${recent.length} transfers, ${blocks} IPv4 blocks`);
console.log('Block sizes: ' + Object.entries(bySize).sort((a, b) => b[1] - a[1]).slice(0, 5).map(([k, v]) => `${k} ${v}`).join(', '));
console.log('Recipient countries (LACNIC side): ' + Object.entries(byCc).sort((a, b) => b[1] - a[1]).slice(0, 5).map(([k, v]) => `${k} ${v}`).join(', '));
console.log(`Age of LACNIC-held blocks at transfer: median ${median(ages).toFixed(1)} years, under 3 years ${young} of ${ages.length}`);

// 4. delegated file: who holds the space, and what the 3-year rule still locks
const lines = (await (await get('delegated-lacnic-extended-latest')).text()).split('\n');
console.log('\nDelegated file header: ' + lines[0]);
const moved = new Set(transfers.flatMap((t) => (t.ip4nets || []).flatMap((n) => n.transfer_set.map((r) => r.start_address))));
const hold = {}; let total = 0, locked = 0, lockedN = 0;
const cutoff = new Date(Date.now() - 3 * 365.25 * 864e5).toISOString().slice(0, 10).replaceAll('-', '');
for (const l of lines) {
  const f = l.split('|');
  if (f[2] !== 'ipv4' || !/^(allocated|assigned)$/.test(f[6])) continue;
  const n = Number(f[4]);
  total += n; hold[f[1]] = (hold[f[1]] || 0) + n;
  // a transferred block also carries a recent date: it is under the 1-year rule, not the 3-year one
  if (f[5] >= cutoff && !moved.has(f[3])) { locked += n; lockedN++; }
}
console.log(`Delegated IPv4: ${fmt(total)} addresses; ` + Object.entries(hold).sort((a, b) => b[1] - a[1]).slice(0, 5)
  .map(([k, v]) => `${k} ${pct(v, total)}`).join(', '));
console.log(`Delegated by LACNIC / NIRs since ${cutoff} (still inside the 3-year lock): ${lockedN} records, ${fmt(locked)} addresses`);

Run it in an empty directory:

bun lacnic_transfers.js

Output, run on a DCXV Cloud server with Bun 1.4.4 on 2026-11-10:

Transfer log: 1929 entries, 2016-09-14 to 2026-11-06

Year  transfers  IPv4 addresses  intra-LACNIC  inter-RIR flows
2016          5          59,392        100.0%  -
2017         14         100,352        100.0%  -
2018         26          86,016        100.0%  -
2019         62         128,256        100.0%  -
2020         58         188,928         81.4%  out->RIPE 19,968, in<-RIPE 1,024, out->ARIN 13,824, in<-ARIN 256
2021        111         456,448         39.4%  in<-RIPE 4,352, out->ARIN 25,344, in<-ARIN 23,296, out->APNIC 16,384, out->RIPE 207,104
2022        147         517,632         24.2%  out->ARIN 14,336, in<-ARIN 5,632, out->RIPE 370,432, in<-RIPE 2,048
2023        185         295,424         63.9%  in<-APNIC 7,424, out->ARIN 14,336, in<-ARIN 7,680, out->RIPE 35,328, out->APNIC 38,912, in<-RIPE 3,072
2024        225         278,016         82.0%  in<-APNIC 14,336, out->APNIC 1,024, in<-ARIN 4,352, in<-RIPE 5,632, out->ARIN 16,384, out->RIPE 8,192
2025        752       7,748,352          5.6%  out->RIPE 37,632, out->ARIN 7,117,824, in<-ARIN 149,504, in<-RIPE 5,376, in<-APNIC 256, out->APNIC 4,096
2026        344       1,535,488         20.9%  in<-ARIN 74,752, in<-RIPE 21,248, in<-APNIC 512, out->ARIN 131,328, out->RIPE 856,064, out->APNIC 131,072

Largest 2025 pairs:
  7,110,656  91.8%  VTAL REDE NEUTRA DE TELECOMUNICACOES (BR) -> GLOBENET CABOS SUBMARINOS AMERICA (ARIN)
    131,328   1.7%  WIRELESS DATA SERVICE PROVIDER CORPORATION (US) -> COMUNICACIÓN CELULAR SA COMCEL (LACNIC)
     65,536   0.8%  TIM (BR) -> AMAZON DATA SERVICES URUGUAY SRL (LACNIC)

Largest 2026 pairs:
    655,360  42.7%  TIM (BR) -> LARUS (RIPE)
    131,072   8.5%  TELEFONICA MOVIL DE CHILE (CL) -> VIDEOTRON LTEE (ARIN)
     65,536   4.3%  TELEFONICA MOVIL DE CHILE (CL) -> EUROPEAN ION INVESTMENT GROUP SL (RIPE)

Last 12 months (since 2025-11-10): 383 transfers, 383 IPv4 blocks
Block sizes: /24 162, /22 98, /23 57, /20 23, /16 17
Recipient countries (LACNIC side): BR 235, MX 34, AR 21, CO 17, CL 12
Age of LACNIC-held blocks at transfer: median 13.9 years, under 3 years 2 of 345

Delegated file header: 2.3|lacnic|20261110|97654|19870101|20261106|-0300
Delegated IPv4: 181,941,760 addresses; BR 43.6%, MX 15.9%, AR 10.7%, CO 9.6%, CL 5.3%
Delegated by LACNIC / NIRs since 20231110 (still inside the 3-year lock): 174 records, 168,704 addresses

How to read it:

  • 2025 was one deal. 752 transfers moved 7,748,352 addresses, but 7,110,656 of them (91.8%) were 430 blocks that went from V.tal in Brazil to GlobeNet in the ARIN region on one day, 2025-02-20. GlobeNet has been part of V.tal since a 2022 merger (DCD), so this was most likely a move inside one group, not a market sale. Without it 2025 moved about 638,000 addresses.
  • 2026 is an outflow year. To 2026-11-06, 344 transfers moved 1,535,488 addresses. Only 20.9% stayed inside the region; 1,118,464 (72.8%) left for the RIPE region, ARIN and APNIC, and 96,512 came in. The largest single move is 655,360 addresses from TIM in Brazil to Larus in the RIPE region.
  • The typical deal is small. Of 383 blocks in the last 12 months, 162 were /24s, 98 /22s and 57 /23s; there were 17 /16s.
  • Sellers sell old space. The median LACNIC block was 13.9 years old when it moved; only 2 of 345 were younger than three years, and the log does not say whether those were re-sales past the one-year rule.
  • The three-year lock is small. 174 records, 168,704 addresses (about 970 each, roughly a /22), were delegated since 2023-11-10 and have not moved: that space cannot be sold before its third anniversary.

The year totals count addresses, not deals: one large block outweighs hundreds of /24s. For the RIPE side of the same months see the October 2026 IPv4 market report.

What this means if you buy or sell LACNIC space

  • Buying for a network in Latin America. Prepare the justification first: LACNIC checks need before the transfer, as ARIN does and the RIPE NCC does not for its own region. Budget the administrative fee on top of the price; on a /24 it is a noticeable share.
  • Buying for a network in Europe. A LACNIC block can come to a RIPE LIR as an inter-RIR transfer. LACNIC verifies the seller, the RIPE NCC applies its own inter-RIR conditions to you, and the block then follows RIPE rules, including the 24-month hold. Our inter-RIR transfer page explains the paperwork.
  • Selling. Check two dates: when you received the block (3 years for LACNIC allocations, 1 year for a block you bought), and your renewal invoice (file at least 30 days before). Remember that after the sale you cannot get IPv4 from LACNIC for a year, and that a waitlist position is lost in a sale.
  • Paying. Use escrow that releases on the registry change; the steps are in IPv4 escrow payment milestones.

DCXV brokers IPv4 transfers between the regions and is a RIPE NCC member (AS204057). Registry notes for this region are on /ipv4/lacnic. Buying or selling LACNIC space? Talk to the IPv4 desk or email ipv4@dcxv.com.

LACNIC IPv4 Transfers in 2026: Rules, Fees, One-Year Hold
ipv4transfernetworking

LACNIC IPv4 Transfers in 2026: Rules, Fees, One-Year Hold

LACNIC IPv4 transfers in 2026: section 2.3.2.18 rules, the US$ 1,037 fee, NIC.br and NIC México, and a script over 1,929 logged transfers from 2016 to 2026.

IPv4 Market Report October 2026: Prices, Transfers, Queue
ipv4pricingtransfer

IPv4 Market Report October 2026: Prices, Transfers, Queue

October 2026 IPv4 market report: 253 RIPE transfers moving half September's addresses, a /24 at $25.34 per IP, a queue of 820 LIRs, ARIN 58, a rerun script.

Opening a RIPE LIR in 2026: Costs, Timeline, When Not To
ipv4ripe-nccpricing

Opening a RIPE LIR in 2026: Costs, Timeline, When Not To

Opening a RIPE NCC LIR in 2026: EUR 1,000 sign-up, EUR 1,894 a year from 2027, the steps, a census of 19,852 LIR accounts and when a sponsoring LIR is cheaper.

Is IPv4 Still an Investment in 2026? Yield After Fees
ipv4pricingripe-ncc

Is IPv4 Still an Investment in 2026? Yield After Fees

A /24 earns 25% a year gross at November 2026 prices, but a new RIPE LIR fee turns it into a loss. Net yield by registry, RIPE liquidity data, exit costs.

AWS BYOIP in 2026: $43.80 per IPv4 vs Your Own /24
ipv4pricingcloud

AWS BYOIP in 2026: $43.80 per IPv4 vs Your Own /24

AWS bills $0.005 an hour per public IPv4, $43.80 a year. BYOIP addresses carry no charge: when a bought or leased /24 pays back, with a ROA readiness script.