Important User Statuses

Key Status Properties

Defines the authentication status of the last communicated login credentials of the end user. Here you want to look at either the isValid flag for isValid: true or the statusCode: 2000 series which will give you the successful value. Otherwise, you’ll be looking for a 5000 series status code.

(Best known as the "current status of the user's data, based on the last account refresh" but that was too long, so we called it the dataSyncStatus)

Tells us the current state of the data available on the user and how up to date it is (the last time the user’s account was refreshed successfully with Spinwheel). You will want to look for the statusCode here as well, and the pathway here is studentLoanAccounts.dataSyncStatus.statusCode.

  • 2000 being successful
  • 2001 meaning the update is in progress
  • 2002 indicates that an account is migrated or paid off
  • and 5000 which will denote an error from the servicer integration accompanied by supplemental reference information via the errorDescription. (This could be referencing servicer specific errors, or a servicer's inability to refresh the user's account due to an occurrence on their end at that specific instance of time)

Here you can see both the lastSuccessfulSyncOn and lastSyncAttemptOn in epoch timestamp. Ideally, these will always be equal.

A Paid Off User

(This may occur either at the account connection level, loanAccount level if a servicer has multiple accounts, or the specific loan level)

There are multiple means in which to determine a particular user's account has been paid off or paid in full. This is best considered in the following options stack ranked by efficacy and "user account data level":

  1. The [LIABILITY_ACCOUNT_TRANSITION webhook]( will notify you when a user's account is PAID_OFF or MIGRATED
  2. The studentLoanAccounts.dataSyncStatus.statusCode: 2002 will tell you that the user's account is paid off or migrated
  3. The studentLoanAccounts.loanAccounts.summary.isPaidOff: true will tell you the user's loanAccount is paid off
  4. The Paid in Full/Paid in Full by DOE will tell you that the specific loan has been paid off
    1. subsequently the Paid in Full may also be available on the user's loan

A Migrated User


The above path is the best way to confirm that a user's account has been specifically migrated. This is additional to the studentLoanAccounts.dataSyncStatus.statusCode: 2002 accompanied by the LIABILITY_ACCOUNT_TRANSITION webhook notification.


User Migrated or Paid Off Webhook

The LIABILITY_ACCOUNT_TRANSITION webhook available to denote if the user is PAID_OFF or MIGRATED. This webhook factors in the above logic.

There are two main means of collecting payment statuses:

  1. The UserPaymentStatusWebhookwhich will notify you of transaction status details
  2. The v1/payments/transactions/{transactionId} endpoint, which will allow you to pull all of the specific details on that transaction in a more robust fashion

To learn more about our debt APIs and 1-click solutions, visit

What’s Next