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

# Add Address Book Entry

> Saved withdrawal destinations for any asset.

Add an address once (with a memo tag where required), confirm it via
the emailed link, and you can reuse it for future withdrawals without
re-entering the address. Entries support optional travel rule
declarations for regulated transfers. Deleting an entry disables it
for future withdrawals while preserving the historical record.



## OpenAPI

````yaml /openapi.json post /api/private/v2/wallet/address-book/
openapi: 3.0.3
info:
  title: Digital Surge API
  version: '2.0'
  description: >-
    Digital Surge is an Australian cryptocurrency exchange. This API provides
    programmatic access to your account: live AUD pricing for hundreds of
    assets, instant swaps, recurring buys, price triggers, portfolio balances,
    transaction history, and crypto withdrawals.


    **Authentication** — create an API key in the Digital Surge app under
    *Account Settings → API Keys* and send it with every request:
    `Authorization: Bearer <your-api-key>`. Read-only and read & write keys are
    available.


    **Guides and interactive documentation** — https://digitalsurge.com.au/docs


    **AI agents** — connect via the Digital Surge MCP server:
    https://mcp.digitalsurge.com.au/mcp
servers:
  - url: https://app.digitalsurge.com.au
    description: Production
security: []
tags:
  - name: Public
    description: Unauthenticated endpoints — market data, asset info, pricing
  - name: Private
    description: Authenticated endpoints — trading, portfolio, account management
paths:
  /api/private/v2/wallet/address-book/:
    post:
      tags:
        - Private
      summary: Add Address Book Entry
      description: |-
        Saved withdrawal destinations for any asset.

        Add an address once (with a memo tag where required), confirm it via
        the emailed link, and you can reuse it for future withdrawals without
        re-entering the address. Entries support optional travel rule
        declarations for regulated transfers. Deleting an entry disables it
        for future withdrawals while preserving the historical record.
      operationId: private_v2_wallet_address_book_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WithdrawalAddressBookRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/WithdrawalAddressBookRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/WithdrawalAddressBookRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WithdrawalAddressBook'
          description: ''
      security:
        - bearerAuth: []
components:
  schemas:
    WithdrawalAddressBookRequest:
      type: object
      description: |-
        Serializer for creating and listing withdrawal address book entries.
        Accepts optional nested travel_rule data on creation.
      properties:
        asset:
          type: string
          minLength: 1
        address:
          type: string
          minLength: 1
          maxLength: 256
        memo:
          type: string
          description: Tag/Memo for assets that require it (XRP, XLM, etc)
          maxLength: 256
        label:
          type: string
          minLength: 1
          description: User-friendly label (e.g., 'My Ledger', 'Cold Storage')
          maxLength: 200
        enabled:
          type: boolean
          description: False = soft deleted
        travel_rule:
          allOf:
            - $ref: '#/components/schemas/TravelRuleWriteRequest'
          writeOnly: true
      required:
        - address
        - asset
        - label
    WithdrawalAddressBook:
      type: object
      description: |-
        Serializer for creating and listing withdrawal address book entries.
        Accepts optional nested travel_rule data on creation.
      properties:
        id:
          type: integer
          readOnly: true
        asset:
          type: string
        asset_name:
          type: string
          readOnly: true
        address:
          type: string
          maxLength: 256
        memo:
          type: string
          description: Tag/Memo for assets that require it (XRP, XLM, etc)
          maxLength: 256
        label:
          type: string
          description: User-friendly label (e.g., 'My Ledger', 'Cold Storage')
          maxLength: 200
        enabled:
          type: boolean
          description: False = soft deleted
        confirmed:
          type: boolean
          readOnly: true
          description: Email confirmation status
        confirmed_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        created:
          type: string
          format: date-time
          readOnly: true
        last_used:
          type: string
          format: date-time
          readOnly: true
          nullable: true
          description: Last time used for a withdrawal
        times_used:
          type: integer
          readOnly: true
      required:
        - address
        - asset
        - asset_name
        - confirmed
        - confirmed_at
        - created
        - id
        - label
        - last_used
        - times_used
    TravelRuleWriteRequest:
      type: object
      description: |-
        Write serializer for travel rule data submission.

        Accepts raw enum values for write, validates conditional requirements.
        Used for both address book and deposit TR data submissions.
      properties:
        destination_type:
          allOf:
            - $ref: '#/components/schemas/DestinationTypeEnum'
          description: |-
            Where the funds are going: 'personal_wallet' or 'exchange_account'.

            * `personal_wallet` - Personal Wallet
            * `exchange_account` - Exchange Account
        ownership:
          allOf:
            - $ref: '#/components/schemas/OwnershipEnum'
          description: |-
            Who owns the destination: 'self' or 'other'.

            * `self` - Self (Own Account)
            * `other` - Other
        beneficiary_type:
          description: |-
            Required when ownership is 'other': 'individual' or 'organisation'.

            * `individual` - Individual
            * `organisation` - Organisation
          oneOf:
            - $ref: '#/components/schemas/BeneficiaryTypeEnum'
            - $ref: '#/components/schemas/BlankEnum'
        wallet_provider:
          type: string
          description: >-
            Required when destination_type is 'personal_wallet'. See
            /reference-data/ for values.
          maxLength: 50
        wallet_provider_other_name:
          type: string
          description: Name of the wallet provider when wallet_provider is 'other'.
          maxLength: 100
        exchange:
          type: string
          description: >-
            Required when destination_type is 'exchange_account'. See
            /reference-data/ for values.
          maxLength: 50
        exchange_other_name:
          type: string
          description: Name of the exchange when exchange is 'other'.
          maxLength: 100
        beneficiary_full_name:
          type: string
          description: Required when beneficiary_type is 'individual'.
          maxLength: 200
        beneficiary_country:
          type: string
          description: >-
            ISO 3166-1 alpha-2 country code. Required when beneficiary_type is
            'individual'.
          maxLength: 2
        beneficiary_region:
          type: string
          description: >-
            Beneficiary's state, province or region (e.g. an Australian state).
            Optional.
          maxLength: 100
        beneficiary_organisation_name:
          type: string
          description: Required when beneficiary_type is 'organisation'.
          maxLength: 200
        beneficiary_organisation_country:
          type: string
          description: >-
            ISO 3166-1 alpha-2 country code. Required when beneficiary_type is
            'organisation'.
          maxLength: 2
        beneficiary_organisation_region:
          type: string
          description: Beneficiary organisation's state, province or region. Optional.
          maxLength: 100
      required:
        - destination_type
        - ownership
    DestinationTypeEnum:
      enum:
        - personal_wallet
        - exchange_account
      type: string
      description: |-
        * `personal_wallet` - Personal Wallet
        * `exchange_account` - Exchange Account
    OwnershipEnum:
      enum:
        - self
        - other
      type: string
      description: |-
        * `self` - Self (Own Account)
        * `other` - Other
    BeneficiaryTypeEnum:
      enum:
        - individual
        - organisation
      type: string
      description: |-
        * `individual` - Individual
        * `organisation` - Organisation
    BlankEnum:
      enum:
        - ''
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Personal API key, created in the Digital Surge app under Account
        Settings → API Keys. Send it with every request as `Authorization:
        Bearer <your-api-key>`.

````