Create Enrollment

Creates a new transaction enrollment request. Transaction enrollment registers a provider to exchange specific transaction types with a payer.

POST/enrollments

This endpoint allows you to submit a transaction enrollment request for a specific provider. You must create one enrollment request for each transaction type. For example, you would create three separate requests to enroll a provider for 837P claims (professional), 270 real-time eligibility checks, and 835 ERAs (claim payments).

  1. Add the provider's details through either the Providers page or the Create Provider endpoint.
  2. Call this endpoint to create the enrollment request. Set the status property to DRAFT for test enrollments. Set the status property to STEDI_ACTION_REQUIRED when you're ready for Stedi to begin processing the request.
  3. The endpoint returns summary information about the enrollment request.

Once the status is set to STEDI_ACTION_REQUIRED, Stedi begins processing the enrollment request. You can track its progress through the Stedi portal or the API.

Contact information

You must submit a contact in primaryContact. This is where the payer will send communications about the enrollment, if needed.

The contact information you provide doesn't need to match the existing contact information on the provider record. This allows you to specify different contacts for different payers as needed.

When adding a contact, follow these best practices:

  • The provider's name and address should match exactly what the payer has on file. Some payers reject enrollment requests with addresses that don't match their records.
  • However, you may want to set the phone number or email to your own contact details. Do this when you want the payer to contact you about the enrollment instead of the provider directly.
Authorization
RequiredHeader

A Stedi API Key for authentication.

Body

application/json
transactions
ObjectRequired

The type of transactions included in the enrollment.

eligibilityCheck
transactions.eligibilityCheck
ObjectRequired

Whether 270 eligibility checks are included in the enrollment.

Show attributes
enroll
transactions.eligibilityCheck.enroll
BooleanRequired
claimStatus
transactions.claimStatus
ObjectRequired

Whether 276 claim status requests are included in the enrollment.

Show attributes
enroll
transactions.claimStatus.enroll
BooleanRequired
professionalClaimSubmission
transactions.professionalClaimSubmission
ObjectRequired

Whether 837P professional claims are included in the enrollment.

Show attributes
enroll
transactions.professionalClaimSubmission.enroll
BooleanRequired
institutionalClaimSubmission
transactions.institutionalClaimSubmission
ObjectRequired

Whether 837I institutional claims are included in the enrollment.

Show attributes
enroll
transactions.institutionalClaimSubmission.enroll
BooleanRequired
dentalClaimSubmission
transactions.dentalClaimSubmission
ObjectRequired

Whether 837D dental claims are included in the enrollment.

Show attributes
enroll
transactions.dentalClaimSubmission.enroll
BooleanRequired
claimPayment
transactions.claimPayment
ObjectRequired

Whether 835 Electronic Remittance Advice (ERAs) are included in the enrollment.

Show attributes
enroll
transactions.claimPayment.enroll
BooleanRequired
solicitedClaimAttachment
transactions.solicitedClaimAttachment
ObjectRequired

Whether solicited claim attachments are included in the enrollment.

Show attributes
enroll
transactions.solicitedClaimAttachment.enroll
BooleanRequired
unsolicitedClaimAttachment
transactions.unsolicitedClaimAttachment
ObjectRequired

Whether unsolicited claim attachments are included in the enrollment.

Show attributes
enroll
transactions.unsolicitedClaimAttachment.enroll
BooleanRequired
primaryContact
ObjectRequired

The contact information for the provider. This is where the payer will send communications about the enrollment, if needed.

  • The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.
  • If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number or email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly.
  • This contact information doesn't need to match existing contacts defined on the provider record. It also doesn't modify or replace contacts on the provider record.
Show attributes
organizationName
primaryContact.organizationName
String

The contact's business name. This should match exactly what the payer has on file for the provider.

firstName
primaryContact.firstName
String

The contact's first name. This should match exactly what the payer has on file for the provider.

lastName
primaryContact.lastName
String

The contact's last name. This should match exactly what the payer has on file for the provider.

email
primaryContact.email
StringRequiredRegex pattern: ^\S+@\S+\.\S+$Min length: 5

The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed.

phone
primaryContact.phone
StringRequiredRegex pattern: ^(?:[\s().-]*\d){10}[\s().-]*$

The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed.

streetAddress1
primaryContact.streetAddress1
StringRequiredMin length: 5

The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider.

streetAddress2
primaryContact.streetAddress2
String

The contact's street address continued. This should match exactly what the payer has on file for the provider.

city
primaryContact.city
StringRequiredMin length: 2

The contact's city. This should match exactly what the payer has on file for the provider.

zipCode
primaryContact.zipCode
StringRequiredMin length: 5

The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider.

state
primaryContact.state
StringRequired

The contact's two-letter state abbreviation. For example, PA, or MD. This should match exactly what the payer has on file for the provider.

Possible values
AA
AE
AK
AL
AP
userEmail
StringRequiredRegex pattern: ^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$Min length: 5

The email address where Stedi should send updates about the enrollment. We'll use it to notify you when there are next steps and send updates on the enrollment's status.

This email address can be different from the primaryContact.email where the payer sends communications about the enrollment.

source
StringDeprecated

This shape is deprecated since 2025-12-23: Stedi ignores this property for API requests, and it will be removed in a future release. The enrollment source is always set to API.

Possible values
API
UI
IMPORT
AUTO_ENROLLMENT
reason
StringDeprecated

This shape is deprecated since 2025-10-07: Only Stedi can set or update this property, and it will be removed in a future release.

providerTransactionAccessNumber
StringRegex pattern: ^[a-zA-Z0-9]+$Length: 5 - 10

This property is required for payers that require a Provider Transaction Access Number (PTAN).

The PTAN is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter.

provider
ObjectRequired

Information about the provider enrolling with the payer. You must use the Create Provider endpoint to add the provider to Stedi before you can enroll them with one or more payers.

Show attributes
id
provider.id
StringRequired

The Stedi-assigned identifier for the provider. The Create Provider endpoint returns this as the id property.

payer
ObjectRequired

Information about the payer the provider is enrolling with.

Show attributes
id
payer.id
StringDeprecated

Use idOrAlias instead. This property will be removed in the future.

idOrAlias
payer.idOrAlias
String

The Payer ID. This can be the primary Payer ID, the Stedi Payer ID, or any listed aliases for the payer. Visit the Payer Network for a complete list.

status
String

The status of the enrollment. You can submit enrollments with either DRAFT or STEDI_ACTION_REQUIRED status. The default status is DRAFT if not specified. When you're ready for Stedi to begin processing the enrollment, set the status to STEDI_ACTION_REQUIRED. Once an enrollment is STEDI_ACTION_REQUIRED, only Stedi can set or update its status.

  • DRAFT - You're still editing the enrollment and haven't submitted it to Stedi.
  • STEDI_ACTION_REQUIRED - You have submitted the enrollment and it is ready for Stedi to begin processing.
  • SUBMITTED - (Deprecated) Legacy status being phased out in favor of the more specific action-required statuses. If you set an enrollment request to SUBMITTED, Stedi treats it as STEDI_ACTION_REQUIRED.
Possible values
DRAFT
SUBMITTED
STEDI_ACTION_REQUIRED

Response

application/json

CreateEnrollment 200 response

id
StringRequired

The Stedi-assigned identifier for the enrollment request.

primaryContact
ObjectRequired

The contact information for the provider. This is where the payer will send communications about the enrollment, if needed.

  • The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.
  • If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number or email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly.
Show attributes
organizationName
primaryContact.organizationName
String

The contact's business name. This should match exactly what the payer has on file for the provider.

firstName
primaryContact.firstName
String

The contact's first name. This should match exactly what the payer has on file for the provider.

lastName
primaryContact.lastName
String

The contact's last name. This should match exactly what the payer has on file for the provider.

email
primaryContact.email
StringRequiredRegex pattern: ^\S+@\S+\.\S+$Min length: 5

The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed.

phone
primaryContact.phone
StringRequiredRegex pattern: ^(?:[\s().-]*\d){10}[\s().-]*$

The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed.

streetAddress1
primaryContact.streetAddress1
StringRequiredMin length: 5

The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider.

streetAddress2
primaryContact.streetAddress2
String

The contact's street address continued. This should match exactly what the payer has on file for the provider.

city
primaryContact.city
StringRequiredMin length: 2

The contact's city. This should match exactly what the payer has on file for the provider.

zipCode
primaryContact.zipCode
StringRequiredMin length: 5

The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider.

state
primaryContact.state
StringRequired

The contact's two-letter state abbreviation. For example, PA, or MD. This should match exactly what the payer has on file for the provider.

Possible values
AA
AE
AK
AL
AP
createdAt
StringRequiredFormat: date-time

The date and time when the enrollment was created within Stedi.

updatedAt
StringRequiredFormat: date-time

The date and time when the enrollment was updated.

submittedAt
StringFormat: date-time

The date and time when the enrollment was submitted. If the enrollment is in DRAFT status, submittedAt is not present. When the enrollment transitions from draft to STEDI_ACTION_REQUIRED, submittedAt is updated to the submission time. If the enrollment was created and submitted immediately, the submittedAt time will be equal or close to the createdAt time.

statusLastUpdatedAt
StringRequiredFormat: date-time

The date and time when the enrollment status was last updated. This timestamp is used to track enrollment processing durations and enables filtering to identify recently changed enrollments. It automatically updates whenever an enrollment's status changes but remains unchanged during other updates.

history
Array of Objects

The history of updates to this enrollment, such as status changes. This property is experimental and may change in the future.

Array item
previousStatus
history[].previousStatus
String

The status before this change occurred. This will be UNDEFINED for the enrollment's initial status after creation.

Possible values
DRAFT
SUBMITTED
PROVISIONING
LIVE
REJECTED
newStatus
history[].newStatus
StringRequired

The status after this change occurred.

Possible values
DRAFT
SUBMITTED
PROVISIONING
LIVE
REJECTED
changedBy
history[].changedBy
StringRequired

The source or system that triggered this change.

changedAt
history[].changedAt
StringRequiredFormat: date-time

The date and time when this change occurred.

type
history[].type
StringRequired

The type of change that occurred.

Possible values
STATUS_CHANGE
documents
Array of Objects

Documents associated with this enrollment, excluding deleted documents.

Array item
id
documents[].id
StringRequired

The unique identifier for the document.

enrollmentId
documents[].enrollmentId
StringRequired

The enrollment ID this document is associated with.

name
documents[].name
StringRequired

The name of the document.

contentType
documents[].contentType
String

The content type of the document.

size
documents[].size
Number

The size of the document in bytes.

status
documents[].status
StringRequired

Indicates whether the document file has been successfully uploaded to Stedi.

Possible values
PENDING
UPLOADED
FAILED
DELETED
taskId
documents[].taskId
String

The task ID associated with this document, if it was created or processed as part of a task.

createdAt
documents[].createdAt
StringRequiredFormat: date-time

The date and time when the document was created.

updatedAt
documents[].updatedAt
StringRequiredFormat: date-time

The date and time when the document was last updated.

status
String

The status of the enrollment. You can submit enrollments with either DRAFT or STEDI_ACTION_REQUIRED status. The default status is DRAFT if not specified. When you're ready for Stedi to begin processing the enrollment, set the status to STEDI_ACTION_REQUIRED. Once an enrollment is STEDI_ACTION_REQUIRED, only Stedi can set or update its status.

  • DRAFT - You're still editing the enrollment and haven't submitted it to Stedi.
  • STEDI_ACTION_REQUIRED - You have submitted the enrollment and it is ready for Stedi to begin processing.
  • PROVIDER_ACTION_REQUIRED - The enrollment requires action from the healthcare provider to proceed, such as providing additional documentation. Stedi will add a note to your enrollment request with clear instructions.
  • SUBMITTED - (Deprecated) Legacy status being phased out in favor of the more specific action-required statuses. If you set an enrollment request to SUBMITTED, Stedi treats it as STEDI_ACTION_REQUIRED.
  • PROVISIONING - Stedi has begun the process of completing the enrollment with the payer.
  • LIVE - The enrollment process is complete, and the specified provider can begin exchanging the listed transaction types with the payer.
  • REJECTED - The payer rejected the enrollment. Common reasons for rejection include incorrect details in the request and that the provider is not credentialed with the payer. Customer support will contact you with reasons for rejection and next steps.
  • CANCELED - The enrollment has been terminated per customer or provider request.
Possible values
DRAFT
SUBMITTED
PROVISIONING
LIVE
REJECTED
tasks
Array of Objects

Tasks associated with this enrollment representing work that needs to be completed. Each task has a responsible party and specific definition.

Array item
completedAt
tasks[].completedAt
StringFormat: date-time

The timestamp when the task was completed.

responsibleParty
tasks[].responsibleParty
StringRequired

The party responsible for completing this task.

Possible values
PROVIDER
STEDI
definition
tasks[].definition
ObjectRequired

A definition that determines the task's behavior, requirements, and data.

followInstructions
tasks[].definition.followInstructions
ObjectRequired

A task that requires the responsible party to follow specific instructions.

Show attributes
instructions
tasks[].definition.followInstructions.instructions
StringRequiredMin length: 1

Human-readable instructions for the responsible party to follow.

provideInformation
tasks[].definition.provideInformation
ObjectRequired

A task that requires the provider to supply specific information.

Show attributes
instructions
tasks[].definition.provideInformation.instructions
StringRequiredMin length: 1

Instructions explaining how to provide the necessary information.

rank
tasks[].rank
NumberRequiredRange: ≥ 0

The rank order of this task. Tasks with lower numbers must be completed first. For example, a task with rank 1 must be completed before a task with rank 2.

responseData
tasks[].responseData
Object

Data collected when the task was completed. This object currently only applies to tasks with definition.provideInformation.

Show attributes
provideInformation
tasks[].responseData.provideInformation
ObjectRequired

Provide notes or confirmation text to Stedi.

Show attributes
response
tasks[].responseData.provideInformation.response
StringRequiredMin length: 1

Notes or confirmation text from the responsible party in response to completing a ProvideInformation task.

isComplete
tasks[].isComplete
BooleanRequired

Whether the task has been marked as complete through either the API or the Stedi portal.

id
tasks[].id
StringRequired

The unique, Stedi-assigned identifier for the task.

transactions
ObjectRequired

The type of transactions included in the enrollment.

eligibilityCheck
transactions.eligibilityCheck
ObjectRequired

Whether 270 eligibility checks are included in the enrollment.

Show attributes
enroll
transactions.eligibilityCheck.enroll
BooleanRequired
claimStatus
transactions.claimStatus
ObjectRequired

Whether 276 claim status requests are included in the enrollment.

Show attributes
enroll
transactions.claimStatus.enroll
BooleanRequired
professionalClaimSubmission
transactions.professionalClaimSubmission
ObjectRequired

Whether 837P professional claims are included in the enrollment.

Show attributes
enroll
transactions.professionalClaimSubmission.enroll
BooleanRequired
institutionalClaimSubmission
transactions.institutionalClaimSubmission
ObjectRequired

Whether 837I institutional claims are included in the enrollment.

Show attributes
enroll
transactions.institutionalClaimSubmission.enroll
BooleanRequired
dentalClaimSubmission
transactions.dentalClaimSubmission
ObjectRequired

Whether 837D dental claims are included in the enrollment.

Show attributes
enroll
transactions.dentalClaimSubmission.enroll
BooleanRequired
claimPayment
transactions.claimPayment
ObjectRequired

Whether 835 Electronic Remittance Advice (ERAs) are included in the enrollment.

Show attributes
enroll
transactions.claimPayment.enroll
BooleanRequired
solicitedClaimAttachment
transactions.solicitedClaimAttachment
ObjectRequired

Whether solicited claim attachments are included in the enrollment.

Show attributes
enroll
transactions.solicitedClaimAttachment.enroll
BooleanRequired
unsolicitedClaimAttachment
transactions.unsolicitedClaimAttachment
ObjectRequired

Whether unsolicited claim attachments are included in the enrollment.

Show attributes
enroll
transactions.unsolicitedClaimAttachment.enroll
BooleanRequired
userEmail
StringRequiredRegex pattern: ^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$Min length: 5

The email address where Stedi should send updates about the enrollment. We'll use it to notify you when there are next steps and send updates on the enrollment's status.

This email address can be different from the primaryContact.email where the payer sends communications about the enrollment.

source
String

The source of this enrollment.

Possible values
API
UI
IMPORT
AUTO_ENROLLMENT
reason
String

Reasons why the enrollment request is still in PROVISIONING status, may take additional time to process, or was rejected by the payer. Only Stedi can set or update this property.

May contain extra required steps for processing that are specific to the payer. For example, perhaps the provider needs to log into an online portal and enter additional information before the enrollment can continue. Contact Stedi customer support with questions.

providerTransactionAccessNumber
StringRegex pattern: ^[a-zA-Z0-9]+$Length: 5 - 10

This property is required for payers that require a Provider Transaction Access Number (PTAN).

The PTAN is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter.

provider
ObjectRequired

Information about the provider enrolling with the payer.

Show attributes
name
provider.name
StringRequired

The provider's name, such as Example Dental Associates, LLC.

npi
provider.npi
StringRequired

The provider's National Provider Identifier (NPI). This is a 10-digit number assigned by the Centers for Medicare & Medicaid Services (CMS) to healthcare providers in the United States. It is used to identify providers in healthcare transactions.

taxId
provider.taxId
StringRequired

The provider's tax identification number (SSN or EIN). This is used to identify the provider for tax and administrative purposes.

taxIdType
provider.taxIdType
StringRequired

The type of tax identification number. This indicates whether the tax ID is a Social Security Number (SSN) or Employer Identification Number (EIN).

id
provider.id
StringRequired

The Stedi-assigned identifier for the provider. The Create Provider endpoint returns this as the id property.

payer
ObjectRequired

Information about the payer the provider is enrolling with.

Show attributes
name
payer.name
String

The payer's name, such as Cigna or UnitedHealthcare.

stediPayerId
payer.stediPayerId
StringRequired

The unique Stedi assigned identifier for the payer.

submittedPayerIdOrAlias
payer.submittedPayerIdOrAlias
String

The payer ID or alias used when creating the enrollment request. For example, 62308 and CIGNA are both supported for Cigna. You can find a list of all supported payer IDs and aliases in the Payer Network.