components:
schemas:
AccessDeniedExceptionResponseContent:
description: The server response for authorization failure.
properties:
code:
description: Error classification code
type: string
message:
description: Human-readable error message
type: string
required:
- message
type: object
AggregationPreference:
description: "Preference for how the payer should group 835 Electronic Remittance Advice (ERA) transactions.\
\ Only set this property for 835 ERA enrollments.\n - If you include this property for a non-ERA enrollment,\
\ Stedi rejects the enrollment request with an HTTP `400` error.\n - If the payer doesn't support the requested\
\ aggregation type, Stedi rejects the enrollment request with an HTTP `400` error.\n - If not set, Stedi\
\ automatically selects a default based on the payer's supported aggregation types and the available identifiers\
\ for the provider.\n - Stedi will attempt to enroll with this preference, but it's not guaranteed. Each\
\ payer has its own restrictions and behaviors."
oneOf:
- properties:
taxId:
description: The Taxpayer Identification Number (TIN) the payer should use for aggregation.
pattern: ^\d{9}$
type: string
required:
- taxId
title: taxId
type: object
- properties:
npi:
description: The National Provider Identifier (NPI) the payer should use for aggregation.
pattern: ^[0-9]{10}$
type: string
required:
- npi
title: npi
type: object
AllEnrolledProviderFields:
description: Complete provider information including both read-only and mutable fields.
properties:
id:
description: The Stedi-assigned identifier for the provider. The [Create Provider](https://www.stedi.com/docs/api-reference/healthcare/post-enrollment-create-provider)
endpoint returns this as the `id` property.
type: string
name:
description: The provider's name, such as `Example Dental Associates, LLC`.
type: string
npi:
description: 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.
type: string
taxId:
description: The provider's tax identification number (SSN or EIN). This is used to identify the provider
for tax and administrative purposes.
type: string
taxIdType:
description: The type of tax identification number. This indicates whether the tax ID is a Social Security
Number (SSN) or Employer Identification Number (EIN).
type: string
required:
- id
- name
- npi
- taxId
- taxIdType
type: object
CreateEnrollmentDocumentUploadRequestContent:
description: Input for CreateDocumentUpload.
properties:
name:
description: The file name of the PDF document you want to upload. The name should include the file extension,
such as `provider-license.pdf`. This name will be displayed in the Stedi portal.
type: string
taskId:
description: The ID for the task associated with this document upload.
type: string
required:
- name
- taskId
type: object
CreateEnrollmentDocumentUploadResponseContent:
description: Response containing the enrollment ID, document ID, and pre-signed URL.
properties:
documentId:
description: A unique identifier for the document record within Stedi.
type: string
enrollmentId:
description: The enrollment ID for the transaction enrollment request associated with the PDF document.
type: string
uploadUrl:
description: The pre-signed URL you can use to upload the PDF document. This URL expires after 24 hours.
type: string
required:
- documentId
- enrollmentId
- uploadUrl
type: object
CreateEnrollmentRequestContent:
description: Input for CreateEnrollment.
properties:
aggregationPreference:
$ref: '#/components/schemas/AggregationPreference'
description: "Preference for how the payer should group 835 Electronic Remittance Advice (ERA) transactions.\
\ Only set this property for 835 ERA enrollments.\n - If you include this property for a non-ERA enrollment,\
\ Stedi rejects the enrollment request with an HTTP `400` error.\n - If the payer doesn't support the\
\ requested aggregation type, Stedi rejects the enrollment request with an HTTP `400` error.\n - If\
\ not set, Stedi automatically selects a default based on the payer's supported aggregation types and\
\ the available identifiers for the provider.\n - Stedi will attempt to enroll with this preference,\
\ but it's not guaranteed. Each payer has its own restrictions and behaviors."
payer:
$ref: '#/components/schemas/EnrolledPayerInput'
description: Information about the payer the provider is enrolling with.
primaryContact:
$ref: '#/components/schemas/ProviderContact'
description: "The contact information for the provider. This is where the payer will send communications\
\ about the enrollment, if needed.\n - Either `organizationName` _or_ `firstName` and `lastName` are\
\ required.\n - 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.\n - 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.\n - 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."
provider:
$ref: '#/components/schemas/EnrolledProviderInput'
description: Information about the provider enrolling with the payer. You **must** use the [Create Provider](https://www.stedi.com/docs/api-reference/healthcare/post-enrollment-create-provider)
endpoint to add the provider to Stedi before you can enroll them with one or more payers.
providerTransactionAccessNumber:
description: '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.'
maxLength: 10
minLength: 4
pattern: ^[a-zA-Z0-9]+$
type: string
reason:
deprecated: true
description: '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.'
type: string
requestedEffectiveDate:
description: "The requested effective date for the enrollment in YYYYMMDD format. This is the date you'd\
\ like the enrollment to take effect with the payer. For example, setting this to `20260601` for an\
\ 835 Electronic Remittance Advice (ERAs) enrollment means you want to start receiving ERAs through\
\ Stedi on that date.\n\nStedi processes enrollments accordingly, but can't guarantee that the enrollment\
\ will be effective on this exact date.\n - You can submit today's date or a future date up to 6 months\
\ from today.\n - If not set for draft enrollments, this property remains empty.\n - If not set for\
\ submitted enrollments, Stedi defaults to the enrollment's submission date.\n - If you include this\
\ property for a payer that doesn't support requested effective dates, Stedi rejects the request with\
\ an HTTP `400` error."
maxLength: 8
minLength: 8
pattern: ^\d{8}$
type: string
source:
$ref: '#/components/schemas/EnrollmentSource'
deprecated: true
description: '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`.'
status:
$ref: '#/components/schemas/InitialEnrollmentStatus'
description: "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.\n - `DRAFT` - You're still editing the enrollment and haven't\
\ submitted it to Stedi.\n - `STEDI_ACTION_REQUIRED` - You have submitted the enrollment and it is\
\ ready for Stedi to begin processing.\n - `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`."
transactions:
$ref: '#/components/schemas/EnrolledTransactionsList'
description: The type of transactions included in the enrollment.
userEmail:
description: "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.\n - This email address\
\ can be different from the `primaryContact.email` where the payer sends communications about the enrollment.\n\
\ - For [automatic enrollment requests](https://www.stedi.com/docs/healthcare/create-manage-transaction-enrollments#automatic-enrollment-requests),\
\ Stedi sets this to the oldest account member with the Admin role."
minLength: 5
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])?)*$
type: string
required:
- payer
- primaryContact
- provider
- transactions
- userEmail
type: object
CreateEnrollmentResponseContent:
description: Output containing the created enrollment details.
properties:
aggregationPreference:
$ref: '#/components/schemas/AggregationPreference'
description: "Preference for how the payer should group 835 Electronic Remittance Advice (ERA) transactions.\
\ This property is only returned for 835 ERA enrollments.\n - If not set, Stedi automatically selects\
\ a default based on the payer's supported aggregation types and the available identifiers for the provider.\n\
\ - Stedi attempts to enroll with this preference, but it's not guaranteed. Each payer has its own\
\ restrictions and behaviors.\n - This property isn't returned for enrollment records created before\
\ Stedi added support for aggregation preferences."
createdAt:
description: The date and time when the enrollment was created within Stedi.
format: date-time
type: string
documents:
description: Documents associated with this enrollment, excluding deleted documents.
items:
$ref: '#/components/schemas/EnrollmentDocument'
type: array
history:
description: The history of updates to this enrollment, such as status changes. This property is experimental
and may change in the future.
items:
$ref: '#/components/schemas/EnrollmentHistoryEntry'
type: array
id:
description: The Stedi-assigned identifier for the enrollment request.
type: string
lastEraReceivedAt:
description: "The timestamp of the most recent 835 ERA (Electronic Remittance Advice) Stedi received for\
\ this enrollment, based on the enrollment's payer ID, provider NPI, and provider tax ID. Stedi automatically\
\ updates this property for each new ERA.\n - This property is only returned for ERA enrollments in\
\ `LIVE` status with at least one matching ERA from the payer.\n - If this timestamp doesn't match\
\ your expected timeline for ERA processing, there may be an upstream issue. Contact Stedi support for\
\ assistance."
format: date-time
type: string
payer:
$ref: '#/components/schemas/EnrolledPayerOutput'
description: Information about the payer the provider is enrolling with.
primaryContact:
$ref: '#/components/schemas/ProviderContact'
description: The contact information for the provider. This is where the payer will send communications
about the enrollment, if needed.
provider:
$ref: '#/components/schemas/AllEnrolledProviderFields'
description: Information about the provider enrolling with the payer.
providerTransactionAccessNumber:
description: '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.'
maxLength: 10
minLength: 4
pattern: ^[a-zA-Z0-9]+$
type: string
reason:
description: 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.
type: string
requestedEffectiveDate:
description: 'The requested effective date for the enrollment in YYYYMMDD format. This is the date the
submitter would like the enrollment to take effect with the payer. If not provided during submission,
Stedi defaults to the enrollment''s submission date.
Not all payers support requested effective dates. Stedi can''t guarantee that the enrollment will be
effective with the payer on this exact date.'
maxLength: 8
minLength: 8
pattern: ^\d{8}$
type: string
source:
$ref: '#/components/schemas/EnrollmentSource'
description: The source of this enrollment.
status:
$ref: '#/components/schemas/EnrollmentStatus'
description: "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.\n - `DRAFT` - You're still editing the enrollment and haven't\
\ submitted it to Stedi.\n - `STEDI_ACTION_REQUIRED` - You have submitted the enrollment and it is\
\ ready for Stedi to begin processing.\n - `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.\n - `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`.\n - `PROVISIONING` - Stedi has\
\ begun the process of completing the enrollment with the payer.\n - `LIVE` - The enrollment process\
\ is complete, and the specified provider can begin exchanging the listed transaction types with the\
\ payer.\n - `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.\n - `CANCELED` - The enrollment has been\
\ terminated per customer or provider request."
statusLastUpdatedAt:
description: 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.
format: date-time
type: string
submittedAt:
description: 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.
format: date-time
type: string
tasks:
description: Tasks associated with this enrollment representing work that needs to be completed. Each
task has a responsible party and specific definition.
items:
$ref: '#/components/schemas/Task'
type: array
transactions:
$ref: '#/components/schemas/EnrolledTransactionsList'
description: The type of transactions included in the enrollment.
updatedAt:
description: The date and time when the enrollment was updated.
format: date-time
type: string
userEmail:
description: "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.\n - This email address\
\ can be different from the `primaryContact.email` where the payer sends communications about the enrollment.\n\
\ - For [automatic enrollment requests](https://www.stedi.com/docs/healthcare/create-manage-transaction-enrollments#automatic-enrollment-requests),\
\ Stedi sets this to the oldest account member with the Admin role."
minLength: 5
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])?)*$
type: string
required:
- createdAt
- id
- payer
- primaryContact
- provider
- statusLastUpdatedAt
- transactions
- updatedAt
- userEmail
type: object
DocumentStatus:
description: Indicates whether the document file has been successfully uploaded to Stedi.
enum:
- PENDING
- UPLOADED
- FAILED
- DELETED
type: string
EnrolledPayerInput:
description: The payer you want to enroll with.
properties:
id:
deprecated: true
description: Use `idOrAlias` instead. This property will be removed in the future.
type: string
idOrAlias:
description: "The payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a\
\ complete list.\n - You can use the primary payer ID, the Stedi payer ID, or any listed aliases for\
\ the payer.\n - You must include leading `0` characters - payer IDs are alphanumeric strings and must\
\ be treated as complete strings, not integers. For example, use `00540` for SISCO, not `540`."
type: string
type: object
EnrolledPayerOutput:
description: Output structure containing payer information in enrollment responses.
properties:
name:
description: The payer's name, such as `Cigna` or `UnitedHealthcare`.
type: string
stediPayerId:
description: The unique Stedi assigned identifier for the payer.
type: string
submittedPayerIdOrAlias:
description: 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](https://www.stedi.com/healthcare/network).
type: string
required:
- stediPayerId
type: object
EnrolledProviderInput:
description: The provider you want to enroll with the payer. This must be an existing provider record within
Stedi.
properties:
id:
description: The Stedi-assigned identifier for the provider. The [Create Provider](https://www.stedi.com/docs/api-reference/healthcare/post-enrollment-create-provider)
endpoint returns this as the `id` property.
type: string
required:
- id
type: object
EnrolledTransaction:
description: Represents the enrollment status for a specific transaction type.
properties:
enroll:
type: boolean
required:
- enroll
type: object
EnrolledTransactionsList:
description: Specifies which transaction types are included in the enrollment.
oneOf:
- properties:
eligibilityCheck:
$ref: '#/components/schemas/EnrolledTransaction'
description: Whether 270 eligibility checks are included in the enrollment.
required:
- eligibilityCheck
title: eligibilityCheck
type: object
- properties:
claimStatus:
$ref: '#/components/schemas/EnrolledTransaction'
description: Whether 276 claim status requests are included in the enrollment.
required:
- claimStatus
title: claimStatus
type: object
- properties:
professionalClaimSubmission:
$ref: '#/components/schemas/EnrolledTransaction'
description: Whether 837P professional claims are included in the enrollment.
required:
- professionalClaimSubmission
title: professionalClaimSubmission
type: object
- properties:
institutionalClaimSubmission:
$ref: '#/components/schemas/EnrolledTransaction'
description: Whether 837I institutional claims are included in the enrollment.
required:
- institutionalClaimSubmission
title: institutionalClaimSubmission
type: object
- properties:
dentalClaimSubmission:
$ref: '#/components/schemas/EnrolledTransaction'
description: Whether 837D dental claims are included in the enrollment.
required:
- dentalClaimSubmission
title: dentalClaimSubmission
type: object
- properties:
claimPayment:
$ref: '#/components/schemas/EnrolledTransaction'
description: Whether 835 Electronic Remittance Advice (ERAs) are included in the enrollment.
required:
- claimPayment
title: claimPayment
type: object
- properties:
solicitedClaimAttachment:
$ref: '#/components/schemas/EnrolledTransaction'
description: Whether solicited claim attachments are included in the enrollment.
required:
- solicitedClaimAttachment
title: solicitedClaimAttachment
type: object
- properties:
unsolicitedClaimAttachment:
$ref: '#/components/schemas/EnrolledTransaction'
description: Whether unsolicited claim attachments are included in the enrollment.
required:
- unsolicitedClaimAttachment
title: unsolicitedClaimAttachment
type: object
EnrollmentDocument:
description: A collection of metadata about an enrollment document, including its name, status, last updated
date, and the associated enrollment Id.
properties:
contentType:
description: The content type of the document.
type: string
createdAt:
description: The date and time when the document was created.
format: date-time
type: string
enrollmentId:
description: The enrollment ID this document is associated with.
type: string
id:
description: The unique identifier for the document.
type: string
name:
description: The name of the document.
type: string
size:
description: The size of the document in bytes.
type: number
status:
$ref: '#/components/schemas/DocumentStatus'
description: Indicates whether the document file has been successfully uploaded to Stedi.
taskId:
description: The task ID associated with this document, if it was created or processed as part of a task.
type: string
updatedAt:
description: The date and time when the document was last updated.
format: date-time
type: string
required:
- createdAt
- enrollmentId
- id
- name
- status
- updatedAt
type: object
EnrollmentHistoryChangeType:
description: The type of change recorded in the enrollment history.
enum:
- STATUS_CHANGE
type: string
EnrollmentHistoryEntry:
description: An update to an enrollment, such as a change in the enrollment's status. This object is experimental
and may change in the future.
properties:
changedAt:
description: The date and time when this change occurred.
format: date-time
type: string
changedBy:
description: The source or system that triggered this change.
type: string
newStatus:
$ref: '#/components/schemas/EnrollmentStatus'
description: The status after this change occurred.
previousStatus:
$ref: '#/components/schemas/EnrollmentStatus'
description: The status before this change occurred. This will be `UNDEFINED` for the enrollment's initial
status after creation.
type:
$ref: '#/components/schemas/EnrollmentHistoryChangeType'
description: The type of change that occurred.
required:
- changedAt
- changedBy
- newStatus
- type
type: object
EnrollmentSource:
description: The source of the enrollment.
enum:
- API
- UI
- IMPORT
- AUTO_ENROLLMENT
- AUTOMATED_TASK
type: string
EnrollmentStatus:
description: The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED`
status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for
Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can
set or update its status.
enum:
- DRAFT
- SUBMITTED
- PROVISIONING
- LIVE
- REJECTED
- CANCELED
- STEDI_ACTION_REQUIRED
- PROVIDER_ACTION_REQUIRED
type: string
EnrollmentSummary:
description: Summary of an enrollment with essential fields for list operations.
properties:
aggregationPreference:
$ref: '#/components/schemas/AggregationPreference'
description: "Preference for how the payer should group 835 Electronic Remittance Advice (ERA) transactions.\
\ This property is only returned for 835 ERA enrollments.\n - If not set, Stedi automatically selects\
\ a default based on the payer's supported aggregation types and the available identifiers for the provider.\n\
\ - Stedi attempts to enroll with this preference, but it's not guaranteed. Each payer has its own\
\ restrictions and behaviors\n - This property isn't returned for enrollment records created before\
\ Stedi added support for aggregation preferences."
createdAt:
description: The date and time when the enrollment was created within Stedi.
format: date-time
type: string
documents:
description: 'Documents associated with this enrollment, such as signed enrollment forms. This list doesn''t
include deleted documents.
Each document object contains metadata such as the document''s name, status, and timestamps for creation
and last update.'
items:
$ref: '#/components/schemas/EnrollmentDocument'
type: array
history:
description: The history of updates to this enrollment, such as status changes. This property is experimental
and may change in the future.
items:
$ref: '#/components/schemas/EnrollmentHistoryEntry'
type: array
id:
description: The Stedi-assigned identifier for the enrollment.
type: string
importId:
description: The import ID associated with the enrollment if it was created through a CSV bulk import
(`source` is set to `IMPORT`). This property is only present for enrollments created through the CSV
import process.
type: string
lastEraReceivedAt:
description: "The timestamp of the most recent 835 ERA (Electronic Remittance Advice) Stedi received for\
\ this enrollment, based on the enrollment's payer ID, provider NPI, and provider tax ID. Stedi automatically\
\ updates this property for each new ERA.\n - This property is only returned for ERA enrollments in\
\ `LIVE` status with at least one matching ERA from the payer.\n - If this timestamp doesn't match\
\ your expected timeline for ERA processing, there may be an upstream issue. Contact Stedi support for\
\ assistance."
format: date-time
type: string
payer:
$ref: '#/components/schemas/EnrolledPayerOutput'
description: Information about the payer the provider is enrolling with.
provider:
$ref: '#/components/schemas/AllEnrolledProviderFields'
description: Information about the provider enrolling with the payer.
reason:
description: 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.
type: string
requestedEffectiveDate:
description: 'The requested effective date for the enrollment in YYYYMMDD format. This is the date the
submitter would like the enrollment to take effect with the payer. If not provided during submission,
Stedi defaults to the enrollment''s submission date.
Not all payers support requested effective dates. Stedi can''t guarantee that the enrollment will be
effective with the payer on this exact date.'
maxLength: 8
minLength: 8
pattern: ^\d{8}$
type: string
# --- truncated at 32 KB (147 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/stedi/refs/heads/main/openapi/stedi-enrollments-api-openapi.yml