Skip to content

Accounts

Track wallets, bank accounts, cards, investments, crypto, loans, and other balance containers. Use upsert when your integration owns stable external IDs.

`POST` and `PATCH` requests require an Idempotency-Key header. Responses return an X-Request-Id header plus X-RateLimit-* headers, and errors follow application/problem+json.

GET /v1/accounts

List accounts

Example

curl -X GET "https://api.duitmyself.app/v1/accounts" \
  -H "Authorization: Bearer key_..." \

Response schema · AccountListResponse

{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Account"
      }
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ]
    },
    "hasMore": {
      "type": "boolean"
    }
  },
  "required": [
    "data",
    "nextCursor",
    "hasMore"
  ]
}
POST /v1/accounts

Create an account

Example

curl -X POST "https://api.duitmyself.app/v1/accounts" \
  -H "Authorization: Bearer key_..." \
  -H "Idempotency-Key: demo-post" \
  -H "Content-Type: application/json" \
  -d '"AccountCreate"'

Request schema · AccountCreate

{
  "$ref": "#/definitions/AccountCreate",
  "definitions": {
    "AccountCreate": {
      "type": "object",
      "properties": {
        "externalId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "physical",
            "bank",
            "ewallet",
            "card",
            "investment",
            "crypto",
            "loan",
            "other"
          ]
        },
        "subtype": {
          "type": "string"
        },
        "providerSlug": {
          "type": "string"
        },
        "secondaryProviderSlug": {
          "type": "string"
        },
        "balance": {
          "type": "number"
        },
        "currency": {
          "type": "string"
        },
        "color": {
          "type": "string"
        },
        "icon": {
          "type": "string"
        },
        "linkedAccountId": {
          "type": "string"
        },
        "isLiability": {
          "type": "boolean"
        },
        "notes": {
          "type": "string"
        },
        "sortOrder": {
          "type": "number"
        },
        "accountNumber": {
          "type": "string"
        },
        "customFields": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "required": [
              "label",
              "value"
            ],
            "additionalProperties": false
          }
        },
        "isFavourite": {
          "type": "boolean"
        },
        "showInDashboard": {
          "type": "boolean"
        },
        "isHidden": {
          "type": "boolean"
        }
      },
      "required": [
        "name",
        "type",
        "balance",
        "currency"
      ],
      "additionalProperties": false
    }
  }
}

Response schema · AccountResponse

{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/Account"
    }
  },
  "required": [
    "data"
  ]
}
GET /v1/accounts/{accountId}

Get an account

Parameters

  • accountId in path

Example

curl -X GET "https://api.duitmyself.app/v1/accounts/{accountId}" \
  -H "Authorization: Bearer key_..." \

Response schema · AccountResponse

{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/Account"
    }
  },
  "required": [
    "data"
  ]
}
PATCH /v1/accounts/{accountId}

Update an account

Parameters

  • accountId in path

Example

curl -X PATCH "https://api.duitmyself.app/v1/accounts/{accountId}" \
  -H "Authorization: Bearer key_..." \
  -H "Idempotency-Key: demo-patch" \
  -H "Content-Type: application/json" \
  -d '"AccountUpdate"'

Request schema · AccountUpdate

{
  "$ref": "#/definitions/AccountUpdate",
  "definitions": {
    "AccountUpdate": {
      "type": "object",
      "properties": {
        "externalId": {
          "type": "string",
          "nullable": true
        },
        "name": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "physical",
            "bank",
            "ewallet",
            "card",
            "investment",
            "crypto",
            "loan",
            "other"
          ]
        },
        "subtype": {
          "type": "string"
        },
        "providerSlug": {
          "type": "string"
        },
        "secondaryProviderSlug": {
          "type": "string"
        },
        "balance": {
          "type": "number"
        },
        "currency": {
          "type": "string"
        },
        "color": {
          "type": "string"
        },
        "icon": {
          "type": "string"
        },
        "linkedAccountId": {
          "type": "string"
        },
        "isLiability": {
          "type": "boolean"
        },
        "notes": {
          "type": "string"
        },
        "sortOrder": {
          "type": "number"
        },
        "accountNumber": {
          "type": "string"
        },
        "customFields": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "required": [
              "label",
              "value"
            ],
            "additionalProperties": false
          }
        },
        "isFavourite": {
          "type": "boolean"
        },
        "showInDashboard": {
          "type": "boolean"
        },
        "isHidden": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    }
  }
}

Response schema · AccountResponse

{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/Account"
    }
  },
  "required": [
    "data"
  ]
}
DELETE /v1/accounts/{accountId}

Archive an account

Parameters

  • accountId in path

Example

curl -X DELETE "https://api.duitmyself.app/v1/accounts/{accountId}" \
  -H "Authorization: Bearer key_..." \
POST /v1/accounts/upsert

Create or update an account by external ID

Example

curl -X POST "https://api.duitmyself.app/v1/accounts/upsert" \
  -H "Authorization: Bearer key_..." \
  -H "Idempotency-Key: demo-post" \
  -H "Content-Type: application/json" \
  -d '"AccountUpsert"'

Request schema · AccountUpsert

{
  "$ref": "#/definitions/AccountUpsert",
  "definitions": {
    "AccountUpsert": {
      "type": "object",
      "properties": {
        "externalId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "physical",
            "bank",
            "ewallet",
            "card",
            "investment",
            "crypto",
            "loan",
            "other"
          ]
        },
        "subtype": {
          "type": "string"
        },
        "providerSlug": {
          "type": "string"
        },
        "secondaryProviderSlug": {
          "type": "string"
        },
        "balance": {
          "type": "number"
        },
        "currency": {
          "type": "string"
        },
        "color": {
          "type": "string"
        },
        "icon": {
          "type": "string"
        },
        "linkedAccountId": {
          "type": "string"
        },
        "isLiability": {
          "type": "boolean"
        },
        "notes": {
          "type": "string"
        },
        "sortOrder": {
          "type": "number"
        },
        "accountNumber": {
          "type": "string"
        },
        "customFields": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "required": [
              "label",
              "value"
            ],
            "additionalProperties": false
          }
        },
        "isFavourite": {
          "type": "boolean"
        },
        "showInDashboard": {
          "type": "boolean"
        },
        "isHidden": {
          "type": "boolean"
        }
      },
      "required": [
        "externalId",
        "name",
        "type",
        "balance",
        "currency"
      ],
      "additionalProperties": false
    }
  }
}

Response schema · AccountUpsertResponse

{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "created",
        "updated"
      ]
    },
    "data": {
      "$ref": "#/components/schemas/Account"
    }
  },
  "required": [
    "operation",
    "data"
  ]
}