Skip to main content

Account Object Shape

GET endpoints return an account object with this shape:
FieldTypeNotes
idstringInternal Cora account id
externalIdstringYour external identifier
organizationIdstringOwning organization id
statusstringAccount status
clientStatusstring | nullClient-specific status
phoneNumberstring | nullPrimary phone number
metadataMetadataFlexible key/value object
personPerson | nullPerson profile details
emailAddressstring | nullPrimary email
currentEmailAddressIdstring | nullCurrent email object id
emailAddressIdsstring[]Linked email ids
addressAddress | nullAddress details
historyHistory | nullAccount history payload
typeOfDebtstring | nullDebt classification enum
complianceCompliance | nullCompliance metadata
paymentRulesPaymentRules | nullPayment constraints
bankstring | nullBanking metadata
clientstring | nullClient metadata
originalCreditorstring | object | nullCreditor info
currentBalancenumber | string | nullCurrent balance
tagsstring[]Tag list
contactInfoContactInfo | nullContact preferences/details
smsOptOutSmsOptOut | nullSMS opt-out details
createdAtISO datetime stringCreation timestamp
updatedAtISO datetime stringLast update timestamp

Type Definitions

Metadata Type

FieldTypeNotes
metadata.*unknownArbitrary key/value payload

Person Type

FieldTypeNotes
person.name.firststring | nullFirst name
person.name.laststring | nullLast name
person.birthdatestring | nullBirth date string (commonly YYYY-MM-DD)
person.ssnstring | nullFull SSN if provided
person.last4SSNstring | nullLast 4 SSN digits

Address Type

FieldTypeNotes
address.streetstring | nullPrimary street line
address.additionalStreetstring | nullSecondary street line
address.citystring | nullCity
address.statestring | nullState/province
address.zipstring | nullPostal code
address.countrystring | nullCountry

History Type

FieldTypeNotes
history.originstring | nullSource/origin description
history.statuteLimitationsDateISO datetime string | nullStatute date
history.accountOpened.dateISO datetime string | nullAccount opened date
history.lastPayment.amountnumber | nullLast payment amount
history.lastPayment.dateISO datetime string | nullLast payment date
history.placed.balancenumber | nullBalance at placement
history.placed.principalnumber | nullPrincipal at placement
history.placed.interestnumber | nullInterest at placement
history.placed.feesnumber | nullFees at placement
history.placed.dateISO datetime string | nullPlacement date
history.chargedOff.balancenumber | nullCharge-off balance
history.chargedOff.principalnumber | nullCharge-off principal
history.chargedOff.interestnumber | nullCharge-off interest
history.chargedOff.feesnumber | nullCharge-off fees
history.chargedOff.eventsobject[] | nullCharge-off event list (schema is flexible)

Compliance Type

FieldTypeNotes
compliance.statestring | nullCompliance state context

PaymentRules Type

FieldTypeNotes
paymentRules.maxSettlementTodaynumber | nullFraction between 0 and 1
paymentRules.maxSettlementPlannumber | nullFraction between 0 and 1
paymentRules.maxMonthsnumber | nullMax plan duration in months
paymentRules.maxInstallmentsnumber | nullMax number of installments

ContactInfo Type

FieldTypeNotes
contactInfo.email.addressstring | nullEmail contact
contactInfo.email.verifiedboolean | nullEmail verification status
contactInfo.phone.numberstring | nullPhone contact
contactInfo.phone.verifiedboolean | nullPhone verification status

SmsOptOut Type

FieldTypeNotes
smsOptOut.isOptedOutbooleanWhether SMS is opted out
smsOptOut.optedOutAtISO datetime string | nullOpt-out timestamp
smsOptOut.optedOutReasonstring | nullOpt-out reason (for example STOP)
smsOptOut.lastOptOutResponsestring | nullLast inbound opt-out text
smsOptOut.lookupCarrierstring | nullCarrier lookup result, if available
smsOptOut.lookupCarrierAtISO datetime string | nullCarrier lookup timestamp

Enumerated Values

status

NEW, ACTIVE, PAID, PARTIAL, DECLINED, LEGAL_HOLD, CLOSED, ADMIN, PAUSED, REFUSED

typeOfDebt

credit_card, personal_loan, payday_loan, installment_loan, line_of_credit, auto_loan, auto_lease, medical, dental, utility, telecom, mortgage, rent, hoa, student_loan_private, student_loan_federal, retail_financing, bnpl, business_loan, commercial, parking_private, tolls, gym_membership, subscription, club_dues, municipal_fines, court_fines, taxes, nsf_check, other

Updatable Top-Level Fields

PATCH accepts only these top-level fields:
  • status
  • clientStatus
  • metadata
  • person
  • emailAddress
  • address
  • history
  • typeOfDebt
  • compliance
  • paymentRules
  • bank
  • client
  • originalCreditor
  • currentBalance
  • tags
  • contactInfo
  • smsOptOut
  • phoneNumber
If no valid field is provided, API returns:
  • 400
  • code: NO_VALID_UPDATABLE_FIELDS

Request Body Shapes

Both payload shapes are supported. Direct:
{
  "status": "ACTIVE",
  "metadata": {
    "externalSystem": "crm-a"
  }
}
Wrapped:
{
  "update": {
    "status": "ACTIVE",
    "metadata": {
      "externalSystem": "crm-a"
    }
  }
}

Update Tracking Behavior

For successful PATCH updates:
  • Account changes are written to account auditTrail with source EXTERNAL_API
  • Timeline event ACCOUNT_UPDATED with source EXTERNAL_API is created
  • Response includes updated account identity and timestamp

Common Response Envelope

Success:
{
  "success": true,
  "code": "ACCOUNT_UPDATED",
  "message": "Account updated successfully",
  "account": {
    "id": "ACCOUNT_ID",
    "externalId": "FILE_123",
    "organizationId": "ORG_ID",
    "updatedAt": "2026-02-23T12:45:00.000Z"
  }
}
Error:
{
  "success": false,
  "code": "ACCOUNT_NOT_FOUND",
  "message": "Account not found"
}