DEV Community

RoviDev
RoviDev

Posted on Originally published at rovidev.com

How to calculate LATAM net salary via API (Node.js & Python)

Remote hiring in Latin America sounds simple until you need consistent payroll math across Mexico, Brazil, Colombia and a dozen more regimes. Spreadsheets break when you add reverse calculations ("guaranteed net") or employer total cost.

We ship LATAM & Iberia Salary Planning API v2 — same engine behind 30+ free calculators on RoviDev. This post shows how to integrate it in Node.js and Python via RapidAPI (Basic plan $0).

What you get

  • GET /v1/countries — 20 countries + currency
  • POST /v1/payroll/{country} — Gross → net + deductions
  • POST /v1/payroll/{country}/reverse — Target net → required gross
  • POST /v1/payroll/batch — Up to 50 rows per call

Countries include mx, br, ar, co, pe, cl, es, pt and more. Response includes employer_total_cost — critical for EOR and fintech budgeting.

1. Subscribe on RapidAPI

  1. Open LATAM & Iberia Payroll on RapidAPI
  2. Choose Basic ($0) and subscribe
  3. Copy X-RapidAPI-Key
  4. Use host latam-iberia-payroll.p.rapidapi.com

2. Node.js — gross to net

const RAPIDAPI_KEY = process.env.RAPIDAPI_KEY;

async function grossToNet(country, grossMonthly) {
  const res = await fetch(`https://api.rovidev.com/v1/payroll/${country}`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-RapidAPI-Key': RAPIDAPI_KEY,
      'X-RapidAPI-Host': 'latam-iberia-payroll.p.rapidapi.com',
    },
    body: JSON.stringify({ gross_monthly: grossMonthly, pay_period: 'monthly' }),
  });
  if (!res.ok) throw new Error(await res.text());
  return res.json();
}

grossToNet('mx', 35000).then(console.log);
Enter fullscreen mode Exit fullscreen mode

3. Python — reverse (net → gross)

import os, requests

def reverse_net(country: str, net_target: float) -> dict:
    r = requests.post(
        f"https://api.rovidev.com/v1/payroll/{country}/reverse",
        headers={
            "X-RapidAPI-Key": os.environ["RAPIDAPI_KEY"],
            "X-RapidAPI-Host": "latam-iberia-payroll.p.rapidapi.com",
        },
        json={"net_monthly": net_target, "pay_period": "monthly"},
        timeout=30,
    )
    r.raise_for_status()
    return r.json()

print(reverse_net("mx", 30000)["gross_monthly"])
Enter fullscreen mode Exit fullscreen mode

4. Production tips

  • Backoff on 429 — respect RapidAPI quotas
  • Disclaimer in UI — planning estimates, not legal payroll advice
  • AI agents → MCP server on MCPize

Try it

Built by RoviDev. Cross-posted from rovidev.com.

Top comments (0)