Paxos Accounts API

Accounts connect Identities (persons or institutions) to Profiles (asset balances). Key features include: - **Balance Management**: Track and manage profile balances via [Subledgering](https://docs.paxos.com/crypto-brokerage/ledger-type#fiat-and-crypto-subledger) - **Joint Account Support**: Link multiple Identities to a single Account for shared on platform balance Accounts are required for all Identity API integrations.

OpenAPI Specification

paxos-accounts-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Paxos Account Members Accounts API
  version: '2.0'
  description: '<p>Welcome to Paxos APIs. At Paxos, our mission is to enable the movement of any asset, any time, in a trustworthy way. These APIs serve that mission by making it easier than ever for you to directly integrate our product capabilities into your application, leveraging the speed, stability, and security of the Paxos platform.</p> <p>The documentation that follows gives you access to our Crypto Brokerage, Trading, and Exchange products. It includes APIs for market data, orders, and the held rate quote flow.</p> <p>To test in our sandbox environment, <a href="https://account.sandbox.paxos.com" target="_blank">sign up</a> for an account. For more information about Paxos and our APIs, visit <a href="https://www.paxos.com/" target="_blank">Paxos.com</a>.</p>

    '
  x-logo:
    url: /docs/paxos.svg
    backgroundColor: '#FFFFFF'
    altText: Paxos logo
servers:
- url: https://api.paxos.com/v2
  description: Production
- url: https://api.sandbox.paxos.com/v2
  description: Sandbox
tags:
- name: Accounts
  description: 'Accounts connect Identities (persons or institutions) to Profiles (asset balances).

    Key features include:


    - **Balance Management**: Track and manage profile balances via [Subledgering](https://docs.paxos.com/crypto-brokerage/ledger-type#fiat-and-crypto-subledger)

    - **Joint Account Support**: Link multiple Identities to a single Account for shared on platform balance


    Accounts are required for all Identity API integrations.

    '
paths:
  /identity/accounts:
    get:
      summary: List Accounts
      description: 'List accounts with pagination. Every response will contain a `next_page` field,

        as long as the end of the list has not been reached. Pass this value into the `page_cursor` field of the next request

        to retrieve the next page of results.'
      operationId: ListAccounts
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAccountsResponse'
      parameters:
      - name: page_cursor
        in: query
        required: false
        schema:
          type: string
      - name: order
        description: Return items in ascending (ASC) or descending (DESC) order. Defaults to DESC.
        in: query
        required: false
        schema:
          type: string
          enum:
          - DESC
          - ASC
      - name: order_by
        description: The specific method by which the returned results will be ordered.
        in: query
        required: false
        schema:
          type: string
          enum:
          - CREATED_AT
      - name: limit
        description: Number of results to return.
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: created_at.lt
        description: Include timestamps strictly less than lt. RFC3339 format, like `2006-01-02T15:04:05Z`.
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: created_at.lte
        description: Include timestamps less than or equal to lte. RFC3339 format, like `2006-01-02T15:04:05Z`.
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: created_at.eq
        description: Include timestamps exactly equal to eq. RFC3339 format, like `2006-01-02T15:04:05Z`.
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: created_at.gte
        description: Include timestamps greater than or equal to gte. RFC3339 format, like `2006-01-02T15:04:05Z`.
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: created_at.gt
        description: Include timestamps strictly greater than gt. RFC3339 format, like `2006-01-02T15:04:05Z`.
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: identity_id
        description: Optionally filter by primary identity identity.
        in: query
        required: false
        schema:
          type: string
      - name: updated_at.lt
        description: Include timestamps strictly less than lt. RFC3339 format, like `2006-01-02T15:04:05Z`.
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: updated_at.lte
        description: Include timestamps less than or equal to lte. RFC3339 format, like `2006-01-02T15:04:05Z`.
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: updated_at.eq
        description: Include timestamps exactly equal to eq. RFC3339 format, like `2006-01-02T15:04:05Z`.
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: updated_at.gte
        description: Include timestamps greater than or equal to gte. RFC3339 format, like `2006-01-02T15:04:05Z`.
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: updated_at.gt
        description: Include timestamps strictly greater than gt. RFC3339 format, like `2006-01-02T15:04:05Z`.
        in: query
        required: false
        schema:
          type: string
          format: date-time
      tags:
      - Accounts
      security:
      - OAuth2:
        - identity:read_account
    post:
      summary: Create Account
      description: 'Create an account for a given identity, via the `identity_id` field.

        This identity is the primary owner of the account for all tax-related purposes.


        To track user balances using Paxos [Profiles](#tag/Profiles), use `create_profile=true` when creating the account.

        Once an account has been created, it is not possible to associate it with a [Profile](#tag/Profiles).


        ### Account Members


        In addition to the primary owner, other identities may be associated with the account, by using `members`.

        The identity on the account is treated as a BENEFICIAL_OWNER.


        To add a financial advisor to an account, add a member with the FINANCIAL_ADVISOR role.


        #### Example

        This example request creates a joint account for John and Jane Doe. John has identity_id=82c338f4-3cb7-4d9b-be2a-4b077c82ee3a,

        and Jane has identity_id=0f5d8475-33f3-4ebd-88a0-66dedc2581c1. John is the primary owner of the account for tax-purposes, but Jane

        is a full beneficial owner.


        Additionally, this account has an associated financial advisor with identity_id=0d26f878-298e-4d47-81be-cdf4e982a3d3.


        ```json

        {

        "account": {

        "identity_id": "82c338f4-3cb7-4d9b-be2a-4b077c82ee3a",

        "members": [{

        "identity_id": "0f5d8475-33f3-4ebd-88a0-66dedc2581c1",

        "roles": ["BENEFICIAL_OWNER"]

        }, {

        "identity_id": "0d26f878-298e-4d47-81be-cdf4e982a3d3",

        "roles": ["FINANCIAL_ADVISOR"]

        }]

        }

        }

        ```


        ### Fields


        Any fields not listed are forbidden in this request.


        Field | Notes

        ---|---

        identity_id | Required

        description | Optional

        metadata | Optional

        ref_id | Optional

        members | Optional'
      operationId: CreateAccount
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
              example:
                id: e69e4e31-6dca-4a46-bb85-af40b5fe2d59
                identity_id: 82c338f4-3cb7-4d9b-be2a-4b077c82ee3a
                ref_id: fec36070-4c23-48ac-9ee1-df338b8233fc
                description: Individual account for John Doe
                metadata:
                  custom_field: custom_value
                admin_disabled: false
                user_disabled: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAccountRequest'
        required: true
      tags:
      - Accounts
      security:
      - OAuth2:
        - identity:write_account
    put:
      summary: Update Account
      description: "This enables you to update an existing account with new information. Please refer to the following\ntable for fields that can be updated via this endpoint.\n\nField | Notes\n---|---\naccount.id | Required\naccount.description | Optional\naccount.ref_id | Optional\naccount.metadata | Optional. This will overwrite any existing metadata added to the account.\naccount.members | Optional. The only roles that can be added/removed are `FINANCIAL_ADVISOR` or `AUTHORIZED_USER.` You must always specify the full members object as we do not currently support differential member updates.\nset_user_disabled | Optional. Setting this to `true` will disable the account, limiting its ability to be used within the Paxos platform.\n\n#### Example Requests\n#### Disabling an account\n\n```json\n{\n\"set_user_disabled\": true,\n\"account\": {\n\"id\": \"82c338f4-3cb7-4d9b-be2a-4b077c82ee3a\",\n\"description\": \"Account Description\",\n\"ref_id\": \"82c338f4-3cb7\"\n}\n}\n```\n\n### Adding an account member\nTo retain the existing account members and add a new account member, the `members` field must contain the existing \naccount members and the new member. The below example adds an `AUTHORIZED_USER` to the account.\n\nIn order to add account members while leaving existing account members unaffected, clients \nshould use the [Add Account Members](#operation/AddAccountMembers) API.\n\n```json\n{\n\"account\": {\n\"id\": \"82c338f4-3cb7-4d9b-be2a-4b077c82ee3a\",\n\"members\": [{\n\"identity_id\": \"0f5d8475-33f3-4ebd-88a0-66dedc2581c1\",\n\"roles\": [\"BENEFICIAL_OWNER\"]\n}, {\n\"identity_id\": \"0d26f878-298e-4d47-81be-cdf4e982a3d3\",\n\"roles\": [\"FINANCIAL_ADVISOR\"]\n}, {\n\"identity_id\": \"012k23eb-298e-4d47-81be-cdf4e982a3d3\",\n\"roles\": [\"AUTHORIZED_USER\"]\n}]\n}\n}\n```\n\n### Removing an account member\nTo remove an existing account member and retain other needed members, the `members` field must contain \nthe existing account members without the account member you'd like to remove. The below example removes an `AUTHORIZED_USER` from the account.\n\nNote, this API requires the `members` array to have at least one element. In order to delete all members \nfrom an account, clients should use the [Delete Account Member](#operation/DeleteAccountMember) API.\n\n```json\n{\n\"account\": {\n\"id\": \"82c338f4-3cb7-4d9b-be2a-4b077c82ee3a\",\n\"members\": [{\n\"identity_id\": \"0f5d8475-33f3-4ebd-88a0-66dedc2581c1\",\n\"roles\": [\"BENEFICIAL_OWNER\"]\n}]\n}\n}\n```\n\n### Updating an account members' roles\nTo update an account members' roles, the `members` field must contain all the existing members with their roles along \nwith the additional role that you'd like to add or remove. The below example adds the `FINANCIAL_ADVISOR` role to an member that is already a `BENEFICIAL_OWNER`.\n\n```json\n{\n\"account\": {\n\"id\": \"82c338f4-3cb7-4d9b-be2a-4b077c82ee3a\",\n\"members\": [{\n\"identity_id\": \"0f5d8475-33f3-4ebd-88a0-66dedc2581c1\",\n\"roles\": [\"BENEFICIAL_OWNER\", \"FINANCIAL_ADVISOR\"]\n}]\n}\n}\n```"
      operationId: UpdateAccount
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
              example:
                created_at: '2014-02-20T04:22:22.222221Z'
                id: 79c27a0e-46a2-4276-9769-e1ebc055fa72
                identity_id: 0acd56b7-140b-4b29-83e4-7e717f03afd9
                members:
                - identity_id: 11a3122a-0c50-4950-9934-2ad48a782b78
                  roles:
                  - FINANCIAL_ADVISOR
                - identity_id: 08ba6b70-bcc0-4e4a-a67f-1d28842dedfc
                  roles:
                  - AUTHORIZED_USER
                - identity_id: 2dedfc70-a67f-4e4a-bcc0-1d288408ba6b
                  roles:
                  - BENEFICIAL_OWNER
                summary_status: PENDING
                updated_at: '2022-02-24T04:20:22.222222Z'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAccountRequest'
            example:
              account:
                id: 79c27a0e-46a2-4276-9769-e1ebc055fa72
                members:
                - identity_id: 11a3122a-0c50-4950-9934-2ad48a782b78
                  roles:
                  - FINANCIAL_ADVISOR
                - identity_id: 08ba6b70-bcc0-4e4a-a67f-1d28842dedfc
                  roles:
                  - AUTHORIZED_USER
                - identity_id: 2dedfc70-a67f-4e4a-bcc0-1d288408ba6b
                  roles:
                  - BENEFICIAL_OWNER
        required: true
      tags:
      - Accounts
      security:
      - OAuth2:
        - identity:write_account
  /identity/accounts/{id}:
    get:
      operationId: GetAccount
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
      parameters:
      - name: id
        description: uuid id of account
        in: path
        required: true
        schema:
          type: string
      tags:
      - Accounts
      security:
      - OAuth2:
        - identity:read_account
components:
  schemas:
    AccountAccountType:
      type: string
      enum:
      - BROKERAGE
      - TRADITIONAL_IRA
      - ROTH_IRA
      - SEP_IRA
      - FINANCIAL_ADVISOR
    AccountMember:
      type: object
      properties:
        identity_id:
          type: string
        type:
          $ref: '#/components/schemas/AccountMemberAccountRoleType'
        roles:
          type: array
          items:
            $ref: '#/components/schemas/AccountMemberAccountRoleType'
        id:
          type: string
          description: 'Account member ID. Note: This field is auto-generated. Specifying an ID when creating an account member is a client error.'
      required:
      - identity_id
    ListAccountsResponse:
      type: object
      properties:
        next_page_cursor:
          type: string
          description: Cursor token required for fetching the next page.
        items:
          type: array
          items:
            $ref: '#/components/schemas/Account'
          description: The result list of accounts.
    CreateAccountRequest:
      type: object
      properties:
        account:
          $ref: '#/components/schemas/Account'
        create_profile:
          type: boolean
          description: 'Create a new profile for this account.

            Set to `true` to track user balances at the Profile level for this account.

            See also [Profiles](#tag/Profiles).'
      required:
      - account
      example:
        account:
          identity_id: 82c338f4-3cb7-4d9b-be2a-4b077c82ee3a
          ref_id: fec36070-4c23-48ac-9ee1-df338b8233fc
          description: Individual account for John Doe
          metadata:
            custom_field: custom_value
    AccountMemberAccountRoleType:
      type: string
      enum:
      - BENEFICIAL_OWNER
      - AUTHORIZED_USER
      - FINANCIAL_ADVISOR
    IdentityStatus:
      type: string
      enum:
      - PENDING
      - ERROR
      - APPROVED
      - DENIED
      - DISABLED
      title: ''
    Account:
      type: object
      properties:
        id:
          type: string
          description: The id used for all other interactions with this account. Required on update. Auto-generated on create; do not set.
        identity_id:
          type: string
          description: The primary identity associated with the account. Required on create. Not writable on update.
        description:
          type: string
          description: A free-text description of the account.
        admin_disabled:
          type: boolean
          description: true if the account has been disabled by a Paxos admin.
        user_disabled:
          type: boolean
          description: true if the account has been disabled by the API user.
        metadata:
          type: object
          additionalProperties:
            type: string
          description: API User-facing metadata.
        ref_id:
          type: string
          description: A user-facing ID to prevent duplicate account creation. Unique for all accounts created by the same API user.
        members:
          type: array
          items:
            $ref: '#/components/schemas/AccountMember'
          description: Additional Identities with varying types of access to this account.
        created_at:
          type: string
          format: date-time
          description: The time this account was created.
        summary_status:
          $ref: '#/components/schemas/IdentityStatus'
        updated_at:
          type: string
          format: date-time
          description: The time this account was updated.
        profile_id:
          type: string
          description: 'The ID of the profile created for the account when `create_profile=true`.

            The [Profile](#tag/Profiles) type is `NORMAL`.

            The field is omitted when the account has no associated [Profile](#tag/Profiles).'
        type:
          $ref: '#/components/schemas/AccountAccountType'
    UpdateAccountRequest:
      type: object
      properties:
        account:
          $ref: '#/components/schemas/Account'
        set_user_disabled:
          type: boolean
          description: true if the account is required to be disabled by the API user.
      required:
      - account
  securitySchemes:
    OAuth2:
      type: oauth2
      description: 'Paxos APIs use [OAuth 2](https://tools.ietf.org/html/rfc6749) with the [client credentials](https://tools.ietf.org/html/rfc6749#section-4.4) grant flow.


        **Token URLs:**

        - Production: https://oauth.paxos.com/oauth2/token

        - Sandbox: https://oauth.sandbox.paxos.com/oauth2/token


        Learn more in the [API credentials guide →](https://docs.paxos.com/developer/credentials)

        '
      flows:
        clientCredentials:
          tokenUrl: https://oauth.paxos.com/oauth2/token
          scopes:
            conversion:read_conversion_stablecoin: Retrieve stablecoin conversion details
            conversion:write_conversion_stablecoin: Create or cancel a stablecoin conversion
            exchange:historical_prices: Retrieve marketnaverage prices at a certain time increment
            exchange:read_order: Retrieve order or order execution details
            exchange:read_quote: Retrieve quote details for buying or selling an asset
            exchange:read_quote_execution: Retrieve quote execution details
            exchange:write_quote_execution: Create a quote execution for buying or selling an asset
            exchange:write_order: Create or cancel an order for buying or selling an asset
            fee:write_crypto_withdrawal_fee: Create a guaranteed fee for crypto withdrawal
            funding:read_bank_balance: Retrieve Paxos dedicated bank account balance
            funding:read_profile: Retrieve Profile details and deposit funds in Sandbox
            funding:write_profile: Create a Profile
            identity:read_account: Retrieve Account details
            identity:read_identity: Retrieve Identity details or documents
            identity:write_account: Create or update Account and Account Members
            identity:write_identity: Create or update Identity details and set Sandbox Identify Status
            settlement:read_transaction: Retrieve settlement transaction details
            settlement:write_transaction: Create, affirm or cancel a settlement transaction
            tax:read_tax_form: Retrieve tax details
            tax:read_tax_lot: Retrieve tax lot details
            tax:write_tax_lot: Update the given tax-lot ID
            transfer:read_deposit_address: Retrieve deposit address details
            transfer:read_fiat_account: Retrieve Fiat Account details
            transfer:read_fiat_deposit_instructions: Retrieve fiat deposit instruction details
            transfer:read_transfer: Retrieve transfer details
            transfer:read_transfer_limit: Retrieve limits for the given transaction type
            transfer:reject_crypto_deposit: Reject a crypto deposit (travel rule)
            transfer:update_crypto_deposit: Provide required travel-rule details
            transfer:write_crypto_withdrawal: Withdraw asset to a specified destination address
            transfer:write_deposit_address: Create an deposit address on a blockchain network
            transfer:write_fiat_account: Create, update or delete a Fiat Account
            transfer:write_fiat_deposit_instructions: Create, update or delete fiat deposit instructions
            transfer:write_internal_transfer: Transfer assets between two Profiles
            transfer:write_sandbox_fiat_deposit: Initiate a test fiat deposit in the Sandbox environment
            transfer:write_fiat_withdrawal: Withdraw fiat to the given destination
            events:read_event: Retrieve events
x-tagGroups:
- name: Deposits and Withdrawals
  tags:
  - Transfers
  - Fiat Transfers
  - Deposit Addresses
  - Crypto Deposits
  - Crypto Withdrawals
  - Fees
  - Internal Transfers
  - Paxos Transfers
  - Limits
- name: Identity
  tags:
  - Identity
  - Institution Members
  - Accounts
  - Account Members
  - Identity Documents
- name: API Credentials
  tags:
  - API Credentials
- name: Profiles
  tags:
  - Profiles
- name: Sandbox
  tags:
  - Sandbox Deposits
  - Sandbox Identity
  - Sandbox Fiat Transfers
- name: Settlements
  tags:
  - Settlement
- name: Stablecoin Conversion
  tags:
  - Stablecoin Conversion
- name: Taxes
  tags:
  - Tax Forms
- name: Trading
  tags:
  - Market Data
  - Orders
  - Quotes
  - Quote Executions
  - Pricing
  - Issuer Quotes
- name: Rewards
  tags:
  - Monitoring Addresses
  - Statements
  - Payments
- name: Rewards (Alpha)
  tags:
  - Reward Addresses
  - Claims
  - Payout Groups
  - Rewards
- name: Events
  tags:
  - Events
  - Event Types
  - Event Objects