A1 form — Posting to the EU / EEA / Switzerland / United Kingdom / Gibraltar
Add test=1 to run tests without real effects. In production, omit this parameter.
Registers a new posting period for a worker and generates the PDA1 certificate.
Common parameters
- test (number (1)) : For testing, add the test=1 parameter. It must be omitted in production.
- regimen (integer) : Scheme, 4 digits. Possible values:
- 0111: General Scheme
- Table of scheme codes (opens in a new tab)
- ccc (integer) : Contribution account code, 11 digits.
- dni (string) : Worker's identity document.
- nss (integer) : Social Security number, 12 digits.
- desde (date) : Start of the posting, format YYYY-MM-DD. The RED System only accepts dates within a ±90 day window of the current date; the endpoint rejects the request before reaching RED if the date falls outside that range.
- hasta (date) : End of the posting, format YYYY-MM-DD. Must be ≥
desdeand ≤ 90 days from today. - paises (array of strings) : 3-digit numeric ISO 3166-1 codes. For types 1, 2 and 4, send it with a single element (the array keeps a minimum of 1 country).
- 724: Spain
- Table of country codes (opens in a new tab).
- tipo_desplazamiento (integer) : Posting type. Possible values:
- 1: A single country, period not exceeding 24 months. Send
tipo_desplazamiento_1. - 2: A single country, period exceeding 24 months. Send
tipo_desplazamiento_2. - 3: Two or more Member States (EU/EEA/Switzerland/United Kingdom). Send
tipo_desplazamiento_3. - 4: Civil servant, air crew or special maritime scheme. Send
tipo_desplazamiento_4.
- 1: A single country, period not exceeding 24 months. Send
Sub-object tipo_desplazamiento_1 (a single country, < 24 months)
Required when tipo_desplazamiento = 1.
- vinculacion_directa_empresa_espanola (S | N) : Does the worker maintain a direct link with the Spanish company only? Mandatory.
- sujeto_solo_seguridad_espanola (S | N) : Is the worker subject to Spanish Social Security only? Mandatory.
- enviado_por_empresa_o_teletrabajo (S | N) : Sent by their company or under a remote-working authorisation? Mandatory.
- opcion_actividad (integer) : Place where the activity will be carried out. Mandatory. Possible values:
- 1: At a specific company, address or workplace (requires sending the
lugar_actividadobject described below). - 2: There is no fixed address for the activity.
- 1: At a specific company, address or workplace (requires sending the
- sustitucion_persona_desplazada (S | N) : Is the worker being sent to replace another person previously posted who has already returned? Mandatory.
- residente_espana_contratado_temporal (S | N) : Has the worker resided in Spain in the month before the start of the posting, been hired in Spain, and is this a temporary situation of less than 24 months? Optional. Only applies when
sustitucion_persona_desplazada = Nand only if TGSS presents the question on that screen; otherwise it is ignored. - primer_contrato_espana (S | N) : Has the worker resided in Spain in the month before the start of the posting, and is this their first contract in Spain? Optional. Only applies when
residente_espana_contratado_temporal = Nand only if TGSS presents the question on that screen; otherwise it is ignored.
Object lugar_actividad (only when opcion_actividad = 1)
If tipo_desplazamiento_1.opcion_actividad = 1, the lugar_actividad sub-object must be sent with the posting address. If opcion_actividad = 2, this object is not sent.
- denominacion (string, max 75) : Name of the destination company or workplace. Mandatory.
- nombre_via (string, max 35) : Street name. Mandatory.
- numero (string, max 4) : Number. Optional.
- poblacion (string, max 10) : Town / locality. Mandatory.
- codigo_postal (string, max 8) : Postal code. Optional.
- pais_destino (string, 3 digits) : Numeric ISO 3166-1 code of the destination country. Mandatory.
Sub-object tipo_desplazamiento_3 (activity in two or more Member States)
Required when tipo_desplazamiento = 3.
- reside_en_espana (S | N) : Does the worker reside in Spain? Mandatory.
- tipo_actividad_residente (integer) : Type of activity of the resident worker. Required if
tipo_desplazamiento_3.reside_en_espana = S. Possible values:- 1: Employed work only.
- 2: Employed and self-employed work in different States.
- 3: Civil servant carrying out employed/self-employed work in another State or States.
- actividad_25_porciento_espana (S | N) : Required if
tipo_desplazamiento_3.tipo_actividad_residente = 1. - actividad_empresas_otros_estados (S | N) : Required if
tipo_desplazamiento_3.actividad_25_porciento_espana = S. - tipo_contratacion_menos_25 (integer) : Worker's type of engagement (when they do not carry out at least 25% of the activity in Spain). Required if
tipo_desplazamiento_3.actividad_25_porciento_espana = N. Possible values:- 1: One company based in Spain.
- 2: Two or more companies based in Spain.
- 3: Two or more companies, at least two of them based in Member States other than Spain.
- opcion_desplazamiento (S | N) : Do the company's place of activity and the worker's place of residence coincide at the same location? Mandatory.
Sub-object tipo_desplazamiento_4 (civil servant, air crew or special maritime scheme)
Required when tipo_desplazamiento = 4.
- tipo_funcionario_mar_aereo (integer) : Worker category. Mandatory. Possible values:
- 1: Civil servant.
- 2: Air crew.
- 3: Special Maritime Scheme (on board a vessel).
- reside_espana_salario_empresa_espanola (S | N) : Required if
tipo_desplazamiento_4.tipo_funcionario_mar_aereo = 3. Does the worker reside in Spain and is the salary paid by a Spanish company?
Example — tipo_desplazamiento = 1 with opcion_actividad = 2
{
"test": 1,
"regimen": "0111",
"ccc": "12345678901",
"dni": "12345678Z",
"nss": "123456789012",
"tipo_desplazamiento": 1,
"desde": "2026-06-10",
"hasta": "2026-06-30",
"paises": ["056"],
"tipo_desplazamiento_1": {
"vinculacion_directa_empresa_espanola": "S",
"sujeto_solo_seguridad_espanola": "S",
"enviado_por_empresa_o_teletrabajo": "S",
"opcion_actividad": 2,
"sustitucion_persona_desplazada": "N",
"residente_espana_contratado_temporal": "S"
}
}Example — tipo_desplazamiento = 1 with opcion_actividad = 1
{
"test": 1,
"regimen": "0111",
"ccc": "12345678901",
"dni": "12345678Z",
"nss": "123456789012",
"tipo_desplazamiento": 1,
"desde": "2026-06-10",
"hasta": "2026-06-30",
"paises": ["056"],
"tipo_desplazamiento_1": {
"vinculacion_directa_empresa_espanola": "S",
"sujeto_solo_seguridad_espanola": "S",
"enviado_por_empresa_o_teletrabajo": "S",
"opcion_actividad": 1,
"lugar_actividad": {
"denominacion": "Empresa destino BVBA",
"nombre_via": "Rue de la Loi",
"numero": "16",
"poblacion": "Bruselas",
"codigo_postal": "1040",
"pais_destino": "056"
},
"sustitucion_persona_desplazada": "N"
}
}Example — tipo_desplazamiento = 3 (multiple countries)
{
"test": 1,
"regimen": "0111",
"ccc": "12345678901",
"dni": "12345678Z",
"nss": "123456789012",
"tipo_desplazamiento": 3,
"desde": "2026-06-10",
"hasta": "2026-06-30",
"paises": [
"276", "040", "056", "208", "724", "250", "348",
"380", "442", "578", "528", "616", "620", "203",
"642", "752"
],
"tipo_desplazamiento_3": {
"reside_en_espana": "S",
"tipo_actividad_residente": 1,
"actividad_25_porciento_espana": "S",
"actividad_empresas_otros_estados": "N",
"opcion_desplazamiento": "N"
}
}Successful response
The RED System returns the PDA1 as a PDF (base64-encoded) when the submission is accepted.
{
"success": true,
"message": "Con los datos introducidos se ha procedido a tramitar correctamente el desplazamiento y a generar el PDA1. Dicho documento estará a su disposición en un plazo de 24/48 horas a través de comunicación en SEDE ELECTRÓNICA.",
"status": 200,
"data": {
"file": {
"contentType": "application/pdf",
"name": "document.pdf",
"content": "base64"
}
}
}Response 409 — A1 not generated but a supporting document is available
In some cases the RED System rejects the issuing of the PDA1 but still issues a downloadable posting supporting document. The most common case is error 4224 (the requested period fully or partially overlaps another posting already recorded): the A1 is not generated and it must be processed through the Electronic Office (form TA/300), but the RED System generates a supporting document that must be attached to that application.
In that case the endpoint responds with HTTP 409 Conflict:
success:false.status:409.message: the RED System messages joined by. #(includes code4224and the notice that a supporting document was generated).data.a1_generado:false— the PDA1 has not been issued.data.justificante_generado:true— a downloadable supporting document is available.data.file: the posting supporting document as a PDF (base64).
{
"success": false,
"message": "4224 El periodo coincide total o parcialmente con otro ya anotado. Con los datos introducidos por usted no es posible la obtención del PD A1 a través de este servicio RED. Tiene que presentar la solicitud través del servicio de SEDE ELECTRONICA: Trabajadores Desplazados Modelo TA/300. Para justificar la realización a través de SEDE ELECTRONICA, deberá adjuntar el justificante que se ha emitido.. # No se ha podido generar el A1.. # Justificante generado correctamente. Pulse el enlace para abrirlo.. # Se recomienda guardar el PDF antes de imprimirlo por si tiene problemas con la impresora.",
"status": 409,
"data": {
"a1_generado": false,
"justificante_generado": true,
"file": {
"contentType": "application/pdf",
"name": "document.pdf",
"content": "base64"
}
}
}Identify this case by status 409 and the data.justificante_generado = true flag: even though success is false, there is a PDF to download in data.file (the supporting document to attach at the Electronic Office). A technical failure of the RED System, by contrast, does not include data.file.
Response with RED System warnings
When the RED System responds with validation messages (warnings to the user), success will be false and message will join the warnings separated by . # .
{
"success": false,
"message": "El periodo solicitado solapa con otro desplazamiento ya tramitado. # Revise las fechas indicadas.",
"status": 200,
"data": []
}