Introducing PDF tasks for transaction enrollments

ERAs & transaction enrollment

You can now use Stedi's Transaction Enrollment API or the Stedi portal to download, complete, and upload PDF forms during transaction enrollment. Examples of these PDF forms include:

  • Legal agreements with the payer.

  • W-9 tax forms.

  • Bank forms required for EFT enrollment. Some payers require EFT enrollment for ERAs.

If you're building an EHR, RCM, or practice management platform, you can now surface PDF enrollment forms directly in your UI and collect the completed PDFs from providers.

When are PDF enrollment tasks required?

Where possible, Stedi handles transaction enrollment paperwork for you. In many cases, you only need to submit a transaction enrollment request – no other action is needed on your part.

Some payers require providers – and no one else – to complete specific steps to finish enrollment. If these steps require filling out a PDF form, you can now use the Transaction Enrollment API or the Stedi portal to complete them.

Using the Transaction Enrollment API

This release introduces the new provideFilledPdf enrollment task type.

When you retrieve an enrollment using the Retrieve Enrollment API or List Enrollments API endpoints, provideFilledPdf tasks may appear in the tasks array of enrollment records.

Each provideFilledPdf task contains:

  • A unique id for the task.

  • A rank for the task – the order in which the task should be completed.

  • The responsibleParty for completing the task.

  • An isComplete status indicating whether the task is complete.

  • instructions for filling out the PDF.

  • A documentDownloadUrl for the PDF. This URL requires an API key for authentication.

An example object in an enrollment record’s tasks array:

{
  "id": "01937d50-9abc-7890-abcd-567890abcdef",
  "rank": 2,
  "responsibleParty": "PROVIDER",
  "isComplete": false,
  "definition": {
    "provideFilledPdf": {
      "instructions": "Please complete and sign the provider agreement.",
      "documentDownloadUrl": "https://enrollments.us.stedi.com/2024-09-01/documents/019375d0-9876-7890-abcd-567890fedcba/download"
    }
  }
}
{
  "id": "01937d50-9abc-7890-abcd-567890abcdef",
  "rank": 2,
  "responsibleParty": "PROVIDER",
  "isComplete": false,
  "definition": {
    "provideFilledPdf": {
      "instructions": "Please complete and sign the provider agreement.",
      "documentDownloadUrl": "https://enrollments.us.stedi.com/2024-09-01/documents/019375d0-9876-7890-abcd-567890fedcba/download"
    }
  }
}
{
  "id": "01937d50-9abc-7890-abcd-567890abcdef",
  "rank": 2,
  "responsibleParty": "PROVIDER",
  "isComplete": false,
  "definition": {
    "provideFilledPdf": {
      "instructions": "Please complete and sign the provider agreement.",
      "documentDownloadUrl": "https://enrollments.us.stedi.com/2024-09-01/documents/019375d0-9876-7890-abcd-567890fedcba/download"
    }
  }
}

How to complete a PDF task using the API

To complete a provideFilledPdf task using the Transaction Enrollment API, you’ll need the task’s id, instructions, and documentDownloadUrl. Follow these steps:

  1. Make a GET request to the documentDownloadUrl. Pass your production Stedi API key in the Authorization header.

    curl -X GET "https://enrollments.us.stedi.com/2024-09-01/documents/{documentId}/download" \
      -H "Authorization: <api_key>"
    curl -X GET "https://enrollments.us.stedi.com/2024-09-01/documents/{documentId}/download" \
      -H "Authorization: <api_key>"
    curl -X GET "https://enrollments.us.stedi.com/2024-09-01/documents/{documentId}/download" \
      -H "Authorization: <api_key>"


    The response contains a pre-signed S3 downloadUrl.

    {
      "documentId": "019375d0-9876-7890-abcd-567890fedcba",
      "downloadUrl": "https://s3.amazonaws.com/enrollment-documents/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&..."
    }
    {
      "documentId": "019375d0-9876-7890-abcd-567890fedcba",
      "downloadUrl": "https://s3.amazonaws.com/enrollment-documents/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&..."
    }
    {
      "documentId": "019375d0-9876-7890-abcd-567890fedcba",
      "downloadUrl": "https://s3.amazonaws.com/enrollment-documents/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&..."
    }


  2. Download the PDF from the downloadUrl.

    curl -o form.pdf "<downloadUrl>"
    curl -o form.pdf "<downloadUrl>"
    curl -o form.pdf "<downloadUrl>"


  3. Complete the downloaded PDF form. Follow any instructions from the PDF and the task’s instructions field. This step happens outside the API.


  4. Call the Upload Enrollment Document API endpoint. In the request body, provide:

    • The task’s ID in the taskId field.

    • A name for the completed PDF in the name field. Include the .pdf file extension in the name. Store the name value. You’ll use it later.

    curl -X POST "https://enrollments.us.stedi.com/2024-09-01/enrollments/{enrollmentId}/documents" \
      -H "Authorization: <api_key>" \
      -H "Content-Type: application/json" \
      -d '{
        "taskId": "<task_id>",
        "name": "completed-provider-agreement.pdf"
      }'
    curl -X POST "https://enrollments.us.stedi.com/2024-09-01/enrollments/{enrollmentId}/documents" \
      -H "Authorization: <api_key>" \
      -H "Content-Type: application/json" \
      -d '{
        "taskId": "<task_id>",
        "name": "completed-provider-agreement.pdf"
      }'
    curl -X POST "https://enrollments.us.stedi.com/2024-09-01/enrollments/{enrollmentId}/documents" \
      -H "Authorization: <api_key>" \
      -H "Content-Type: application/json" \
      -d '{
        "taskId": "<task_id>",
        "name": "completed-provider-agreement.pdf"
      }'

    The response includes a documentId and pre-signed uploadUrl. The upload URL is valid for 24 hours.

    {
      "enrollmentId": "01936f2a-5678-7890-abcd-1234567890ab",
      "documentId": "019375d0-1234-7890-abcd-567890abcdef",
      "uploadUrl": "https://s3.amazonaws.com/enrollment-documents/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&..."
    }
    {
      "enrollmentId": "01936f2a-5678-7890-abcd-1234567890ab",
      "documentId": "019375d0-1234-7890-abcd-567890abcdef",
      "uploadUrl": "https://s3.amazonaws.com/enrollment-documents/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&..."
    }
    {
      "enrollmentId": "01936f2a-5678-7890-abcd-1234567890ab",
      "documentId": "019375d0-1234-7890-abcd-567890abcdef",
      "uploadUrl": "https://s3.amazonaws.com/enrollment-documents/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&..."
    }

    Store the response’s documentId. You’ll use it later.


  5. Use a PUT request to upload the attachment file to the uploadUrl. The request must include a Content-Type: application/pdf header.

    curl -X PUT "<uploadUrl>" \
      -H "Content-Type: application/pdf" \
      --upload-file /path/to/completed-provider-agreement.pdf
    curl -X PUT "<uploadUrl>" \
      -H "Content-Type: application/pdf" \
      --upload-file /path/to/completed-provider-agreement.pdf
    curl -X PUT "<uploadUrl>" \
      -H "Content-Type: application/pdf" \
      --upload-file /path/to/completed-provider-agreement.pdf


  6. Use the Retrieve Enrollment API endpoint to poll the enrollment.

    curl -X GET "https://enrollments.us.stedi.com/2024-09-01/enrollments/{enrollmentId}" \
      -H "Authorization: <api_key>"
    curl -X GET "https://enrollments.us.stedi.com/2024-09-01/enrollments/{enrollmentId}" \
      -H "Authorization: <api_key>"
    curl -X GET "https://enrollments.us.stedi.com/2024-09-01/enrollments/{enrollmentId}" \
      -H "Authorization: <api_key>"

    The response contains the enrollment’s documents in the response’s documents array. You can track the status of the document using the documentId you stored earlier.

    {
      "documents": [
        {
          "id": "019375d0-1234-7890-abcd-567890abcdef", // Document Id
          "status": "UPLOADED",
          ...
        }
      ]
    }
    {
      "documents": [
        {
          "id": "019375d0-1234-7890-abcd-567890abcdef", // Document Id
          "status": "UPLOADED",
          ...
        }
      ]
    }
    {
      "documents": [
        {
          "id": "019375d0-1234-7890-abcd-567890abcdef", // Document Id
          "status": "UPLOADED",
          ...
        }
      ]
    }

    Immediately after upload, the document's status will initially be PENDING. Wait until the status is UPLOADED before continuing. This typically takes less than 10 seconds after upload.


  7. Mark the task complete using the Update Enrollment Task API endpoint. In the request body’s responseData object, include:

    • The document ID in the documentId field

    • The uploaded PDF’s name in the name field

    curl -X POST "https://enrollments.us.stedi.com/2024-09-01/tasks/{taskId}" \
      -H "Authorization: <api_key>" \
      -H "Content-Type: application/json" \
      -d '{
        "completed": true,
        "responseData": {
          "documentId": "019375d0-1234-7890-abcd-567890abcdef",
          "name": "completed-provider-agreement.pdf"
        }
      }'
    curl -X POST "https://enrollments.us.stedi.com/2024-09-01/tasks/{taskId}" \
      -H "Authorization: <api_key>" \
      -H "Content-Type: application/json" \
      -d '{
        "completed": true,
        "responseData": {
          "documentId": "019375d0-1234-7890-abcd-567890abcdef",
          "name": "completed-provider-agreement.pdf"
        }
      }'
    curl -X POST "https://enrollments.us.stedi.com/2024-09-01/tasks/{taskId}" \
      -H "Authorization: <api_key>" \
      -H "Content-Type: application/json" \
      -d '{
        "completed": true,
        "responseData": {
          "documentId": "019375d0-1234-7890-abcd-567890abcdef",
          "name": "completed-provider-agreement.pdf"
        }
      }'

In the Stedi portal

PDF-related tasks assigned to the provider appear in the Tasks section at the top of the enrollment request's details page in the Stedi portal.

You can download, complete, and upload the pre-filled PDFs from this section.

Get started

Transaction enrollment through the Stedi portal is free for all Stedi accounts. Stedi’s Transaction Enrollment API is available on the Developer plan and above.

Signup takes less than two minutes. No credit card is needed for accounts on Stedi’s free Basic plan.

You can now use Stedi's Transaction Enrollment API or the Stedi portal to download, complete, and upload PDF forms during transaction enrollment. Examples of these PDF forms include:

  • Legal agreements with the payer.

  • W-9 tax forms.

  • Bank forms required for EFT enrollment. Some payers require EFT enrollment for ERAs.

If you're building an EHR, RCM, or practice management platform, you can now surface PDF enrollment forms directly in your UI and collect the completed PDFs from providers.

When are PDF enrollment tasks required?

Where possible, Stedi handles transaction enrollment paperwork for you. In many cases, you only need to submit a transaction enrollment request – no other action is needed on your part.

Some payers require providers – and no one else – to complete specific steps to finish enrollment. If these steps require filling out a PDF form, you can now use the Transaction Enrollment API or the Stedi portal to complete them.

Using the Transaction Enrollment API

This release introduces the new provideFilledPdf enrollment task type.

When you retrieve an enrollment using the Retrieve Enrollment API or List Enrollments API endpoints, provideFilledPdf tasks may appear in the tasks array of enrollment records.

Each provideFilledPdf task contains:

  • A unique id for the task.

  • A rank for the task – the order in which the task should be completed.

  • The responsibleParty for completing the task.

  • An isComplete status indicating whether the task is complete.

  • instructions for filling out the PDF.

  • A documentDownloadUrl for the PDF. This URL requires an API key for authentication.

An example object in an enrollment record’s tasks array:

{
  "id": "01937d50-9abc-7890-abcd-567890abcdef",
  "rank": 2,
  "responsibleParty": "PROVIDER",
  "isComplete": false,
  "definition": {
    "provideFilledPdf": {
      "instructions": "Please complete and sign the provider agreement.",
      "documentDownloadUrl": "https://enrollments.us.stedi.com/2024-09-01/documents/019375d0-9876-7890-abcd-567890fedcba/download"
    }
  }
}

How to complete a PDF task using the API

To complete a provideFilledPdf task using the Transaction Enrollment API, you’ll need the task’s id, instructions, and documentDownloadUrl. Follow these steps:

  1. Make a GET request to the documentDownloadUrl. Pass your production Stedi API key in the Authorization header.

    curl -X GET "https://enrollments.us.stedi.com/2024-09-01/documents/{documentId}/download" \
      -H "Authorization: <api_key>"


    The response contains a pre-signed S3 downloadUrl.

    {
      "documentId": "019375d0-9876-7890-abcd-567890fedcba",
      "downloadUrl": "https://s3.amazonaws.com/enrollment-documents/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&..."
    }


  2. Download the PDF from the downloadUrl.

    curl -o form.pdf "<downloadUrl>"


  3. Complete the downloaded PDF form. Follow any instructions from the PDF and the task’s instructions field. This step happens outside the API.


  4. Call the Upload Enrollment Document API endpoint. In the request body, provide:

    • The task’s ID in the taskId field.

    • A name for the completed PDF in the name field. Include the .pdf file extension in the name. Store the name value. You’ll use it later.

    curl -X POST "https://enrollments.us.stedi.com/2024-09-01/enrollments/{enrollmentId}/documents" \
      -H "Authorization: <api_key>" \
      -H "Content-Type: application/json" \
      -d '{
        "taskId": "<task_id>",
        "name": "completed-provider-agreement.pdf"
      }'

    The response includes a documentId and pre-signed uploadUrl. The upload URL is valid for 24 hours.

    {
      "enrollmentId": "01936f2a-5678-7890-abcd-1234567890ab",
      "documentId": "019375d0-1234-7890-abcd-567890abcdef",
      "uploadUrl": "https://s3.amazonaws.com/enrollment-documents/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&..."
    }

    Store the response’s documentId. You’ll use it later.


  5. Use a PUT request to upload the attachment file to the uploadUrl. The request must include a Content-Type: application/pdf header.

    curl -X PUT "<uploadUrl>" \
      -H "Content-Type: application/pdf" \
      --upload-file /path/to/completed-provider-agreement.pdf


  6. Use the Retrieve Enrollment API endpoint to poll the enrollment.

    curl -X GET "https://enrollments.us.stedi.com/2024-09-01/enrollments/{enrollmentId}" \
      -H "Authorization: <api_key>"

    The response contains the enrollment’s documents in the response’s documents array. You can track the status of the document using the documentId you stored earlier.

    {
      "documents": [
        {
          "id": "019375d0-1234-7890-abcd-567890abcdef", // Document Id
          "status": "UPLOADED",
          ...
        }
      ]
    }

    Immediately after upload, the document's status will initially be PENDING. Wait until the status is UPLOADED before continuing. This typically takes less than 10 seconds after upload.


  7. Mark the task complete using the Update Enrollment Task API endpoint. In the request body’s responseData object, include:

    • The document ID in the documentId field

    • The uploaded PDF’s name in the name field

    curl -X POST "https://enrollments.us.stedi.com/2024-09-01/tasks/{taskId}" \
      -H "Authorization: <api_key>" \
      -H "Content-Type: application/json" \
      -d '{
        "completed": true,
        "responseData": {
          "documentId": "019375d0-1234-7890-abcd-567890abcdef",
          "name": "completed-provider-agreement.pdf"
        }
      }'

In the Stedi portal

PDF-related tasks assigned to the provider appear in the Tasks section at the top of the enrollment request's details page in the Stedi portal.

You can download, complete, and upload the pre-filled PDFs from this section.

Get started

Transaction enrollment through the Stedi portal is free for all Stedi accounts. Stedi’s Transaction Enrollment API is available on the Developer plan and above.

Signup takes less than two minutes. No credit card is needed for accounts on Stedi’s free Basic plan.

Get started with Stedi

Get started with Stedi

Automate healthcare transactions with developer-friendly APIs that support thousands of payers. Contact us to learn more and speak to the team.

Get updates on what’s new at Stedi

Get updates on what’s new at Stedi

Get updates on what’s new at Stedi

Get updates on what’s new at Stedi

Backed by

Stedi and the S design mark are registered trademarks of Stedi, Inc. All names, logos, and brands of third parties listed on our site are trademarks of their respective owners (including “X12”, which is a trademark of X12 Incorporated). Stedi, Inc. and its products and services are not endorsed by, sponsored by, or affiliated with these third parties. Our use of these names, logos, and brands is for identification purposes only, and does not imply any such endorsement, sponsorship, or affiliation.

Get updates on what’s new at Stedi

Backed by

Stedi and the S design mark are registered trademarks of Stedi, Inc. All names, logos, and brands of third parties listed on our site are trademarks of their respective owners (including “X12”, which is a trademark of X12 Incorporated). Stedi, Inc. and its products and services are not endorsed by, sponsored by, or affiliated with these third parties. Our use of these names, logos, and brands is for identification purposes only, and does not imply any such endorsement, sponsorship, or affiliation.

Get updates on what’s new at Stedi

Backed by

Stedi and the S design mark are registered trademarks of Stedi, Inc. All names, logos, and brands of third parties listed on our site are trademarks of their respective owners (including “X12”, which is a trademark of X12 Incorporated). Stedi, Inc. and its products and services are not endorsed by, sponsored by, or affiliated with these third parties. Our use of these names, logos, and brands is for identification purposes only, and does not imply any such endorsement, sponsorship, or affiliation.