Services / APIs
One integration for every official lookup you need.
One integration for every lookup against official Peruvian sources. We keep the connection to each authority working; you get stable JSON.
X-API-Key: tu_token
GET /api/sunat/consulta-ruc/20123456789 200 OK {
"numero": "20123456789",
"nombre_o_razon_social": "EMPRESA DE EJEMPLO S.A.C.",
"tipo_contribuyente": "SOCIEDAD ANONIMA CERRADA",
"nombre_comercial": "EJEMPLO",
…
} - SUNAT tax ID, taxpayer status and exchange rate
- MTC carrier registry, certificates and plates
- MINEM REINFO, mining formalisation
- And whichever you need we integrate new sources on request
Why a platform?
The hard part isn't the first lookup. It's the hundredth.
Public bodies don't publish stable APIs: they change their portals without warning. Keeping those connections alive is continuous work, and it's the work we do.
-
One integration, every source
The same authentication and the same response shape for every lookup. Integrate once and add sources without touching your code.
-
We deal with the paperwork
Public bodies don't publish APIs: their portals have to be read. When they change the HTML, we fix it and your integration keeps working.
-
You don't pay twice for the same data
Lookups whose data doesn't change daily are served from cache. Repeating a recent lookup doesn't count against your plan.
-
Usage control and audit trail
Per-application tokens, per-plan quota and a record of every lookup: what was asked, when, and what came back.
-
Missing the one you need?
We integrate new sources on request. If your process depends on a public portal, we can turn it into an endpoint.
-
We run on it too
Our own ERP uses this platform to validate tax IDs, plates and registrations. It isn't a product we sell without using.
How to integrate
One header and one HTTP request.
No SDK, no dependencies. Every lookup is requested the same way, so adding one doesn't change your code.
- Request your token. We give you access to the dashboard to generate it.
- Add the header. Either one works. The token is generated from the client dashboard.
- Query. This request already works.
X-API-Key: tu_tokenAuthorization: Bearer tu_token
curl -X GET "https://api.perusoftware.dev/api/sunat/consulta-ruc/20123456789" \
-H "X-API-Key: tu_token" Available today
10 lookups in production.
The catalogue keeps growing. Every plan includes all of them, so a new lookup doesn't change what you pay.
Tax ID lookup
Full taxpayer record: legal name, status, condition, registered address, economic activities and registers.
What it's for: Fill in a new customer's details from their tax ID, without anyone typing them.
Docs and live testerQuick look
Request
curl -X GET "https://api.perusoftware.dev/api/sunat/consulta-ruc/20123456789" \
-H "X-API-Key: tu_token" -
ruc11-digit tax ID (RUC) · in the path
Response
{
"numero": "20123456789",
"nombre_o_razon_social": "EMPRESA DE EJEMPLO S.A.C.",
"tipo_contribuyente": "SOCIEDAD ANONIMA CERRADA",
"nombre_comercial": "EJEMPLO",
"estado": "ACTIVO",
"condicion": "HABIDO",
"fecha_inscripcion": "12/03/2015",
"direccion": "AV. EJEMPLO NRO 123 URB. MODELO",
"departamento": "LIMA",
"provincia": "LIMA",
"distrito": "MIRAFLORES",
"actividades_economicas": {
"principal": "6201 - PROGRAMACION INFORMATICA",
"secundarias": []
},
"es_buen_contribuyente": false,
"es_agente_de_retencion": false
} Values are examples; field names are the real ones.
Exchange rate
SUNAT's official exchange rate, buy and sell per day. Queried by whole month, not by single date.
What it's for: Convert dollar amounts to soles using the official rate for the day of the transaction.
Docs and live testerQuick look
Request
curl -X POST "https://api.perusoftware.dev/api/sunat/tipo-cambio" \
-H "X-API-Key: tu_token"
-H "Content-Type: application/json" \
-d '{ "anio": "2026", "mes": "8" }' -
anioYear to query · in the body -
mesMonth, 1 to 12 · in the body
Response
{
"resultado": [
{ "fecha": "01-08-2026", "compra": 3.752, "venta": 3.759 },
{ "fecha": "02-08-2026", "compra": 3.748, "venta": 3.755 }
]
} Values are examples; field names are the real ones.
MTC registration
Registration codes active at the Ministry of Transport for a given tax ID.
What it's for: Verify that a carrier's registration is current before hiring them.
Docs and live testerQuick look
Request
curl -X POST "https://api.perusoftware.dev/api/mtc/registro" \
-H "X-API-Key: tu_token"
-H "Content-Type: application/json" \
-d '{ "ruc": "20123456789" }' -
rucCompany tax ID (RUC) · in the body
Response
{
"registros_habilitados": ["0000123", "0000456"]
} Values are examples; field names are the real ones.
MTC certificate
Details of the transport certificate tied to a specific plate.
What it's for: Check a vehicle's technical details before assigning it a load.
Docs and live testerQuick look
Request
curl -X POST "https://api.perusoftware.dev/api/mtc/constancia" \
-H "X-API-Key: tu_token"
-H "Content-Type: application/json" \
-d '{ "ruc": "20123456789", "registro": "0001234", "placa": "ABC-123" }' -
rucCompany tax ID (RUC) · in the body -
registroMTC registration code · in the body -
placaVehicle plate · in the body
Response
{
"item": "1",
"placa": "ABC-123",
"nro_constancia": "0001234-2026",
"categoria": "N3",
"serie_chasis": "9BWZZZ00ZTT000000",
"fabricacion": "2019",
"nro_ejes": "3",
"carga_util": "18000",
"peso_seco": "9000"
} Values are examples; field names are the real ones.
REINFO
MINEM's mining formalisation registry. Returns the mining rights tied to a tax ID and their status.
What it's for: Check whether a mining supplier is registered and where their formalisation stands.
Docs and live testerQuick look
Request
curl -X GET "https://api.perusoftware.dev/api/reinfo/20123456789" \
-H "X-API-Key: tu_token" -
rucHolder's tax ID · in the path
Response
{
"registros": [
{
"sec": "1",
"ruc": "20123456789",
"nombre": "MINERA DE EJEMPLO S.A.C.",
"codigo_unico": "010012345",
"derecho": "CONCESION DE EJEMPLO 1",
"departamento": "AREQUIPA",
"provincia": "CAYLLOMA",
"distrito": "CAYLLOMA",
"estado": "VIGENTE"
}
]
} Values are examples; field names are the real ones.
Also available
They work like the ones above and use the same token. Detailed documentation is coming in the next release.
- SUNAT GET Legal representatives Registered legal representatives of a taxpayer.
- SUNAT GET Enforced tax debt Debt under enforced collection registered against a tax ID.
- SUNAT POST Printable tax ID record The same record, returned as HTML ready to print or attach.
- SUNAT POST Printable enforced debt report The enforced-debt lookup as HTML ready to print.
- REINFO POST Printable REINFO report The REINFO lookup as HTML ready to print.
Need one that isn't here? If your process depends on a public portal, we can turn it into one more endpoint in the same integration. Tell us which one.
Plans
You pay for volume, not per API.
Every plan includes every lookup, the ones available today and the ones added later. The only difference is how many you can make.
Free
Free
300 lookups · 30 days
To integrate at your own pace and see if it fits.
- Every source, nothing held back
- Lookup history
- Email support
Starter
S/ 19.00/mo
S/ 190.00 per year −17% off
12,000 lookups · 30 days
S/ 0.0016 per lookup
Accounting practices and teams validating customers daily.
- Every source, nothing held back
- MTC and REINFO included
- Printable HTML records
- Lookup history
- WhatsApp support
Business
S/ 35.00/mo
S/ 350.00 per year −17% off
40,000 lookups · 30 days
S/ 0.0009 per lookup
Form validation, customer onboarding and recurring MTC or REINFO lookups.
- Every source, nothing held back
- MTC and REINFO included
- Printable HTML records
- Lookup history
- WhatsApp support
Corporate
S/ 65.00/mo
S/ 650.00 per year −17% off
120,000 lookups · 30 days
S/ 0.0005 per lookup
High volume, batch processing and portfolio clean-up.
- Every source, nothing held back
- MTC and REINFO included
- Printable HTML records
- Lookup history
- WhatsApp support
Prices exclude Peruvian VAT (IGV).
When the quota runs out, the service returns 429 and lookups stop until you renew. There is no per-lookup overage charge yet.
Rather we do the integration?
The plans give you API access, which means someone on your side writes the integration. If there is nobody to do it, we do it and leave it running inside your system — your ERP, your website or whatever software you already use.
Quoted case by case, depending on the system and which lookups need wiring in.
Ask for a quotePayment
Pay from your phone and we activate your token.
No payment gateway in between and no surcharge for paying: send the money by Yape, Plin or bank transfer, send us the receipt and we activate your token.
1. What you're paying for
Pick the plan and how often you renew. The total already includes Peruvian VAT.
2. How you pay it
The amount is never pre-filled: type it exactly and the payment matches first time.
You're paying
Reference
Add it to the payment note: it's what lets us recognise the payment without asking you.
Pick the plan and period above to see the exact amount.
Yape / Plin
No feesShow the details
- Phone number
- +51 929 766 373
- Account name
- Carlos Daniel De La Cruz Galvan
The QR is Yape's. From Plin — BBVA, Interbank, Scotiabank and the cajas — search for the number instead. Check the name before confirming.
BCP
No fees from BCPShow the details
- Account (PEN)
- 25595400323098
- CCI (interbank code)
- 00225519540032309881
- Account holder
- Carlos Daniel De La Cruz Galvan
From another bank use the CCI: the transfer still arrives, usually the same day.
Interbank
No fees from InterbankShow the details
- Simple account (PEN)
- 8983216258748
- CCI (interbank code)
- 00389801321625874840
- Account holder
- Carlos Daniel De La Cruz Galvan
From another bank use the CCI: the transfer still arrives, usually the same day.
3. Tell us
Activation isn't automatic: we check the payment and enable the token by hand, during business hours.
or email us at contacto@perusoftware.pe
Monday to Friday, 10:00 – 17:00 (GMT-5)
We will never ask for passwords, verification codes or card details. The payment goes from your app to the company account; this page never handles it.
We issue an electronic invoice for every payment.
Reference
What it can answer.
The same status codes for every lookup. Worth handling from the start, not the first time one shows up in production.
- 200 OK Lookup resolved. Counts one request against the plan.
- 401 Invalid or expired token The authentication header is missing or the token isn't valid.
- 403 No access The plan doesn't cover this service, or the subscription isn't active.
- 404 Not found The lookup ran but returned nothing. It still counts.
- 429 Limit reached The period's lookups have run out.
- 500 Service error The official source failed to answer. Nothing is cached.
Shall we try it with your case?
Tell us what you need to look up. We'll give you trial access so you can validate the integration before paying.
Message us on WhatsApp