Time entries

List all time entries

Returns a paginated list of all time entries in the administration.

The filter argument allows you to filter the list of time entries. Filters are a combination of keys and values, separated by a comma: period:this_year,state:all. The available options for filtering are:

Filter Type Default Description
state String all all, open or non_billable
period String this_year This can either be the description of a period (this_month, prev_month, next_month, this_quarter, prev_quarter, next_quarter, this_year, prev_year, next_year) or a custom period (201301..201302, 20130101..20130131)
contact_id Integer   Select time entries belonging to a certain contact
include_nil_contacts Boolean false Whether to include time entries that have no assigned contact
include_active Boolean false Whether to include active time entries i.e. time entries without ended_at
project_id Integer   Select time entries belonging to a certain project
user_id Integer   Select time entries belonging to a certain user
day Date   Select time entries on a specific date

You can filter by multiple states at the same time as well. To do this, separate the state values by a pipe: state:open|non_billable.

Parameters

Parameter Type Description
filter String
per_page Integer
query String

Allows filtering by time entry description.

Example: returns all time entries of an administration

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XGET \
  https://moneybird.com/api/v2/123/time_entries.json?
    

Response

        
          
          Status: 200 OK
        
      
[
  {
    "id": "460922354208343521",
    "administration_id": 123,
    "contact_id": "460922354191566301",
    "project_id": "460922354201003487",
    "sales_invoice_id": null,
    "user_id": 17537894859987,
    "started_at": "2025-07-29T11:50:00.000Z",
    "ended_at": "2025-07-29T12:50:00.000Z",
    "description": "Designing the website",
    "paused_duration": 0,
    "billable": true,
    "created_at": "2025-07-29T11:50:32.788Z",
    "updated_at": "2025-07-29T11:50:32.788Z",
    "contact": {
      "id": "460922354191566301",
      "firstname": "",
      "lastname": "",
      "company_name": "Foobar Holding B.V."
    },
    "user": {
      "id": 17537894859987,
      "name": "Moneybird",
      "created_at": "2025-07-29T11:44:45.989Z",
      "updated_at": "2025-07-29T11:44:46.182Z"
    },
    "project": {
      "id": "460922354201003487",
      "name": "Project 1",
      "state": "active",
      "budget": 10
    },
    "sales_invoice": null,
    "events": [
      {
        "administration_id": 123,
        "user_id": 17537894859987,
        "action": "time_entry_created",
        "link_entity_id": null,
        "link_entity_type": null,
        "data": {},
        "created_at": "2025-07-29T11:50:32.790Z",
        "updated_at": "2025-07-29T11:50:32.790Z"
      }
    ],
    "notes": []
  },
  {
    "id": "460922354227217892",
    "administration_id": 123,
    "contact_id": null,
    "project_id": null,
    "sales_invoice_id": null,
    "user_id": 1,
    "started_at": "2025-07-29T11:50:00.000Z",
    "ended_at": "2025-07-29T12:50:00.000Z",
    "description": "Designing the website",
    "paused_duration": 0,
    "billable": false,
    "created_at": "2025-07-29T11:50:32.806Z",
    "updated_at": "2025-07-29T11:50:32.806Z",
    "contact": null,
    "user": {
      "id": 1,
      "name": "Edwin Vlieg",
      "created_at": "2025-07-29T11:50:32.796Z",
      "updated_at": "2025-07-29T11:50:32.802Z"
    },
    "project": null,
    "sales_invoice": null,
    "events": [
      {
        "administration_id": 123,
        "user_id": 1,
        "action": "time_entry_created",
        "link_entity_id": null,
        "link_entity_type": null,
        "data": {},
        "created_at": "2025-07-29T11:50:32.807Z",
        "updated_at": "2025-07-29T11:50:32.807Z"
      }
    ],
    "notes": []
  },
  {
    "id": "460922354248189415",
    "administration_id": 123,
    "contact_id": null,
    "project_id": null,
    "sales_invoice_id": null,
    "user_id": 2,
    "started_at": "2025-07-29T11:50:00.000Z",
    "ended_at": "2025-07-29T12:50:00.000Z",
    "description": "Designing the website",
    "paused_duration": 0,
    "billable": true,
    "created_at": "2025-07-29T11:50:32.826Z",
    "updated_at": "2025-07-29T11:50:32.826Z",
    "contact": null,
    "user": {
      "id": 2,
      "name": "Edwin Vlieg",
      "created_at": "2025-07-29T11:50:32.813Z",
      "updated_at": "2025-07-29T11:50:32.819Z"
    },
    "project": null,
    "sales_invoice": null,
    "events": [
      {
        "administration_id": 123,
        "user_id": 2,
        "action": "time_entry_created",
        "link_entity_id": null,
        "link_entity_type": null,
        "data": {},
        "created_at": "2025-07-29T11:50:32.827Z",
        "updated_at": "2025-07-29T11:50:32.827Z"
      }
    ],
    "notes": []
  }
]
      

Example: returns all time entries filtered on period

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XGET \
  https://moneybird.com/api/v2/123/time_entries.json?filter=period%3Athis_month
    

Response

        
          
          Status: 200 OK
        
      
[
  {
    "id": "460922354408621551",
    "administration_id": 123,
    "contact_id": "460922354387650027",
    "project_id": "460922354400232941",
    "sales_invoice_id": null,
    "user_id": 17537894859987,
    "started_at": "2025-07-29T11:50:00.000Z",
    "ended_at": "2025-07-29T12:50:00.000Z",
    "description": "Designing the website",
    "paused_duration": 0,
    "billable": true,
    "created_at": "2025-07-29T11:50:32.979Z",
    "updated_at": "2025-07-29T11:50:32.979Z",
    "contact": {
      "id": "460922354387650027",
      "firstname": "",
      "lastname": "",
      "company_name": "Foobar Holding B.V."
    },
    "user": {
      "id": 17537894859987,
      "name": "Moneybird",
      "created_at": "2025-07-29T11:44:45.989Z",
      "updated_at": "2025-07-29T11:44:46.182Z"
    },
    "project": {
      "id": "460922354400232941",
      "name": "Project 1",
      "state": "active",
      "budget": 10
    },
    "sales_invoice": null,
    "events": [
      {
        "administration_id": 123,
        "user_id": 17537894859987,
        "action": "time_entry_created",
        "link_entity_id": null,
        "link_entity_type": null,
        "data": {},
        "created_at": "2025-07-29T11:50:32.980Z",
        "updated_at": "2025-07-29T11:50:32.980Z"
      }
    ],
    "notes": []
  },
  {
    "id": "460922354428544498",
    "administration_id": 123,
    "contact_id": null,
    "project_id": null,
    "sales_invoice_id": null,
    "user_id": 1,
    "started_at": "2025-07-29T11:50:00.000Z",
    "ended_at": "2025-07-29T12:50:00.000Z",
    "description": "Designing the website",
    "paused_duration": 0,
    "billable": false,
    "created_at": "2025-07-29T11:50:32.998Z",
    "updated_at": "2025-07-29T11:50:32.998Z",
    "contact": null,
    "user": {
      "id": 1,
      "name": "Edwin Vlieg",
      "created_at": "2025-07-29T11:50:32.986Z",
      "updated_at": "2025-07-29T11:50:32.995Z"
    },
    "project": null,
    "sales_invoice": null,
    "events": [
      {
        "administration_id": 123,
        "user_id": 1,
        "action": "time_entry_created",
        "link_entity_id": null,
        "link_entity_type": null,
        "data": {},
        "created_at": "2025-07-29T11:50:32.999Z",
        "updated_at": "2025-07-29T11:50:32.999Z"
      }
    ],
    "notes": []
  },
  {
    "id": "460922354463147509",
    "administration_id": 123,
    "contact_id": null,
    "project_id": null,
    "sales_invoice_id": null,
    "user_id": 2,
    "started_at": "2025-07-29T11:50:00.000Z",
    "ended_at": "2025-07-29T12:50:00.000Z",
    "description": "Designing the website",
    "paused_duration": 0,
    "billable": true,
    "created_at": "2025-07-29T11:50:33.030Z",
    "updated_at": "2025-07-29T11:50:33.030Z",
    "contact": null,
    "user": {
      "id": 2,
      "name": "Edwin Vlieg",
      "created_at": "2025-07-29T11:50:33.013Z",
      "updated_at": "2025-07-29T11:50:33.017Z"
    },
    "project": null,
    "sales_invoice": null,
    "events": [
      {
        "administration_id": 123,
        "user_id": 2,
        "action": "time_entry_created",
        "link_entity_id": null,
        "link_entity_type": null,
        "data": {},
        "created_at": "2025-07-29T11:50:33.033Z",
        "updated_at": "2025-07-29T11:50:33.033Z"
      }
    ],
    "notes": []
  }
]
      

Example: returns all time entries filtered on search query

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XGET \
  https://moneybird.com/api/v2/123/time_entries.json?query=Custom
    

Response

        
          
          Status: 200 OK
        
      
[
  {
    "id": "460922357443200521",
    "administration_id": 123,
    "contact_id": null,
    "project_id": null,
    "sales_invoice_id": null,
    "user_id": 3,
    "started_at": "2025-07-29T11:50:00.000Z",
    "ended_at": "2025-07-29T12:50:00.000Z",
    "description": "Custom description",
    "paused_duration": 0,
    "billable": true,
    "created_at": "2025-07-29T11:50:35.873Z",
    "updated_at": "2025-07-29T11:50:35.873Z",
    "contact": null,
    "user": {
      "id": 3,
      "name": "Edwin Vlieg",
      "created_at": "2025-07-29T11:50:35.865Z",
      "updated_at": "2025-07-29T11:50:35.869Z"
    },
    "project": null,
    "sales_invoice": null,
    "events": [
      {
        "administration_id": 123,
        "user_id": 3,
        "action": "time_entry_created",
        "link_entity_id": null,
        "link_entity_type": null,
        "data": {},
        "created_at": "2025-07-29T11:50:35.875Z",
        "updated_at": "2025-07-29T11:50:35.875Z"
      }
    ],
    "notes": []
  }
]
      

Example: returns all time entries filtered on state

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XGET \
  https://moneybird.com/api/v2/123/time_entries.json?filter=state%3Anon_billable
    

Response

        
          
          Status: 200 OK
        
      
[
  {
    "id": "460922357639284244",
    "administration_id": 123,
    "contact_id": null,
    "project_id": null,
    "sales_invoice_id": null,
    "user_id": 1,
    "started_at": "2025-07-29T11:50:00.000Z",
    "ended_at": "2025-07-29T12:50:00.000Z",
    "description": "Designing the website",
    "paused_duration": 0,
    "billable": false,
    "created_at": "2025-07-29T11:50:36.059Z",
    "updated_at": "2025-07-29T11:50:36.059Z",
    "contact": null,
    "user": {
      "id": 1,
      "name": "Edwin Vlieg",
      "created_at": "2025-07-29T11:50:36.051Z",
      "updated_at": "2025-07-29T11:50:36.055Z"
    },
    "project": null,
    "sales_invoice": null,
    "events": [
      {
        "administration_id": 123,
        "user_id": 1,
        "action": "time_entry_created",
        "link_entity_id": null,
        "link_entity_type": null,
        "data": {},
        "created_at": "2025-07-29T11:50:36.061Z",
        "updated_at": "2025-07-29T11:50:36.061Z"
      }
    ],
    "notes": []
  }
]
      

Example: returns paginated time entries on page 1

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XGET \
  https://moneybird.com/api/v2/123/time_entries.json?per_page=1
    

Response

        
          
          Status: 200 OK
        
      
[
  {
    "id": "460922357792376351",
    "administration_id": 123,
    "contact_id": "460922357774550555",
    "project_id": "460922357786084893",
    "sales_invoice_id": null,
    "user_id": 17537894859987,
    "started_at": "2025-07-29T11:50:00.000Z",
    "ended_at": "2025-07-29T12:50:00.000Z",
    "description": "Designing the website",
    "paused_duration": 0,
    "billable": true,
    "created_at": "2025-07-29T11:50:36.206Z",
    "updated_at": "2025-07-29T11:50:36.206Z",
    "contact": {
      "id": "460922357774550555",
      "firstname": "",
      "lastname": "",
      "company_name": "Foobar Holding B.V."
    },
    "user": {
      "id": 17537894859987,
      "name": "Moneybird",
      "created_at": "2025-07-29T11:44:45.989Z",
      "updated_at": "2025-07-29T11:44:46.182Z"
    },
    "project": {
      "id": "460922357786084893",
      "name": "Project 1",
      "state": "active",
      "budget": 10
    },
    "sales_invoice": null,
    "events": [
      {
        "administration_id": 123,
        "user_id": 17537894859987,
        "action": "time_entry_created",
        "link_entity_id": null,
        "link_entity_type": null,
        "data": {},
        "created_at": "2025-07-29T11:50:36.207Z",
        "updated_at": "2025-07-29T11:50:36.207Z"
      }
    ],
    "notes": []
  }
]
      

Example: returns paginated time entries on page 2

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XGET \
  https://moneybird.com/api/v2/123/time_entries.json?page=2&per_page=1
    

Response

        
          
          Status: 200 OK
        
      
[
  {
    "id": "460922357994751536",
    "administration_id": 123,
    "contact_id": null,
    "project_id": null,
    "sales_invoice_id": null,
    "user_id": 1,
    "started_at": "2025-07-29T11:50:00.000Z",
    "ended_at": "2025-07-29T12:50:00.000Z",
    "description": "Designing the website",
    "paused_duration": 0,
    "billable": false,
    "created_at": "2025-07-29T11:50:36.399Z",
    "updated_at": "2025-07-29T11:50:36.399Z",
    "contact": null,
    "user": {
      "id": 1,
      "name": "Edwin Vlieg",
      "created_at": "2025-07-29T11:50:36.391Z",
      "updated_at": "2025-07-29T11:50:36.395Z"
    },
    "project": null,
    "sales_invoice": null,
    "events": [
      {
        "administration_id": 123,
        "user_id": 1,
        "action": "time_entry_created",
        "link_entity_id": null,
        "link_entity_type": null,
        "data": {},
        "created_at": "2025-07-29T11:50:36.400Z",
        "updated_at": "2025-07-29T11:50:36.400Z"
      }
    ],
    "notes": []
  }
]
      

Example: returns an error when too many time entries are requested

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XGET \
  https://moneybird.com/api/v2/123/time_entries.json?per_page=101
    

Response

        
          
          Status: 400 Bad Request
        
      
{
  "error": "per_page does not have a valid value"
}
      

Example: returns an error message if filter contact_id is not found

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XGET \
  https://moneybird.com/api/v2/123/time_entries.json?filter=contact_id%3A123
    

Response

        
          
          Status: 404 Not Found
        
      
{
  "error": "record not found",
  "symbolic": {
    "contact_id": "not_found"
  }
}
      

Example: returns an error message if filter user_id is not found

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XGET \
  https://moneybird.com/api/v2/123/time_entries.json?filter=user_id%3A123
    

Response

        
          
          Status: 404 Not Found
        
      
{
  "error": "record not found",
  "symbolic": {
    "user_id": "not_found"
  }
}
      

Get a time entry by id

Returns a time entry in the administration.

Example: returns time entry by given id

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XGET \
  https://moneybird.com/api/v2/123/time_entries/460922358784329317.json?
    

Response

        
          
          Status: 200 OK
        
      
{
  "id": "460922358784329317",
  "administration_id": 123,
  "contact_id": "460922358764406369",
  "project_id": "460922358774892131",
  "sales_invoice_id": null,
  "user_id": 17537894859987,
  "started_at": "2025-07-29T11:50:00.000Z",
  "ended_at": "2025-07-29T12:50:00.000Z",
  "description": "Designing the website",
  "paused_duration": 0,
  "billable": true,
  "created_at": "2025-07-29T11:50:37.152Z",
  "updated_at": "2025-07-29T11:50:37.152Z",
  "contact": {
    "id": "460922358764406369",
    "firstname": "",
    "lastname": "",
    "company_name": "Foobar Holding B.V."
  },
  "user": {
    "id": 17537894859987,
    "name": "Moneybird",
    "created_at": "2025-07-29T11:44:45.989Z",
    "updated_at": "2025-07-29T11:44:46.182Z"
  },
  "project": {
    "id": "460922358774892131",
    "name": "Project 1",
    "state": "active",
    "budget": 10
  },
  "sales_invoice": null,
  "events": [
    {
      "administration_id": 123,
      "user_id": 17537894859987,
      "action": "time_entry_created",
      "link_entity_id": null,
      "link_entity_type": null,
      "data": {},
      "created_at": "2025-07-29T11:50:37.154Z",
      "updated_at": "2025-07-29T11:50:37.154Z"
    }
  ],
  "notes": []
}
      

Example: returns 404 when time entry does not exist

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XGET \
  https://moneybird.com/api/v2/123/time_entries/34123123.json?
    

Response

        
          
          Status: 404 Not Found
        
      
{
  "error": "record not found",
  "symbolic": {
    "id": "not_found"
  }
}
      

Create a time entry

Api user needs access to both sales invoices and time entries for this action. started_at and ended_at are rounded down to full minutes when creating a time entry, with a minimum of 1 minute between them.

Parameters

Parameter Type Description
time_entry[user_id] Integer

Required

Should be a valid user id.

time_entry[started_at] Datetime

Required

time_entry[ended_at] Datetime

Required.

time_entry[description] String

Required

time_entry[contact_id] Integer

Should be a valid contact id.

time_entry[project_id] Integer

Should be a valid project id.

time_entry[sales_invoice_id] Integer

Should be a valid sales invoice id.

time_entry[billable] Boolean
time_entry[paused_duration] Integer

Total paused duration in seconds, is rounded down to full minutes.

Example: create a basic time entry

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XPOST \
  -d '{"time_entry":{"started_at":"2025-07-29 11:50:00 UTC","ended_at":"2025-07-29 12:50:00 UTC","description":"Test","contact_id":460922359060104817,"project_id":460922359072687731,"user_id":17537894859987,"billable":false}}' \
  https://moneybird.com/api/v2/123/time_entries
    

Response

        
          
          Status: 201 Created
        
      
{
  "id": "460922359145039477",
  "administration_id": 123,
  "contact_id": "460922359060104817",
  "project_id": "460922359072687731",
  "sales_invoice_id": null,
  "user_id": 17537894859987,
  "started_at": "2025-07-29T11:50:00.000Z",
  "ended_at": "2025-07-29T12:50:00.000Z",
  "description": "Test",
  "paused_duration": 0,
  "billable": false,
  "created_at": "2025-07-29T11:50:37.496Z",
  "updated_at": "2025-07-29T11:50:37.496Z",
  "contact": {
    "id": "460922359060104817",
    "firstname": "",
    "lastname": "",
    "company_name": "Foobar Holding B.V."
  },
  "user": {
    "id": 17537894859987,
    "name": "Moneybird",
    "created_at": "2025-07-29T11:44:45.989Z",
    "updated_at": "2025-07-29T11:44:46.182Z"
  },
  "project": {
    "id": "460922359072687731",
    "name": "Project 1",
    "state": "active",
    "budget": 10
  },
  "sales_invoice": null,
  "events": [
    {
      "administration_id": 123,
      "user_id": 17537894859987,
      "action": "time_entry_created",
      "link_entity_id": null,
      "link_entity_type": null,
      "data": {},
      "created_at": "2025-07-29T11:50:37.498Z",
      "updated_at": "2025-07-29T11:50:37.498Z"
    }
  ],
  "notes": []
}
      

Example: returns an error when invalid details are provided

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XPOST \
  -d '{"time_entry":{"started_at":"2025-07-29 11:50:00 UTC","ended_at":"2025-07-29 10:50:00 UTC","user_id":17537894859987,"billable":false}}' \
  https://moneybird.com/api/v2/123/time_entries
    

Response

        
          
          Status: 422 Unprocessable Entity
        
      
{
  "error": {
    "ended_at": [
      "cannot be before the start time"
    ],
    "description": [
      "can't be blank"
    ]
  },
  "details": {
    "ended_at": [
      {
        "error": "ended_at_before_started_at"
      }
    ],
    "description": [
      {
        "error": "blank"
      }
    ]
  }
}
      

Example: returns 404 when sales_invoice_id does not exist

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XPOST \
  -d '{"time_entry":{"started_at":"2025-07-29 11:50:00 UTC","ended_at":"2025-07-29 12:50:00 UTC","user_id":17537894859987,"billable":false,"description":"","sales_invoice_id":123}}' \
  https://moneybird.com/api/v2/123/time_entries
    

Response

        
          
          Status: 404 Not Found
        
      
{
  "error": "no sales invoice with given ID found",
  "symbolic": {
    "sales_invoice_id": "not_found"
  }
}
      

Example: returns 402 when limit is reached

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XPOST \
  -d '{"time_entry":{"started_at":"2025-07-29 11:50:00 UTC","ended_at":"2025-07-29 12:50:00 UTC","user_id":17537894859987,"billable":false,"description":""}}' \
  https://moneybird.com/api/v2/123/time_entries
    

Response

        
          
          Status: 402 Payment Required
        
      
{
  "error": "creating time entries is limited",
  "symbolic": {
    "administration": "limit_reached"
  }
}
      

Update a time entry

When updating a time entry, provide only the attributes you want to update. The other attributes will not be changed. started_at and ended_at are rounded down to full minutes when updating a time entry, with a minimum of 1 minute between them.

Parameters

Parameter Type Description
time_entry[started_at] Datetime
time_entry[ended_at] Datetime

Required.

time_entry[paused_duration] Integer

Total paused duration in seconds, is rounded down to full minutes.

time_entry[contact_id] Integer

Should be a valid contact id.

time_entry[project_id] Integer

Should be a valid project id.

time_entry[sales_invoice_id] Integer

Should be a valid sales invoice id.

time_entry[description] String
time_entry[billable] Boolean

Example: updating the time entry description

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XPATCH \
  -d '{"time_entry":{"description":"Updated description"}}' \
  https://moneybird.com/api/v2/123/time_entries/460922359588587133
    

Response

        
          
          Status: 200 OK
        
      
{
  "id": "460922359588587133",
  "administration_id": 123,
  "contact_id": "460922359556081273",
  "project_id": "460922359576004219",
  "sales_invoice_id": null,
  "user_id": 17537894859987,
  "started_at": "2025-07-29T11:50:00.000Z",
  "ended_at": "2025-07-29T12:50:00.000Z",
  "description": "Updated description",
  "paused_duration": 0,
  "billable": true,
  "created_at": "2025-07-29T11:50:37.917Z",
  "updated_at": "2025-07-29T11:50:37.986Z",
  "contact": {
    "id": "460922359556081273",
    "firstname": "",
    "lastname": "",
    "company_name": "Foobar Holding B.V."
  },
  "user": {
    "id": 17537894859987,
    "name": "Moneybird",
    "created_at": "2025-07-29T11:44:45.989Z",
    "updated_at": "2025-07-29T11:44:46.182Z"
  },
  "project": {
    "id": "460922359576004219",
    "name": "Project 1",
    "state": "active",
    "budget": 10
  },
  "sales_invoice": null,
  "events": [
    {
      "administration_id": 123,
      "user_id": 17537894859987,
      "action": "time_entry_created",
      "link_entity_id": null,
      "link_entity_type": null,
      "data": {},
      "created_at": "2025-07-29T11:50:37.922Z",
      "updated_at": "2025-07-29T11:50:37.922Z"
    },
    {
      "administration_id": 123,
      "user_id": 17537894859987,
      "action": "time_entry_updated",
      "link_entity_id": null,
      "link_entity_type": null,
      "data": {
        "description": [
          "Designing the website",
          "Updated description"
        ],
        "updated_at": [
          "2025-07-29T13:50:37.917+02:00",
          "2025-07-29T13:50:37.986+02:00"
        ]
      },
      "created_at": "2025-07-29T11:50:37.991Z",
      "updated_at": "2025-07-29T11:50:37.991Z"
    }
  ],
  "notes": []
}
      

Example: returns 404 when time entry does not exist

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XPATCH \
  -d '{"time_entry":{"description":"irrelevant"}}' \
  https://moneybird.com/api/v2/123/time_entries/99999999
    

Response

        
          
          Status: 404 Not Found
        
      
{
  "error": "record not found",
  "symbolic": {
    "id": "not_found"
  }
}
      

Example: returns 422 when invalid data is provided

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XPATCH \
  -d '{"time_entry":{"description":""}}' \
  https://moneybird.com/api/v2/123/time_entries/460922359902111366
    

Response

        
          
          Status: 422 Unprocessable Entity
        
      
{
  "error": {
    "description": [
      "can't be blank"
    ]
  },
  "details": {
    "description": [
      {
        "error": "blank"
      }
    ]
  }
}
      

Delete a time entry

Example: deletes given time entry

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XDELETE \
  -d '{}' \
  https://moneybird.com/api/v2/123/time_entries/460922360044717710.json
    

Response

Example: returns 404 when time entry does not exist

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XDELETE \
  -d '{}' \
  https://moneybird.com/api/v2/123/time_entries/99999999.json
    

Response

        
          
          Status: 404 Not Found
        
      
{
  "error": "record not found",
  "symbolic": {
    "id": "not_found"
  }
}
      

Adds note to entity

Parameters

Parameter Type Description
note[note] String

Required. Text for the note or to-do.

note[todo] Boolean

If true the note is a to-do.

note[assignee_id] Integer

Assign to-do to user. Should be a valid user id. If assignee_id is provided the note will be a to-do.

Example: create a note

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XPOST \
  -d '{"note":{"note":"Text of the note","assignee_id":460922360279598737,"todo":true}}' \
  https://moneybird.com/api/v2/123/time_entries/460922360327833241/notes.json
    

Response

        
          
          Status: 201 Created
        
      
{
  "id": "460922360399136411",
  "administration_id": 123,
  "entity_id": "460922360327833241",
  "entity_type": "TimeEntry",
  "user_id": 17537894859987,
  "assignee_id": "460922360279598737",
  "todo": true,
  "note": "Text of the note",
  "completed_at": null,
  "completed_by_id": null,
  "todo_type": null,
  "data": {},
  "created_at": "2025-07-29T11:50:38.691Z",
  "updated_at": "2025-07-29T11:50:38.691Z"
}
      

Example: returns 422 when invalid note data is provided

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XPOST \
  -d '{"note":{"note":""}}' \
  https://moneybird.com/api/v2/123/time_entries/460922360498751139/notes.json
    

Response

        
          
          Status: 422 Unprocessable Entity
        
      
{
  "error": {
    "note": [
      "can't be blank"
    ],
    "todo_type": [
      "can't be blank"
    ]
  },
  "details": {
    "note": [
      {
        "error": "blank"
      }
    ],
    "todo_type": [
      {
        "error": "blank"
      }
    ]
  }
}
      

Destroys note from entity

Example: destroy a note

Request

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer 84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab" \
  -XDELETE \
  -d '{}' \
  https://moneybird.com/api/v2/123/time_entries/460922360641357483/notes/460922360650794669.json
    

Response