HomeGuidesAPI ReferenceChangelog
Log In
Guides

UDS to Plug Status Mapping

Migrating from UDS to Plug involves a shift from a multi-field status model to a unified, action-oriented model.

Executive Summary

  • In addition to Credential.status and Credential.statusDetail, UDS used three separate fields to describe an Account: enrollmentStatus, extractionStatus, and monitoringStatus.
  • Plug uses the status (a state category) field combined with a higher-fidelity statusDetail (a detailed reason for being placed in that state category) and introduces a critical boolean field: isCustomerActionRequired (whether the owner of that credential/account/meter/etc needs to be involved to fix the issue) across most entities in the Plug data model.

This guide provides a comprehensive reference for mapping these values to update your internal logic and user-facing messages.

Plug status details can be found in the Status and Status Detail Definitions. UDS status details can be found in the UDS API Documentation - Account Status Breakdown. Below is a convenient breakdown of the differences between the two.


Credential Status Mapping

API Endpoints

UDS

GET https://api.urjanet.net/api/v1/credential/status/{credentialId}

Plug

GET https://api.arcadia.com/plug/credentials/{credentialId}

Credential Mapping Table

UDS.Credential.statusUDS.Credential.statusDetailPlug.Credential.statusPlug.Credential.statusDetailPlug.Credential.isCustomerActionRequired
OK(Any)CONNECTION_SUCCESSLOGIN_AND_DATA_DISCOVERY_SUCCESSfalse
OK(Any)CONNECTION_SUCCESSLOGIN_SUCCESS_AND_INTERVALS_DISCOVERY_SUCCESSfalse
PENDINGWEBSITE_DOWNCONNECTION_IN_PROGRESSPROVIDER_WEBSITE_INACCESSIBLEfalse
PENDINGSTATEMENT_UNAVAILABLECONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalse
PENDINGUNDER_REVIEWCONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalse
FIXLOGIN_FAILURECONNECTION_FAILUREINVALID_CREDENTIALStrue
FIXACCOUNT_LOCKEDCONNECTION_FAILUREOTHER_ACCESS_LIMITATIONtrue
FIXUNSUPPORTED_CAPTCHACONNECTION_FAILUREUNSUPPORTED_CAPTCHAtrue
FIXNO_ACCOUNTS_FOUNDCONNECTION_FAILUREOTHER_ACCESS_LIMITATIONtrue
FIXE_BILL_REQUIREDCONNECTION_FAILUREOTHER_ACCESS_LIMITATIONtrue
(None)(None)CONNECTION_FAILUREUNSUPPORTED_MULTI_FACTOR_AUTHENTICATIONtrue
(None)(None)CONNECTION_FAILUREUNSUPPORTED_MULTI_FACTOR_AUTHENTICATIONtrue
(None)(None)CONNECTION_FAILUREUSER_REVOKED_ACCESStrue

Plug-Only Credential Statuses

These status / statusDetail combinations represent new capabilities or edge cases with no direct UDS equivalent:

  • CONNECTION_SUCCESS / LOGIN_SUCCESS_AND_INTERVALS_DISCOVERY_FAILURE: Only relevant for Plug’s Instant Intervals feature. In cases where we don’t find intervals, we use this as an intermediate state until statements are collected.

  • CONNECTION_IN_PROGRESS / EMAIL_APPROVAL: Waiting for the user to click a link in an email to enroll their account. This is used for 3rd party portals like ConEd.

  • CONNECTION_IN_PROGRESS / REQUIRES_ENROLLMENT: The account is being connected via a 3rd party portal like Smart Meter Texas but the enrollment step wasn’t completed yet.

  • CONNECTION_FAILURE / UNSUPPORTED_MULTI_FACTOR_AUTHENTICATION: The credential has MFA security at a provider that Arcadia does not support MFA logins for yet.

  • CONNECTION_FAILURE / MULTI_FACTOR_AUTHENTICATION_FAILURE: The customer provided an incorrect MFA code and another attempt is necessary.

  • CONNECTION_FAILURE / USER_REVOKED_ACCESS: The owner of the credentials manually revoked access to interval data from a third party portal, such as Smart Meter Texas.


Account Status Mapping

This is the most complex migration area. UDS required checking enrollmentStatus AND extractionStatus to know the true state. Plug simplifies this into Account.status and Account.statusDetail. Additionally, Plug introduced the Account.isCustomerActionRequired field to make it more clear if the owner of the account needs to be involved to fix an issue.

UDS' Account.monitoringStatus was manually assigned by operations teams. These statuses are often used to override or clarify the automated status. Plug does not expose Monitoring Statuses externally but they are used internally to power some state transitions. As such, there is no mapping from UDS' Account.monitoringStatus to an entity or field in Plug beyond the statuses described in the table below.

API Endpoints

UDS

GET https://api.urjanet.net/api/v1/account/status/{accountId}

Plug

GET https://api.arcadia.com/plug/accounts/{accountId}

Account Mapping Table

This table includes all UDS Enrollment and Extraction statuses. Rows where Enrollment Status is the driver are listed first. Rows where Extraction Status provides the specific error (usually when Enrollment is ENROLLED) follow.

UDS.Account.enrollmentStatusUDS.Account.extractionStatusPlug.Account.status`Plug.Account.statusDetailPlug.Account.isCustomerActionRequiredExplanation
SUBMITTEDAnyN/AN/AN/APlug uses a concept of Expected Accounts to represent account number submitted for discovery. Read more.
NEEDS_CREDENTIALAnyN/AN/AN/APlug allows accounts to exist without credentials, this is especially relevant for accounts created via the Files Module.
NEEDS_TEMPLATEAnyN/AN/AN/AThere is no equivalent state in Plug.
NOMINATEDAnyN/AN/AN/AThere is no equivalent state in Plug.
FAILED_TO_ACCESSAnyDATA_ACCESS_FAILURENO_DATA_AVAILABLEfalseArcadia is able to access the utility account and there is no data for this specific account, though there was data for this account in the past. Please check if there is data available for this specific account by logging into the utility provider website.
FAILED_LOGINAnyDATA_ACCESS_FAILURECREDENTIAL_ISSUEtrueConfirmed credential failure.
ACCOUNT_MISSINGAnyDATA_ACCESS_FAILURENO_DATA_AVAILABLEtrueCredential worked, but this account wasn't found in the list.
STATEMENT_MISSINGAnyDATA_ACCESS_FAILURENO_DATA_AVAILABLEtrueAccount found previously on statement however, now no statements could be found.
STATEMENT_FAILEDAnyCONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalseExtracted but failed audits. It may be stored as a Discovered Statement.
SUCCESSFUL_NOT_ENROLLEDAnyN/AN/AN/AThis is not part of the Account status but rather Account.isStatementProductActivated
SUCCESSFUL_ENROLLEDAnyCONNECTION_SUCCESSDATA_ACCESSIBLEfalseConnection healthy.
SUCCESSFUL_DELIVEREDAnyN/AN/AN/APlug is a "pull" system so we can't indicate whether customers have fetched the data or not. Additionally, there are multiple ways customers can collect the data (DataHub, Webhooks, API, etc.)
CREDENTIAL_UPDATEDAnyN/AN/AN/ANot a state in Plug.
TEMPLATE_UPDATEDAnyN/AN/AN/ANot a state in Plug.
LOGIN_UPDATEDAnyN/AN/AN/ANot a state in Plug.
NEEDS_ENROLLMENTAnyCONNECTION_IN_PROGRESSREQUIRES_ENROLLMENTfalseWaiting on 3rd party portal setup.
AnyEXISTSNEW_ACCOUNTDATA_ACCESSIBLEfalseInitial discovery state.
ENROLLEDSUCCESSCONNECTION_SUCCESSDATA_ACCESSIBLEfalseFully healthy.
ENROLLEDFAILED_TO_ACCESS_DURING_LOGINCONNECTION_IN_PROGRESSPROVIDER_WEBSITE_INACCESSIBLEfalseTransient login issue.
ENROLLEDFAILED_TO_ACCESSCONNECTION_IN_PROGRESSPROVIDER_WEBSITE_INACCESSIBLEfalseTransient site issue.
ENROLLEDACCOUNT_MISSINGDATA_ACCESS_FAILURENO_DATA_AVAILABLEtruePreviously seen account is gone.
ENROLLEDSTATEMENT_MISSINGDATA_ACCESS_FAILURENO_DATA_AVAILABLEtruePreviously seen statement is gone.
ENROLLEDAUDIT_CHECKSUMCONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalseFailed Data Quality Audit (Statement held).
ENROLLEDAUDIT_VALID_USAGECONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalseFailed Data Quality Audit.
ENROLLEDAUDIT_INVALID_INTERVALCONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalseFailed Data Quality Audit.
ENROLLEDAUDIT_OTHERCONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalseFailed Data Quality Audit.
ENROLLEDERROR_DATA_TYPECONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalseParsing error.
ENROLLEDERROR_MISSING_REQUIREMENTCONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalseParsing error.
ENROLLEDERROR_STORAGECONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalseInternal system error.
ENROLLEDERROR_MODEL_COLLISIONCONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalseInternal system error.
ENROLLEDCUSTOMER_REJECTED_HTMLN/AN/AN/APlug doesn't allow customers to reject HTML bills.
ENROLLEDLOGIN_FAILUREDATA_ACCESS_FAILURECREDENTIAL_ISSUEtrueCredential broke.
ENROLLEDTRACKED_ACCOUNT_SKIPPEDCONNECTION_SUCCESSDATA_ACCESSIBLEfalse
ENROLLEDACCESS_CHANNEL_SKIPPEDCONNECTION_SUCCESSDATA_ACCESSIBLEfalse
ENROLLEDTRACKED_STATEMENT_SKIPPEDCONNECTION_SUCCESSDATA_ACCESSIBLEfalse
ENROLLEDERROR_211DATA_ACCESS_FAILUREISSUE_UNDER_REVIEWfalsePlug does not yet expose the reasons why audits may have failed like UDS does
ENROLLEDERROR_808 / _CRITICALCONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalsePlug does not yet expose the reasons why audits may have failed like UDS does
ENROLLEDTRACKED_ACCOUNT_MISSINGDATA_ACCESS_FAILURENO_DATA_AVAILABLEtrue
ENROLLEDTRACKED_STATEMENT_MISSINGDATA_ACCESS_FAILURENO_DATA_AVAILABLEtrue
ENROLLEDTRACKED_BILL_NOT_YET_AVAILABLECONNECTION_SUCCESSDATA_ACCESSIBLEfalseYou may want to use the Statement Gaps feature to understand why latest bills with past NEPs might be missing.
ENROLLEDERROR_WEBSITE_PROBLEMCONNECTION_IN_PROGRESSPROVIDER_WEBSITE_INACCESSIBLEfalseSite maintenance/down.
ENROLLEDUSER_ACTION_REQUIREDDATA_ACCESS_FAILUREOTHER_ACCESS_LIMITATIONtrueCheck website for alerts/popups.
ENROLLEDCAPTCHA_LOGINCONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalseAutosolving captcha.
ENROLLEDFINALLEDINACTIVENO_BILLS_DISCOVERED_AFTER_FINAL_BILL_NOTICEfalseAccount Closed.
ENROLLEDAUTOSOLVE_CAPTCHA_FAILURECONNECTION_FAILUREUNSUPPORTED_CAPTCHAtrueAutosolve failed; user intervention may be needed.
ENROLLEDEXTRACTION_FAILURECONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalseGeneric parsing failure.
ENROLLEDWEBSITE_TIMEOUTCONNECTION_IN_PROGRESSPROVIDER_WEBSITE_NAVIGATION_FAILUREfalseSlow site response. Note that we only expose these statuses if there is a consistent pattern of failures.
ENROLLEDDUPLICATE_SOURCE_EXTRACTION_SKIPPEDN/AN/AN/ANot exposed in Plug
ENROLLEDMULTI_FACTOR_AUTH_FAILUREDATA_ACCESS_FAILUREMULTI_FACTOR_AUTHENTICATION_FAILUREtrueMFA challenge failed.
ENROLLEDLIMITED_ACCESSDATA_ACCESS_FAILUREOTHER_ACCESS_LIMITATIONtrueWebsite restricts access (e.g. "You can't access this bill").
ENROLLEDCAPTCHA_ATTEMPT_FAILEDCONNECTION_IN_PROGRESSISSUE_UNDER_REVIEWfalseAutomation failed, requires internal fix.

Meters

In UDS, Meter statuses were not often utilized. Plug treats Meters as first-class citizens, with status and statusDetail which UDS did not. It's used for the purposes of fetching interval data associated with the meter.

API Endpoints

UDS

GET https://api.urjanet.net/api/v1/meter/status/{meterId}

Plug

GET https://api.arcadia.com/plug/meters/{meterId}

Meter Statuses

Plug.Meter.statusPlug.Meter.statusDetailDescription
INTERVALS_SUCCESSINTERVALS_AVAILABLEData is flowing.
INTERVALS_IN_PROGRESSINTERVALS_EXTRACTION_IN_PROGRESSCurrently collecting data.
INTERVALS_PENDINGREQUIRES_ENROLLMENTBackend setup for 3rd party portals necessary.
INTERVALS_FAILUREINVALID_CREDENTIALSBlocked by parent credential issue.
INTERVALS_NOT_SUPPORTEDSERVICE_TYPE_NOT_SUPPORTEDArcadia doesn't support interval collection for this type/provider.

Discovered Statements (New Entity)

In UDS, if a statement failed validation, it often just didn't appear or triggered an ERROR_808 on the UDS.Account.extractionStatus. In Plug, these are visible as Discovered Statement entities in the API and Dashboard. You can read more about Discovered Statements in this guide.

API Endpoints

UDS

No equivalent

Plug

GET https://api.arcadia.com/plug/discoveredStatements/{discoveredStatementId}

They have two possible status and no statusDetail (because it would be superfluous).

  • EXTRACTION_PASSED_QUALITY_CHECKS: Healthy statement.

  • EXTRACTION_FAILED_QUALITY_CHECKS: Scraped but contains data anomalies (e.g., total amount mismatch).

Files (New Entity)

In addition to automatic navigation to invoices using Credentials, Plug also supports bill processing for PDFs uploaded via API or the Dashboard. Files are a first class entity with their own complex pipeline and statuses. UDS does not have an equivalent API.

API Endpoints

UDS

No equivalent

Plug

GET https://api.arcadia.com/plug/files/{fileId}

File Statuses

Since UDS does not have an equivalent Files entity in the UDS API, a mapping table is not necessary. For more details on all possible File status and statusDetails, please see this guide.