Skip to content
Constaia
es_payslip

Spanish payslip (nómina)

Spanish payslip: employer (tax ID, contribution account code), employee (NIF, social security number), period, earnings, deductions, net pay, income tax withholding rate and contribution bases.

Category
Employment
Country
Spain
Extracted fields
14 fields
Cost
1 credit
es_payslipspecimen
Company
Employee
Period start
Period end
Days
Accruals
Total accrued
Deductions
Total deductions

What it checks

  • National identifiers. Official checksum or format of the number (NIF, CPF, CURP, RUT, SSN…).es_nif, es_nif, iban
  • Holder. Name, number or date of birth match what you expect.
  • Recency. Issued less than N days ago.
  • IBAN. ISO 13616 check digits and length per country.

Extracted fields

  • Companycompany
  • Employeeemployee
  • Period startperiod_start
  • Period endperiod_end
  • Daysdays
  • Accrualsaccruals
  • Total accruedtotal_accrued
  • Deductionsdeductions
  • Total deductionstotal_deductions
  • Net paynet_pay
  • Irpf percentirpf_percent
  • Contribution basescontribution_bases
  • Payment datepayment_date
  • IBANiban

Sample request

curl https://api.constaia.com/v1/analyze \
  -H "Authorization: Bearer $CONSTAIA_API_KEY" \
  -F "file=@document.pdf" \
  -F 'options={
    "expect": "es_payslip",
    "checks": {
      "max_age_days": 90,
      "holder": {
        "full_name": "Carmen Especimen Ruiz"
      }
    },
    "storage": "none"
  }'

Sample response

Fictitious data. Shortened response.

200 OK · application/json
{
  "id": "an_01J9Z3K8QW4T6Y2B7N5M1R0PXC",
  "object": "analysis",
  "status": "completed",
  "livemode": false,
  "document": {
    "type": "es_payslip",
    "label": "Spanish payslip (nómina)",
    "confidence": 0.97
  },
  "verdict": {
    "expected": [
      "es_payslip"
    ],
    "match": true,
    "status": "valid",
    "reasons": [
      {
        "code": "type_match",
        "severity": "info",
        "message": "The document is: Spanish payslip (nómina)."
      }
    ]
  },
  "fields": {
    "company": {
      "value": {
        "name": "ESPECIMEN S.L.",
        "tax_id": "B12345674",
        "address": "C/ MAYOR 1, 28013 MADRID",
        "ccc": "28123456789"
      },
      "confidence": 0.99,
      "validated": true
    },
    "employee": {
      "value": {
        "name": "JUAN ESPAÑOL ESPAÑOL",
        "tax_id": "99999999R",
        "social_security_number": "281234567840",
        "category": "Técnico"
      },
      "confidence": 0.98,
      "validated": null
    },
    "period_start": {
      "value": "2026-08-01",
      "confidence": 0.97,
      "validated": null
    },
    "period_end": {
      "value": "2026-08-31",
      "confidence": 0.96,
      "validated": null
    },
    "days": {
      "value": 30,
      "confidence": 0.99,
      "validated": null
    },
    "accruals": {
      "value": [
        {
          "concept": "Salario base",
          "amount": 1800
        },
        {
          "concept": "Prorrata pagas extra",
          "amount": 300
        }
      ],
      "confidence": 0.98,
      "validated": null
    },
    "total_accrued": {
      "value": 2100,
      "confidence": 0.97,
      "validated": null
    },
    "deductions": {
      "value": [
        {
          "concept": "Contingencias comunes 4,83 %",
          "amount": 101.43
        },
        {
          "concept": "Desempleo 1,55 %",
          "amount": 32.55
        },
        {
          "concept": "Formación profesional 0,10 %",
          "amount": 2.1
        },
        {
          "concept": "IRPF 12 %",
          "amount": 252
        }
      ],
      "confidence": 0.96,
      "validated": null
    },
    "total_deductions": {
      "value": 388.08,
      "confidence": 0.99,
      "validated": null
    },
    "net_pay": {
      "value": 1711.92,
      "confidence": 0.98,
      "validated": null
    },
    "irpf_percent": {
      "value": 12,
      "confidence": 0.97,
      "validated": null
    },
    "contribution_bases": {
      "value": {
        "common": 2100,
        "professional": 2100,
        "irpf": 2100
      },
      "confidence": 0.96,
      "validated": null
    },
    "payment_date": {
      "value": "2026-08-31",
      "confidence": 0.99,
      "validated": null
    }
  },
  "checks": [
    {
      "code": "id_number",
      "passed": true,
      "message": "id_number"
    },
    {
      "code": "iban_checksum",
      "passed": true,
      "message": "iban_checksum"
    }
  ],
  "warnings": [],
  "storage": {
    "mode": "none",
    "file_deleted_at": "2026-09-29T10:00:02Z",
    "expires_at": null
  },
  "usage": {
    "credits": 1,
    "pages": 1
  }
}

FAQ

Does Constaia prove the document is authentic?

No. It checks the type, data consistency and your rules, and flags signals such as a possible edit or a screen photo. That does not prove authenticity.

Is a copy of the document kept?

No, unless you ask for it. With storage "none" (the default) the file is deleted when the analysis ends.

Other documents

And for the record…

Create your account, copy the test key and validate your first document in five minutes.