---
title: "Incremental device data synchronization"
method: POST
path: "/sync-device"
---

# Incremental device data synchronization

`POST /sync-device`

Sync device endpoint allows devices to do incremental synchronization of transactions related data.
WIP - most of request data are documented, response missing yet

## Request body

- SyncRequest
  - `timestamp` string, date-time, required
  - `device_uuid` string, uuid, required
  - `checksum` string, uuid, required
  - `push_token` string
  - `limit` integer
  - `offset` integer
  - `debug` object
  - `additional_info` object
  - `data` object
    - `created` object
      - `wallets` object[]
        - `uuid` string, uuid, required
        - `name` string, required
        - `starting_balance` number, float, required
        - `status` 'active' | 'disabled'
        - `currency` string, required
        - `order` integer
        - `include_future_transactions` boolean
        - `visible_in_awo` boolean
        - `modified` string, date-time
        - `categories` object[]
        - `created` string, date-time
      - `categories` object[]
        - `uuid` string, uuid, required
        - `name` string, required
        - `position` integer
        - `type` 'expense' | 'income', required
        - `status` 'active' | 'disabled'
        - `color` string, ^#[0-1a-f]{6}$, required
        - `image_id` integer, required
        - `word_id` integer
        - `user_id` integer, required
        - `wallet_id` integer
        - `wallet_settings` object[], required
          - `wallet_id` integer, required
          - `position` integer, required
          - `visible` boolean, required
        - `modified` string, date-time
        - `created` string, date-time
      - `budgets` object[]
        - `uuid` string, uuid, required
        - `name` string, required
        - `limit` number, float, required
        - `currency` string, required
        - `period` 'once' | 'day' | 'month' | 'week' | 'every two weeks' | 'year', required
        - `notification` 0 | 1, required
        - `user_id` integer, required — Owner of the budget
        - `categories` integer[], required
        - `users` integer[]
        - `wallets` integer[], required
        - `start_date` string, date-time, required
        - `end_date` string, date-time — Mandatory when period is equal to "once"
        - `modified` string, date-time
        - `all_categories_selected` 0 | 1, required — To distinguish if categories are empty or all selected
        - `all_users_selected` 0 | 1, required — To distinguish if users are empty or all selected
        - `all_wallets_selected` 0 | 1, required — To distinguish if wallets are empty or all selected
        - `created` string, date-time
      - `transactions` object[]
        - `uuid` string, uuid, required
        - `amount` number, float, required
        - `wallet_id` integer, required
        - `user_id` integer, required
        - `category_id` integer
        - `foursquare_place_id` string
        - `foreign_currency` string
        - `foreign_rate` number, float
        - `foreign_amount` number, float
        - `name` string
        - `note` string
        - `description` string
        - `customer_category_code` string
        - `aggregator_uid` string
        - `recurring_date` string, date
        - `is_pending` boolean
        - `image` string
        - `offset` string
        - `modified` string, date-time
        - `type` 'REGULAR' | 'TRANSFER'
        - `linked_transaction_id` integer
        - `repeat` 'never' | 'every day' | 'every 2 days' | 'every working day' | 'every week' | 'every 2 weeks' | 'every 4 weeks' | 'every month' | 'every 2 months' | 'every 3 months' | 'every 6 months' | 'every year'
        - `reminder` 'never' | 'current day' | '1 day in advance' | '2 days in advance' | '3 days in advance' | '4 days in advance' | '5 days in advance' | '6 days in advance' | '7 days in advance'
        - `hashtags` object
          - `significant_id` integer
          - `others` object[]
            - `id` integer, required
            - `text` string
        - `start_date` string, date-time
        - `timezone` string
        - `template_id` integer
        - `created` string, date-time
      - `transaction_templates` object[]
        - `uuid` string, uuid, required
        - `type` 'REGULAR' | 'TRANSFER', required
        - `user_id` integer, required
        - `wallet_id` integer, required
        - `target_wallet_id` integer
        - `repeat` 'every day' | 'every 2 days' | 'every working day' | 'every week' | 'every 2 weeks' | 'every 4 weeks' | 'every month' | 'every 2 months' | 'every 3 months' | 'every 6 months' | 'every year', required
        - `status` 'active' | 'done' | 'deleted', required
        - `amount` number, float, required
        - `start_date` string, date, required
        - `end_date` string, date
        - `deletion_date` string, date
        - `category_id` integer
        - `foreign_currency` string
        - `foreign_rate` number, float
        - `foreign_amount` number, float
        - `reminder` 'never' | 'current day' | '1 day in advance' | '2 days in advance' | '3 days in advance' | '4 days in advance' | '5 days in advance' | '6 days in advance' | '7 days in advance'
        - `last_instance_date` string, date
        - `offset` integer
        - `foursquare_place_id` string
        - `image` string
        - `note` string
        - `hashtags` object
          - `significant_id` integer
          - `others` object[]
            - `id` integer, required
            - `text` string
        - `created` string, date-time
      - `banks` object[]
        - `id` integer, required
        - `provider_name` string, required
        - `provider_code` string, required
        - `remember_credentials` boolean
        - `country_code` string
        - `provider_image` string
    - `updated` object
      - `wallets` object[]
        - `uuid` string, uuid, required
        - `name` string, required
        - `starting_balance` number, float, required
        - `status` 'active' | 'disabled'
        - `currency` string, required
        - `order` integer
        - `include_future_transactions` boolean
        - `visible_in_awo` boolean
        - `modified` string, date-time
        - `id` integer, required
        - `bank` object
          - `login_id` integer, required
          - `is_visible` boolean
          - `notifications` boolean
          - `show_descriptions` boolean
          - `nature` string
      - `categories` object[]
        - `uuid` string, uuid, required
        - `name` string, required
        - `position` integer
        - `type` 'expense' | 'income', required
        - `status` 'active' | 'disabled'
        - `color` string, ^#[0-1a-f]{6}$
        - `image_id` integer
        - `word_id` integer
        - `user_id` integer, required
        - `wallet_id` integer
        - `wallet_settings` object[]
          - `wallet_id` integer, required
          - `position` integer, required
          - `visible` boolean, required
        - `modified` string, date-time
        - `id` integer, required
      - `budgets` object[]
        - `uuid` string, uuid, required
        - `name` string, required
        - `limit` number, float, required
        - `currency` string, required
        - `period` 'once' | 'day' | 'month' | 'week' | 'every two weeks' | 'year', required
        - `notification` 0 | 1, required
        - `user_id` integer, required — Owner of the budget
        - `categories` integer[], required
        - `users` integer[]
        - `wallets` integer[], required
        - `start_date` string, date-time, required
        - `end_date` string, date-time — Mandatory when period is equal to "once"
        - `modified` string, date-time
        - `all_categories_selected` 0 | 1, required — To distinguish if categories are empty or all selected
        - `all_users_selected` 0 | 1, required — To distinguish if users are empty or all selected
        - `all_wallets_selected` 0 | 1, required — To distinguish if wallets are empty or all selected
        - `id` integer, required
      - `transactions` object[]
        - `uuid` string, uuid, required
        - `amount` number, float, required
        - `wallet_id` integer, required
        - `user_id` integer, required
        - `category_id` integer
        - `foursquare_place_id` string
        - `foreign_currency` string
        - `foreign_rate` number, float
        - `foreign_amount` number, float
        - `name` string
        - `note` string
        - `description` string
        - `customer_category_code` string
        - `aggregator_uid` string
        - `recurring_date` string, date
        - `is_pending` boolean
        - `image` string
        - `offset` string
        - `modified` string, date-time
        - `type` 'REGULAR' | 'TRANSFER'
        - `linked_transaction_id` integer
        - `repeat` 'never' | 'every day' | 'every 2 days' | 'every working day' | 'every week' | 'every 2 weeks' | 'every 4 weeks' | 'every month' | 'every 2 months' | 'every 3 months' | 'every 6 months' | 'every year'
        - `reminder` 'never' | 'current day' | '1 day in advance' | '2 days in advance' | '3 days in advance' | '4 days in advance' | '5 days in advance' | '6 days in advance' | '7 days in advance'
        - `hashtags` object
          - `significant_id` integer
          - `others` object[]
            - `id` integer, required
            - `text` string
        - `id` integer, required
        - `start_date` string, date-time, required
        - `place` string
      - `transaction_templates` object[]
        - `uuid` string, uuid, required
        - `type` 'REGULAR' | 'TRANSFER', required
        - `user_id` integer, required
        - `wallet_id` integer, required
        - `target_wallet_id` integer
        - `repeat` 'every day' | 'every 2 days' | 'every working day' | 'every week' | 'every 2 weeks' | 'every 4 weeks' | 'every month' | 'every 2 months' | 'every 3 months' | 'every 6 months' | 'every year', required
        - `status` 'active' | 'done' | 'deleted', required
        - `amount` number, float, required
        - `start_date` string, date, required
        - `end_date` string, date
        - `deletion_date` string, date
        - `category_id` integer
        - `foreign_currency` string
        - `foreign_rate` number, float
        - `foreign_amount` number, float
        - `reminder` 'never' | 'current day' | '1 day in advance' | '2 days in advance' | '3 days in advance' | '4 days in advance' | '5 days in advance' | '6 days in advance' | '7 days in advance'
        - `last_instance_date` string, date
        - `offset` integer
        - `foursquare_place_id` string
        - `image` string
        - `note` string
        - `hashtags` object
          - `significant_id` integer
          - `others` object[]
            - `id` integer, required
            - `text` string
        - `id` integer, required
      - `banks` object[]
        - `id` integer, required
        - `provider_name` string
        - `provider_code` string
        - `remember_credentials` boolean
        - `country_code` string
        - `provider_image` string
        - `status` 'active' | 'deleted'
    - `deleted` object
      - `wallets` integer[]
      - `categories` integer[]
      - `budgets` integer[]
      - `transactions` integer[]
      - `transaction_templates` object[]
        - `id` integer
        - `deletion_date` string, date
      - `banks` integer[]

## Response `200`

Returns list of objects changed on server since last sync

- object
  - `local_sync` object
    - `created` object
      - `wallets` object[]
        - `local_id` integer, required
        - `remote_id` integer
        - `success` boolean, required
        - `error` string
      - `categories` object[]
        - `local_id` integer, required
        - `remote_id` integer
        - `success` boolean, required
        - `error` string
      - `transactions` object[]
        - `local_id` integer, required
        - `remote_id` integer
        - `template_id` integer
        - `image` string
        - `hashtags` object[]
          - `local_id` integer, required
          - `remote_id` integer, required
        - `note` string
        - `success` boolean, required
        - `error` string
        - `errorCode` integer
      - `transaction_templates` object[]
        - `local_id` integer
        - `remote_id` integer
        - `image` string
        - `hashtags` object[]
          - `local_id` integer, required
          - `remote_id` integer, required
        - `note` string
        - `success` boolean
        - `error` string
        - `errorCode` integer
      - `budgets` object[]
        - `local_id` integer, required
        - `remote_id` integer
        - `success` boolean, required
        - `error` string
      - `banks` object[]
        - `local_id` integer, required
        - `remote_id` integer
        - `success` boolean, required
        - `error` string
    - `updated` object
      - `wallets` object[]
        - `id` integer, required
        - `success` boolean, required
        - `error` string
      - `categories` object[]
        - `id` integer, required
        - `image` string
        - `success` boolean, required
        - `error` string
      - `transactions` object[]
        - `id` integer, required
        - `hashtags` object[]
          - `local_id` integer, required
          - `remote_id` integer, required
        - `note` string
        - `image` string
        - `success` boolean, required
        - `error` string
        - `errorCode` integer
      - `transaction_templates` object[]
        - `id` integer, required
        - `image` string
        - `hashtags` object[]
          - `local_id` integer, required
          - `remote_id` integer, required
        - `note` string
        - `success` boolean, required
        - `error` string
        - `errorCode` integer
      - `budgets` object[]
        - `id` integer, required
        - `success` boolean, required
        - `error` string
        - `errorCode` integer
      - `banks` object[]
        - `id` integer, required
        - `success` boolean, required
        - `error` string
    - `deleted` object
      - `wallets` object[]
        - `id` integer, required
        - `success` boolean, required
        - `error` string
      - `categories` object[]
        - `id` integer, required
        - `success` boolean, required
        - `error` string
      - `transactions` object[]
        - `id` integer, required
        - `success` boolean, required
        - `error` string
      - `transaction_templates` object[]
        - `id` integer
        - `success` boolean
        - `error` string
      - `budgets` object[]
        - `id` integer, required
        - `success` boolean, required
        - `error` string
      - `banks` object[]
        - `id` integer, required
        - `success` boolean, required
        - `error` string
  - `remote_sync` object
    - `created` object
      - `wallets` object[]
        - `id` integer, required
        - `uuid` string, uuid, required
        - `name` string, required
        - `balance` string, decimal, required
        - `currency` string, required
        - `status` 'active' | 'disabled', required
        - `modified` string, date-time
        - `created` string, date-time, required
        - `starting_balance` string, decimal, required
        - `users_changed` string, date-time
        - `type` 'default' | 'bank_account', required
        - `is_free` boolean, required
        - `last_opened` string, date-time
        - `bank` object
          - `login_id` integer, required
          - `is_visible` boolean, required
          - `notifications` boolean, required
          - `show_descriptions` boolean, required
          - `country_code` string, required
          - `nature` string, required
        - `order` integer
        - `include_future_transactions` boolean, required
        - `visible_in_awo` boolean, required
        - `is_my` boolean, required
      - `categories` object[]
        - `id` integer, required
        - `uuid` string, uuid, required
        - `name` string, required
        - `image_id` integer
        - `status` 'active' | 'disabled', required
        - `type` 'income' | 'expense', required
        - `position` integer
        - `color` string, required
        - `modified` string, date-time
        - `created` string, date-time, required
        - `user_id` integer, required
        - `wallet_id` integer
        - `word_id` integer
        - `deleteable` boolean
        - `wallets_settings` object[]
          - `wallet_id` integer, required
          - `position` integer, required
          - `visible` boolean, required
      - `transaction_templates` object[]
        - `id` integer
        - `uuid` string, uuid
        - `type` 'REGULAR' | 'TRANSFER'
        - `user_id` integer
        - `wallet_id` integer
        - `category_id` integer
        - `amount` string, decimal
        - `repeat` 'every day' | 'every 2 days' | 'every working day' | 'every week' | 'every 2 weeks' | 'every 4 weeks' | 'every month' | 'every 2 months' | 'every 3 months' | 'every 6 months' | 'every year'
        - `reminder` 'never' | 'current day' | '1 day in advance' | '2 days in advance' | '3 days in advance' | '4 days in advance' | '5 days in advance' | '6 days in advance' | '7 days in advance'
        - `status` 'active' | 'done' | 'deleted'
        - `created` string, date-time
        - `modified` string, date-time
        - `start_date` string, date
        - `end_date` string, date
        - `timezone` string
        - `offset` string
        - `foursquare_place_id` string
        - `image` string — Full image url
        - `note` string
        - `foreign_currency` string
        - `linked_transaction_id` integer
        - `last_instance_date` string, date
        - `hashtags` object[]
          - `id` integer, required
          - `default_text` string, required
      - `transactions` object[]
        - `id` integer, required
        - `uuid` string, uuid, required
        - `is_transfer` boolean, required
        - `type` 'REGULAR' | 'TRANSFER', required
        - `transfer_type` 'ONE_WAY' | 'TWO_WAY'
        - `name` string
        - `user_id` integer
        - `wallet_id` integer
        - `category_id` integer
        - `amount` string, decimal
        - `status` 'active' | 'disabled' — - Android - not loaded at all - iOS - stores value but not used anywhere
        - `modified` string, date-time
        - `created` string, date-time
        - `start_date` string, date-time
        - `repeat` 'never' | 'every day' | 'every 2 days' | 'every working day' | 'every week' | 'every 2 weeks' | 'every 4 weeks' | 'every month' | 'every 2 months' | 'every 3 months' | 'every 6 months' | 'every year'
        - `reminder` 'never' | 'current day' | '1 day in advance' | '2 days in advance' | '3 days in advance' | '4 days in advance' | '5 days in advance' | '6 days in advance' | '7 days in advance'
        - `timezone` string
        - `offset` string
        - `location_id` integer
        - `foursquare_place_id` string
        - `image` string — Full image url
        - `note` string
        - `note_changed` boolean
        - `template_id` integer
        - `recurring_date` string, date
        - `foreign_currency` string
        - `customer_category_code` string
        - `aggregator_uid` string
        - `is_pending` boolean
        - `description` string
        - `linked_transaction_id` integer
        - `hashtags` object[]
          - `id` integer, required
          - `default_text` string, required
      - `budgets` object[]
      - `banks` object[]
    - `updated` object
      - `wallets` object[]
      - `categories` object[]
      - `transactions` object[]
      - `transaction_templates` object[]
      - `budgets` object[]
      - `banks` object[]
    - `deleted` object
      - `wallets` object[]
      - `categories` object[]
      - `transactions` object[]
      - `budgets` object[]
      - `banks` object[]

---

[API](https://skmtc.dev/spendee/apis/spendee-api.md) · [All operations](https://skmtc.dev/spendee/apis/spendee-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/spendee/spendee-api/revisions/e0c63aca8aa7/schema)
