---
title: "Read the accountant-prepared onboarding profile for a custom pricing offer (#2560)"
method: GET
path: "/accountant/admin/custom-pricing/{offerId}/prepared-profile"
tags: ["Accountants"]
---

# Read the accountant-prepared onboarding profile for a custom pricing offer (#2560)

`GET /accountant/admin/custom-pricing/{offerId}/prepared-profile`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/accountant/admin/custom-pricing/{offerId}/prepared-profile`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Service-key access requires SERVICE_KEY_CUSTOM_PRICING_ENABLED (default false);
otherwise the operation is concealed with 404. Human accountant access is unchanged.

## Response `200`

Prepared profile with its resolved customer view

- object
  - `success` true, required
  - `data` PreparedOnboardingProfile, required
    - `id` string, uuid, required
    - `offerId` string, uuid, required
    - `companyId` string, uuid, nullable, required
    - `profile` PreparedOnboardingProfileInput, required: Accountant-authored engagement setup bound to a custom pricing offer (#2560).
      - `engagement` object, required
        - `ledger` 'median' | 'quickbooks' | 'xero', required
        - `serviceStartLabel` string, required
        - `closeTargetLabel` string, required
        - `summary` string
      - `companyFacts` object, required
        - `legalName` string, required
        - `qboCompanyName` string
      - `taskIds` string[], required
      - `verifiedAccess` PreparedOnboardingVerifiedAccess[]
        - `kind` 'qbo_accountant_access' | 'bank_portal_view' | 'payroll_portal_view' | 'other', required
        - `source` string, required
        - `verifiedOn` string, required
        - `note` string
      - `requests` PreparedOnboardingRequest[]
        - `id` string, required
        - `label` string, required
        - `detail` string
        - `channel` 'secure_upload' | 'forwarding' | 'share', required
      - `stripe` object
        - `expectation` 'connect' | 'none', required
    - `customerRequests` object
    - `verifiedRequests` object
    - `createdByEmail` string, nullable
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `view` PreparedOnboardingProfileView, required: Customer-facing, read-only view of a prepared engagement (#2560).
      - `taskIds` string[], required
      - `engagement` object, required
        - `ledger` 'median' | 'quickbooks' | 'xero', required
        - `serviceStartLabel` string, required
        - `closeTargetLabel` string, required
        - `summary` string
        - `monthlyPriceCents` integer, nullable, required
        - `trialDays` integer, nullable, required
        - `billingInterval` 'month' | 'year' | 'null', nullable: Paid subscription's interval, else the offer's.
        - `chargedAmountCents` integer, nullable: Amount charged per billing interval (an annual plan's full charge).
        - `termStart` string, date, nullable: First day of the paid period (America/New_York); null before payment.
        - `termEnd` string, date, nullable: Last day of the paid period; null before payment.
      - `companyFacts` object, required
        - `legalName` string, required
        - `qboCompanyName` string
      - `verifiedAccess` PreparedOnboardingVerifiedAccess[], required
        - `kind` 'qbo_accountant_access' | 'bank_portal_view' | 'payroll_portal_view' | 'other', required
        - `source` string, required
        - `verifiedOn` string, required
        - `note` string
      - `requests` object[], required
        - `id` string, required
        - `label` string, required
        - `detail` string
        - `channel` 'secure_upload' | 'forwarding' | 'share', required
        - `status` 'open' | 'submitted' | 'verified', required
        - `submittedAt` string, date-time, nullable, required
        - `verifiedAt` string, date-time, nullable, required
      - `stripe` object, required
        - `expectation` 'connect' | 'none', required
    - `customerProgress` object, nullable, required: What Median sees of the customer's setup; null until the profile is bound to a company (#2560).
      - `doneTaskIds` string[], required
      - `documents` 'help_needed'
      - `stripe` 'not_attempted' | 'connected' | 'help_needed', required

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `404`: Resource not found

---

[API](https://skmtc.dev/medianfi/apis/median-api.md) · [All operations](https://skmtc.dev/medianfi/apis/median-api/llms.txt) · [OpenAPI document](https://skmtc.dev/medianfi/apis/median-api/revisions/20090ea32b0d?raw)
