---
title: "Restamp rejected receipt"
description: "Stamps a rejected receipt again once the employee's data is corrected: it is recalculated and queued, keeping its CFDI draft and folio unless the employee's RFC or tax regime changed. If it no longer calculates as ready, or its net changed, it needs attention instead. Returns 202 with the receipt."
language: en
canonical_url: "https://exac.mx/docs/en/api/documents/payroll/restamp-payroll-row"
md_url: "https://exac.mx/docs/en/api/documents/payroll/restamp-payroll-row.md"
---

# Restamp rejected receipt

Stamps a rejected receipt again once the employee's data is corrected: it is recalculated and queued, keeping its CFDI draft and folio unless the employee's RFC or tax regime changed. If it no longer calculates as ready, or its net changed, it needs attention instead. Returns 202 with the receipt.

## Request

`POST /v1/payroll/rows/{rowId}/restamp`

- **Authorization:** Required permissions: `employees:manage`, `invoices:manage`.

- **Environments:** Production and sandbox

- **Idempotency:** Required

## Canonical machine contract

This fragment is generated from the canonical operation and Zod contracts used by the route.

```json
{
  "method": "POST",
  "path": "/v1/payroll/rows/{rowId}/restamp",
  "operation": {
    "operationId": "restampPayrollRow",
    "tags": [
      "Payroll"
    ],
    "summary": "Restamp rejected receipt",
    "description": "Stamps a rejected receipt again once the employee's data is corrected: it is recalculated and queued, keeping its CFDI draft and folio unless the employee's RFC or tax regime changed. If it no longer calculates as ready, or its net changed, it needs attention instead. Returns 202 with the receipt.",
    "security": [
      {
        "bearerAuth": []
      }
    ],
    "parameters": [
      {
        "name": "rowId",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "minLength": 1,
          "description": "rowId of a receipt, as listed in its run's receipts."
        }
      },
      {
        "name": "Idempotency-Key",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "description": "Unique retry key for this exact operation. Reuse it only when retrying the same request."
      }
    ],
    "requestBody": {
      "required": false,
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "example": {}
        }
      }
    },
    "responses": {
      "202": {
        "description": "Operation completed.",
        "headers": {
          "Request-Id": {
            "$ref": "#/components/headers/RequestId"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "data": {
                  "$ref": "#/components/schemas/PayrollRowDetail"
                }
              },
              "required": [
                "data"
              ],
              "additionalProperties": false
            },
            "example": {
              "data": {
                "rowId": "payroll-row-example",
                "runId": "payroll-run-example",
                "employeeId": "employee-example",
                "employeeName": "Persona Ejemplo",
                "employeeTaxId": "EJE010101AAA",
                "state": "queued",
                "omitted": false,
                "source": "calculated",
                "issues": [],
                "paidDays": 7,
                "totals": {
                  "gross": 4291.37,
                  "deductions": 374.09,
                  "net": 3917.28,
                  "isr": 268.41,
                  "subsidy": 0,
                  "imss": 105.68
                },
                "updatedAt": "2026-09-21T15:00:05.000Z",
                "earnings": [
                  {
                    "type": "001",
                    "code": "001",
                    "description": "Sueldo",
                    "taxableAmount": 4291.37,
                    "exemptAmount": 0
                  }
                ],
                "deductions": [
                  {
                    "type": "001",
                    "code": "001",
                    "description": "IMSS",
                    "amount": 105.68
                  },
                  {
                    "type": "002",
                    "code": "002",
                    "description": "ISR",
                    "amount": 268.41
                  }
                ],
                "otherPayments": [],
                "lastReceiptSalaryAvailable": false
              }
            }
          }
        }
      },
      "400": {
        "description": "Invalid request.\n\n`validation_error`",
        "headers": {
          "Request-Id": {
            "$ref": "#/components/headers/RequestId"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      },
      "401": {
        "description": "Missing or invalid credential.\n\n`unauthenticated`",
        "headers": {
          "Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "WWW-Authenticate": {
            "$ref": "#/components/headers/WWWAuthenticate"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      },
      "402": {
        "description": "Insufficient prepaid balance or an unmet billing requirement.\n\n`payment_required`",
        "headers": {
          "Request-Id": {
            "$ref": "#/components/headers/RequestId"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      },
      "403": {
        "description": "The credential does not satisfy the required authorization. Required permissions: `employees:manage`, `invoices:manage`.\n\n`forbidden`",
        "headers": {
          "Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "WWW-Authenticate": {
            "$ref": "#/components/headers/WWWAuthenticate"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      },
      "404": {
        "description": "Resource not found.\n\n`not_found`",
        "headers": {
          "Request-Id": {
            "$ref": "#/components/headers/RequestId"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      },
      "405": {
        "description": "Method not allowed.\n\n`method_not_allowed`",
        "headers": {
          "Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Allow": {
            "$ref": "#/components/headers/Allow"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      },
      "409": {
        "description": "State, environment, or idempotency conflict. Use error.code to determine recovery.\n\nPossible codes: `conflict`, `idempotency_conflict`, `operation_in_progress`, `recovery_required`, `migration_required`.",
        "headers": {
          "Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Retry-After": {
            "$ref": "#/components/headers/RetryAfter"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      },
      "429": {
        "description": "Too many requests.\n\n`rate_limited`",
        "headers": {
          "Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Retry-After": {
            "$ref": "#/components/headers/RetryAfter"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      },
      "500": {
        "description": "Internal server error.\n\n`internal`",
        "headers": {
          "Request-Id": {
            "$ref": "#/components/headers/RequestId"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      },
      "503": {
        "description": "Service temporarily unavailable.\n\n`provider_unavailable`",
        "headers": {
          "Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Retry-After": {
            "$ref": "#/components/headers/RetryAfter"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      }
    },
    "x-exac-environments": [
      "production",
      "sandbox"
    ]
  },
  "components": {
    "schemas": {
      "ApiError": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ProgrammaticError"
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": false
      },
      "ProgrammaticError": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "validation_error",
              "unauthenticated",
              "forbidden",
              "payment_required",
              "not_found",
              "method_not_allowed",
              "conflict",
              "idempotency_conflict",
              "operation_in_progress",
              "recovery_required",
              "migration_required",
              "rate_limited",
              "provider_unavailable",
              "internal"
            ],
            "description": "Recommended action by code:\n\n- `validation_error` — Correct the request using error.message and, when present, details.issues paths and codes.\n- `unauthenticated` — Provide a valid API key or OAuth access token.\n- `forbidden` — Use a credential with the required permission.\n- `payment_required` — For details.reason = api_wallet_insufficient, add prepaid API/MCP credit using details.topUpUrl; balanceMinor is the balance in centavos. Otherwise review the billing requirement. Retry only after it is resolved.\n- `not_found` — Check the organization-scoped resource identifier.\n- `method_not_allowed` — Use the documented HTTP method.\n- `conflict` — Refresh the resource and resolve its current state.\n- `idempotency_conflict` — Use a new idempotency key for a changed request.\n- `operation_in_progress` — Wait for Retry-After, then repeat the exact request.\n- `recovery_required` — Do not retry automatically or change the idempotency key. Retrieve details.document.documentRef when present, verify the outcome, and contact support with Request-Id if it remains uncertain.\n- `migration_required` — Contact support to complete historical document migration; do not reissue the document.\n- `rate_limited` — Wait for Retry-After before retrying.\n- `provider_unavailable` — Retry only when the response marks the failure as retryable.\n- `internal` — A failed response does not prove that a write had no effect. Retry a read after backoff; retry a write only with its original idempotency key and unchanged request. Contact support with Request-Id if it persists."
          },
          "message": {
            "type": "string"
          },
          "details": {
            "type": "object",
            "properties": {
              "document": {
                "type": "object",
                "properties": {
                  "documentRef": {
                    "$ref": "#/components/schemas/DocumentRef"
                  },
                  "editable": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "documentRef",
                  "editable"
                ],
                "additionalProperties": false
              },
              "issues": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "path": {
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          }
                        ]
                      }
                    },
                    "message": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "path",
                    "message"
                  ],
                  "additionalProperties": false
                }
              },
              "retryable": {
                "type": "boolean"
              },
              "retryAfterSeconds": {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "reason": {
                "type": "string"
              },
              "balanceMinor": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "topUpUrl": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "status": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "code",
          "message",
          "status"
        ],
        "additionalProperties": false
      },
      "DocumentRef": {
        "type": "string",
        "pattern": "^(invoice|withholding|sales_receipt|declaration|tax_compliance_opinion|sales_receipt_refund):.+$"
      },
      "PayrollRowDetail": {
        "type": "object",
        "properties": {
          "rowId": {
            "type": "string"
          },
          "runId": {
            "type": "string"
          },
          "employeeId": {
            "type": "string"
          },
          "employeeName": {
            "type": "string"
          },
          "employeeTaxId": {
            "description": "Absent once the employee was deleted.",
            "type": "string"
          },
          "state": {
            "type": "string",
            "enum": [
              "ready",
              "needs_attention",
              "excluded",
              "queued",
              "stamping",
              "stamped",
              "rejected",
              "canceled"
            ]
          },
          "omitted": {
            "type": "boolean",
            "description": "True while a person omitted the receipt (state excluded): it stays out of the nómina, also when its employee leaves the roster and returns, until a person includes it again."
          },
          "source": {
            "type": "string",
            "enum": [
              "calculated",
              "manual"
            ]
          },
          "issues": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/PayrollIssueCode"
                },
                "field": {
                  "type": "string"
                }
              },
              "required": [
                "code"
              ],
              "additionalProperties": false
            }
          },
          "paidDays": {
            "type": "number"
          },
          "totals": {
            "type": "object",
            "properties": {
              "gross": {
                "type": "number"
              },
              "deductions": {
                "type": "number"
              },
              "net": {
                "type": "number"
              },
              "isr": {
                "type": "number"
              },
              "subsidy": {
                "type": "number"
              },
              "imss": {
                "type": "number"
              }
            },
            "required": [
              "gross",
              "deductions",
              "net",
              "isr",
              "subsidy",
              "imss"
            ],
            "additionalProperties": false
          },
          "documentRef": {
            "type": "string"
          },
          "uuid": {
            "type": "string"
          },
          "rejectionCode": {
            "type": "string"
          },
          "errorCode": {
            "$ref": "#/components/schemas/PayrollIssueCode"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/Instant"
          },
          "earnings": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "code": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "taxableAmount": {
                  "type": "number"
                },
                "exemptAmount": {
                  "type": "number"
                }
              },
              "required": [
                "type",
                "code",
                "taxableAmount",
                "exemptAmount"
              ],
              "additionalProperties": false
            }
          },
          "deductions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "code": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "amount": {
                  "type": "number"
                }
              },
              "required": [
                "type",
                "code",
                "amount"
              ],
              "additionalProperties": false
            }
          },
          "otherPayments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "code": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "amount": {
                  "type": "number"
                },
                "employmentSubsidy": {
                  "type": "number"
                }
              },
              "required": [
                "type",
                "code",
                "amount"
              ],
              "additionalProperties": false
            }
          },
          "explanation": {
            "type": "object",
            "properties": {
              "paidDays": {
                "type": "number"
              },
              "contributionDays": {
                "type": "number"
              },
              "dailyWage": {
                "type": "number"
              },
              "integratedDailySalary": {
                "type": "number"
              },
              "contributionBaseSalary": {
                "type": "number"
              },
              "isrCaused": {
                "type": "number"
              },
              "lines": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "label": {
                      "type": "string"
                    },
                    "amount": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "label",
                    "amount"
                  ],
                  "additionalProperties": false
                }
              },
              "rules": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "key": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "legalBasis": {
                      "type": "string"
                    },
                    "readOn": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "The day it was read on: the payment date, the period's last day or, for the rules of SAT's validation matrix, the day the receipt is stamped."
                    },
                    "validFrom": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "The day its value took effect."
                    },
                    "sourceUrl": {
                      "description": "The official publication its value was read from.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "label",
                    "legalBasis",
                    "readOn",
                    "validFrom"
                  ],
                  "additionalProperties": false
                },
                "description": "The tax rules this calculation read, each once."
              }
            },
            "required": [
              "paidDays",
              "contributionDays",
              "dailyWage",
              "integratedDailySalary",
              "contributionBaseSalary",
              "isrCaused",
              "lines",
              "rules"
            ],
            "additionalProperties": false
          },
          "lastReceiptSalaryAvailable": {
            "type": "boolean",
            "description": "Whether the employee's last ordinary receipt states a salary the employee could take as theirs."
          }
        },
        "required": [
          "rowId",
          "runId",
          "employeeId",
          "employeeName",
          "state",
          "omitted",
          "source",
          "issues",
          "updatedAt",
          "earnings",
          "deductions",
          "otherPayments",
          "lastReceiptSalaryAvailable"
        ],
        "additionalProperties": false
      },
      "Instant": {
        "type": "string",
        "format": "date-time",
        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
      },
      "PayrollIssueCode": {
        "type": "string",
        "enum": [
          "rfc_invalid",
          "tax_system_invalid",
          "postal_code_invalid",
          "curp_invalid",
          "employee_number_invalid",
          "contract_type_invalid",
          "regime_type_invalid",
          "payment_frequency_invalid",
          "unsupported_regime",
          "unsupported_contract",
          "unsupported_frequency",
          "state_code_missing",
          "social_security_number_missing",
          "employment_start_missing",
          "position_risk_missing",
          "integrated_daily_salary_missing",
          "bank_account_invalid",
          "job_title_invalid",
          "department_invalid",
          "work_schedule_type_invalid",
          "contribution_base_salary_invalid",
          "salary_missing",
          "salary_below_minimum_wage",
          "minimum_wage_zone_missing",
          "employer_rfc_missing",
          "employer_registration_missing",
          "employer_curp_missing",
          "invalid_salary",
          "not_employed_in_period",
          "sdi_below_daily_wage",
          "rules_unavailable",
          "negative_net",
          "employee_missing",
          "not_in_roster",
          "period_already_paid",
          "subsidy_line_invalid",
          "subsidy_ceiling_exceeded",
          "subsidy_month_cap_exceeded",
          "invalid_request",
          "amounts_changed",
          "stamp_failed",
          "stamp_unconfirmed"
        ]
      }
    }
  }
}
```

[OpenAPI 3.1](/openapi.json)

## Equivalent MCP tools

- [`stamp_payroll`](/docs/en/mcp/tools/stamp_payroll.md)

Complete documentation: https://exac.mx/docs/en.md
Agent documentation index: https://exac.mx/docs/en/llms.txt
