Skip to main content
POST
Submit a payroll run
Preview. A contract we are building with design partners. It is not callable yet, and fields can still change. See Availability.
Melso does not recalculate the payslips. It validates them against each employee’s affiliation and contribution bases, then uses them for three things:
  • the month’s Social Security contribution settlement (liquidación directa) and its CRA data,
  • the work-income boxes of the modelo 111, and the employee records (key A) of the year’s modelo 190,
  • each employee’s annual withholding certificate.
Send a second run with kind supplementary for arrears or late corrections of an earlier month.

Authorizations

Authorization
string
header
required

Your partner secret key, mk_live_… for real companies or mk_test_… for test companies. Keep it on your servers. See Authentication.

Headers

Idempotency-Key
string

A unique key, such as a UUID, that makes a retried create safe. Reusing a key with a different body is refused.

Maximum string length: 255

Path Parameters

company_id
string<uuid>
required

The company's ID. Every company-scoped call works in exactly this company.

Body

application/json
period
string
required

The month the pay accrues to, such as 2026-10.

Pattern: ^[0-9]{4}-(0[1-9]|1[0-2])$
kind
enum<string>
required

extra for a paga extraordinaria paid apart; supplementary for arrears or a correction of an earlier month.

Available options:
ordinary,
extra,
supplementary
payment_date
string<date>
required
payslips
object[]
required
Minimum array length: 1
external_id
string

Your ID for the run.

Response

The run, received. Validation results arrive in issues and with the payroll_run.validated event.

id
string<uuid>
required
period
string
required
kind
enum<string>
required
Available options:
ordinary,
extra,
supplementary
status
enum<string>
required

validated: usable for the settlement and the returns. rejected: see issues. settled: the month's contribution settlement is confirmed.

Available options:
received,
validated,
rejected,
settled
created_at
string<date-time>
required
external_id
string | null
totals
object
issues
object[]
settlement_id
string<uuid> | null
tax_return_ids
string<uuid>[]

The 111 (and, in January, the 190) this run feeds.