> ## Documentation Index
> Fetch the complete documentation index at: https://docs.purin.cash/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Subaccount

> Atualiza nome, e-mail, metadata ou situação. Envie só o que quer mudar. `externalId` é imutável: enviar no PUT é `400`. `active` precisa ser boolean de verdade (`"false"` entre aspas é `400`), `metadata` precisa ser string de até 2048, e nada é truncado em silêncio: fora do limite é `400`. Desativar (`active: false`) impede a subconta de receber novas cobranças e transferências de entrada; cobrança criada ANTES da desativação ainda credita quando paga. O saldo continua consultável e pode ser transferido de volta pra conta principal. Não existe exclusão: o histórico do extrato é permanente.



## OpenAPI

````yaml /api-reference/openapi.yaml put /v1/subaccounts/{id}
openapi: 3.1.0
info:
  title: PurinCash API
  version: 1.0.0
servers:
  - url: https://api.purin.cash
    description: Produção
security:
  - bearerAuth: []
tags:
  - name: Cartao
    description: Pagamentos no cartao de credito.
  - name: Cobrancas
    description: Cobrancas PIX avulsas com valor livre.
  - name: Entregas
    description: Conteudo entregue automaticamente apos o pagamento.
  - name: Disputas
    description: Contestacoes (MED) e envio de evidencias.
  - name: Pagamentos
    description: Pagamentos PIX e LTC vinculados ou nao a um produto.
  - name: Saques
    description: Saques em PIX, LTC e USDT.
  - name: Produtos
    description: Produtos de cobranca criados pela API.
  - name: Sandbox
    description: Simulacao de pagamentos e saldo de teste.
  - name: Splits
    description: Cobrancas divididas entre varias contas.
  - name: Loja
    description: Produtos da loja do Discord (somente leitura).
  - name: Subcontas
    description: Ledger de saldo por cliente do integrador.
  - name: Assinaturas
    description: PIX recorrente.
  - name: Carteira
    description: Saldo, retencoes e valores a liberar.
paths:
  /v1/subaccounts/{id}:
    put:
      tags:
        - Subcontas
      summary: Update Subaccount
      description: >-
        Atualiza nome, e-mail, metadata ou situação. Envie só o que quer mudar.
        `externalId` é imutável: enviar no PUT é `400`. `active` precisa ser
        boolean de verdade (`"false"` entre aspas é `400`), `metadata` precisa
        ser string de até 2048, e nada é truncado em silêncio: fora do limite é
        `400`. Desativar (`active: false`) impede a subconta de receber novas
        cobranças e transferências de entrada; cobrança criada ANTES da
        desativação ainda credita quando paga. O saldo continua consultável e
        pode ser transferido de volta pra conta principal. Não existe exclusão:
        o histórico do extrato é permanente.
      operationId: updateSubaccount
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  maxLength: 100
                email:
                  type: string
                  maxLength: 255
                metadata:
                  type: string
                  maxLength: 2048
                active:
                  type: boolean
                feePercent:
                  type: number
                  minimum: 0
                  maximum: 100
                  description: Novo markup percentual. Vale só pra vendas futuras.
                feeFixedCents:
                  type: integer
                  minimum: 0
                  description: Novo markup fixo em centavos. Vale só pra vendas futuras.
                payoutFeePercent:
                  type: number
                  minimum: 0
                  maximum: 100
                  description: >-
                    Novo markup percentual de SAQUE. Vale só pra saques futuros.
                    Campo ausente não mexe na taxa; para zerar, mande 0.
                payoutFeeFixedCents:
                  type: integer
                  minimum: 0
                  description: >-
                    Novo markup fixo de saque, em centavos. Campo ausente não
                    mexe na taxa; para zerar, mande 0.
            example:
              active: false
      responses:
        '200':
          description: >-
            Subconta atualizada, no MESMO shape do GET individual (inclui
            medBlockedCents e availableCents): dá pra jogar a resposta direto no
            seu cache sem perder os dois campos.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Subaccount'
                  - type: object
                    properties:
                      medBlockedCents:
                        type: integer
                        description: Preso por disputas (MED) desta subconta.
                      availableCents:
                        type: integer
                        description: balanceCents − medBlockedCents, nunca negativo.
        '400':
          description: >-
            Nome vazio, tipo inválido em qualquer campo, taxa fora da faixa, ou
            externalId diferente do atual (imutável).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Subconta inexistente ou de outra conta.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Erro interno.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Subaccount:
      type: object
      properties:
        subaccountId:
          type: string
          description: ID da subconta, prefixo sacc_. Use em cobranças e consultas.
        name:
          type: string
        email:
          type: string
        externalId:
          type: string
          description: Seu ID para este cliente. Vazio quando não informado.
        active:
          type: boolean
          description: Subconta desativada não recebe novas cobranças nem entradas.
        balanceCents:
          type: integer
          description: Saldo atual do ledger, em centavos.
        totalReceivedCents:
          type: integer
          description: Total já creditado por vendas, sem descontar transferências.
        feePercent:
          type: number
          description: >-
            Markup percentual da plataforma sobre cada venda desta subconta (0 a
            100, até 2 casas). Descontado do líquido ANTES do crédito; a fatia
            fica na conta principal.
        feeFixedCents:
          type: integer
          description: Markup fixo em centavos, somado ao percentual.
        payoutFeePercent:
          type: number
          description: >-
            Markup percentual sobre cada SAQUE desta subconta (0 a 100, até 2
            casas). A subconta é debitada o valor cheio e o PIX sai pelo
            líquido: a diferença fica na conta principal.
        payoutFeeFixedCents:
          type: integer
          description: Markup fixo de saque, em centavos, somado ao percentual.
        metadata:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    Error:
      type: object
      properties:
        error:
          type: string
          description: >-
            Mensagem de erro legivel. Trate pelo codigo HTTP; o texto pode
            mudar.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Chave de API gerada no dashboard da PurinCash (ps_live_ ou ps_test_).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.