Suggest Edits

Welcome 👋

 

Welcome to Holded's REST API

We are glad to have your here! In our developer's hub you'll find everything you need to interact with our platform.

The Holded's API is organized around REST, using HTTP responses code to keep you informed about what's going on. Our endpoints will return metada in Json format. 🎉

All the "List" methods (GET) are paginated, you can get more pages by query params i.e. ?page=2.

All requests are validated against an API key. You can obtain it manually from Holded's platform (as you'll see documented below).

We tried to keep the documentation as clear and simple as possible. Thus you can test our endpoints with your own API key, see the responses code directly, etc.

Missing endpoints? Send us a message at [email protected] or add it as a suggestion.✌️

 

Authentication

Authenticate your account when using the API by including your secret API key in the request.

Manage your API Keys here (https://app.holded.com/api) or going to Configuration (top bar) -> API. 😉

Your API keys carry many privileges, so be sure to keep them secret! 🤫 Do not share your API keys in publicly accessible areas such GitHub, client-side code, and so forth.

To use your API key, you need only call the api with your key in the header as follow:

Include your Api Key in the Header

key : <yourApiKey>

All API requests must be made over HTTPS and Content-type as application/json.

Calls made over plain HTTP will fail. API requests without authentication will also fail. 😱

 

Manage your clients and providers. Exclusive panels to view all their sales, purchases and related info. Add shipping addresses, social networks and create your customized fields.

Suggest Edits

List Contacts

Get all your contact.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/contacts
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/contacts
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/contacts' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/contacts")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/contacts");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/contacts"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

[
  {
    "id": "5aaa43d35b7064002613c048",
    "customId": "myReferenceId",
    "name": "Custom Tech Inc.",
    "code": "B3737387",
    "tradeName": "Mapple",
    "email": "[email protected]",
    "mobile": "63738383",
    "phone": "3949494",
    "type": "client",
    "iban": "ES436677378638786",
    "swift": "",
    "clientRecord": 0,
    "supplierRecord": 0,
    "billAddress": {
      "address": "Carrer del Mar",
      "city": "Barcelona",
      "postalCode": 8767,
      "province": "Barcelona",
      "country": "Spain",
      "countryCode": "ES",
      "info": "Random info"
    },
    "defaults": {
      "salesChannel": 0,
      "expensesAccount": 0,
      "dueDays": 3,
      "paymentMethod": 0,
      "discount": 45,
      "language": "fr",
      "currency": "eur",
      "tax": "default",
      "retention": "default"
    },
    "socialNetworks": {
      "website": "www.mapple.com"
    },
    "tags": [
      "tag",
      "otherTag"
    ],
    "notes": [
      {
        "noteId": "5aba2365c5d43800316b2a53",
        "name": "My first note",
        "description": "An important note",
        "color": "primary",
        "updatedAt": 1522148197,
        "userId": "5a05cc5a60cea100094baf22"
      },
      {
        "noteId": "5aba26efc5d43800316b2a54",
        "name": "Note",
        "description": "Another note",
        "color": "#ee575d",
        "updatedAt": 1522149103,
        "userId": ""
      }
    ],
    "contactPersons": [
      {
        "personId": "5aba40fdc5d43800316b2a55",
        "name": "Pep",
        "job": "Ito",
        "phone": "966",
        "email": "[email protected]",
        "sendDocumentsByDefault": true,
        "linkedin": "no link"
      }
    ],
    "shippingAddresses": [
      {
        "shippingId": "5aba4147c5d43800342fc4a3",
        "name": "Mapple shipping address",
        "address": "c/Lafranch",
        "city": "Vilafranca del Monport ",
        "postalCode": 899,
        "province": "Barcelona",
        "country": "Spain",
        "countryCode": "ES",
        "notes": "A public note",
        "privateNotes": "This is a private note, don't read it"
      }
    ],
    "customFields": [
      {
        "field": "FieldOne",
        "value": "valueOne"
      }
    ]
  }
]

Response

Suggest Edits

Create Contact

Create a new contact.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/contacts
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/contacts
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/contacts' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/contacts")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/contacts");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/contacts"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Created",
  "id": "5ac4f2cec839ea004e18a463"
}

Body Params

CustomId
string
name
string
required
code
string
email
string
mobile
string
phone
string
type
string
iban
string
swift
string
sepaRef
string
groupId
string
taxOperation
string

options for Spain (general, intra, impexp, nosujeto, receq, exento)

sepaDate
number
clientRecord
integer
supplierRecord
integer
billAddress
object
 
billAddress.address
string
billAddress.city
string
billAddress.postalCode
string
billAddress.province
string
billAddress.country
string
numberingSeries
object

The value of each document should be a valid ID.

 
numberingSeries.invoice
string
numberingSeries.receipt
string
numberingSeries.salesOrder
string
numberingSeries.purchasesOrder
string
numberingSeries.proform
string
numberingSeries.waybill
string
shippingAddresses
array of objects
name
address
city
postalCode
province
country
note
privateNote
defaults
object
 
defaults.expensesAccountRecord
integer
defaults.expensesAccountName
string
defaults.salesAccountRecord
integer
defaults.salesAccountName
string
defaults.dueDays
integer
defaults.salesTax
integer
defaults.purchasesTax
integer
defaults.paymentMethod
string

Should be a valid ID

defaults.discount
integer
defaults.language
string

options (es = spanish, en = english, fr = french, de = german, it = italian, ca = catalan, eu = euskera)

defaults.showTradeNameOnDocs
boolean
defaults.showCountryOnDocs
boolean
socialNetworks
object
 
socialNetworks.website
string
tags
array of strings
notes
string
contactPersons
object
 
contactPersons.name
string
contactPersons.phone
string
contactPersons.email
string

Response

statusinteger
infostring
idstring
Suggest Edits

Get Contact

Get a specific contact.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/contacts/contactId
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/contacts/contactId
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/contacts/contactId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/contacts/contactId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/contacts/contactId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/contacts/contactId"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "id": "5aaa43d35b7064002613c048",
  "customId": "myReferenceId",
  "name": "Custom Tech Inc.",
  "code": "B3737387",
  "tradeName": "Mapple",
  "email": "[email protected]",
  "mobile": "63738383",
  "phone": "3949494",
  "type": "client",
  "iban": "ES436677378638786",
  "swift": "",
  "clientRecord": 0,
  "supplierRecord": 0,
  "billAddress": {
    "address": "Carrer del Mar",
    "city": "Barcelona",
    "postalCode": 8767,
    "province": "Barcelona",
    "country": "Spain",
    "countryCode": "ES",
    "info": "Random info"
  },
  "defaults": {
    "salesChannel": 0,
    "expensesAccount": 0,
    "dueDays": 3,
    "paymentMethod": 0,
    "discount": 45,
    "language": "fr",
    "currency": "eur",
    "tax": "default",
    "retention": "default"
  },
  "socialNetworks": {
    "website": "www.mapple.com"
  },
  "tags": [
    "tag",
    "otherTag"
  ],
  "notes": [
    {
      "noteId": "5aba2365c5d43800316b2a53",
      "name": "My first note",
      "description": "An important note",
      "color": "primary",
      "updatedAt": 1522148197,
      "userId": "5a05cc5a60cea100094baf22"
    },
    {
      "noteId": "5aba26efc5d43800316b2a54",
      "name": "Note",
      "description": "Another note",
      "color": "#ee575d",
      "updatedAt": 1522149103,
      "userId": ""
    }
  ],
  "contactPersons": [
    {
      "personId": "5aba40fdc5d43800316b2a55",
      "name": "Pep",
      "job": "Ito",
      "phone": "966",
      "email": "[email protected]",
      "sendDocumentsByDefault": true,
      "linkedin": "no link"
    }
  ],
  "shippingAddresses": [
    {
      "shippingId": "5aba4147c5d43800342fc4a3",
      "name": "Mapple shipping address",
      "address": "c/LLafranch",
      "city": "Vilafranca del Monport ",
      "postalCode": 899,
      "province": "Lleida",
      "country": "Spain",
      "countryCode": "ES",
      "notes": "A public note",
      "privateNotes": "This is a private note, don't read it"
    }
  ],
  "customFields": [
    {
      "field": "FieldOne",
      "value": "noValue"
    }
  ]
}

Path Params

contactId
string
required

Response

idstring
customIdstring
namestring
codestring
tradeNamestring
emailstring
mobilestring
phonestring
typestring
ibanstring
swiftstring
clientRecordinteger
supplierRecordinteger
billAddressobject
billAddress.addressstring
billAddress.citystring
billAddress.postalCodeinteger
billAddress.provincestring
billAddress.countrystring
billAddress.countryCodestring
billAddress.infostring
defaultsobject
defaults.salesChannelinteger
defaults.expensesAccountinteger
defaults.dueDaysinteger
defaults.paymentMethodinteger
defaults.discountinteger
defaults.languagestring
defaults.currencystring
defaults.taxstring
defaults.retentionstring
socialNetworksobject
socialNetworks.websitestring
tagsarray
notesarray
contactPersonsarray
shippingAddressesarray
customFieldsarray
Suggest Edits

Update Contact

Update a specific contact.

Only the params included in the operation will update the contact.

 

Header Auth

 Authentication is required for this endpoint.
puthttps://api.holded.com/api/invoicing/v1/contacts/contactId
curl --request PUT \
  --url https://api.holded.com/api/invoicing/v1/contacts/contactId
var request = require("request");

var options = { method: 'PUT',
  url: 'https://api.holded.com/api/invoicing/v1/contacts/contactId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/contacts/contactId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://api.holded.com/api/invoicing/v1/contacts/contactId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/contacts/contactId"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Updated",
  "id": "5ac4f2cec839ea004e18a463"
}

Path Params

contactId
string
required

Body Params

name
string
code
string
tradeName
string
email
string
mobile
string
phone
string
type
string
iban
string
swift
string
sepaRef
string
sepaDate
number
clientRecord
integer
supplierRecord
integer
groupId
string
taxOperation
string

options for Spain (general, intra, impexp, nosujeto, receq, exento)

billAddress
object
 
billAddress.address
string
billAddress.city
string
billAddress.postalCode
string
billAddress.province
string
billAddress.country
string
billAddress.countryCode
string
shippingAddresses
array of objects
name
address
city
postalCode
province
country
notes
privateNote
defaults
object
 
defaults.expensesAccountRecord
integer
defaults.expensesAccountName
string
defaults.salesAccountRecord
integer
defaults.salesAccountName
string
defaults.dueDays
integer
defaults.salesTax
integer
defaults.purchasesTax
integer
defaults.paymentMethod
string

Should be a valid ID.

defaults.discount
integer
defaults.language
string

options (es = spanish, en = english, fr = french, de = german, it = italian, ca = catalan, eu = euskera)

defaults.showTradeNameOnDocs
boolean
defaults.showCountryOnDocs
boolean
socialNetworks
object
 
socialNetworks.website
string
numberingSeries
object

The value of each document should be a valid ID.

 
numberingSeries.invoice
string
numberingSeries.receipt
string
numberingSeries.salesOrder
string
numberingSeries.purchasesOrder
string
numberingSeries.proform
string
numberingSeries.waybill
string

Response

statusinteger
infostring
idstring
Suggest Edits

Delete Contact

Delete specific contact.

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.holded.com/api/invoicing/v1/contacts/contactId
curl --request DELETE \
  --url https://api.holded.com/api/invoicing/v1/contacts/contactId
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.holded.com/api/invoicing/v1/contacts/contactId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/contacts/contactId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.holded.com/api/invoicing/v1/contacts/contactId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/contacts/contactId"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Successfully deleted",
  "id": "5aba68b1c5d438006425ad45"
}

Path Params

contactId
string
required

Response

statusinteger
infostring
idstring
Suggest Edits

CONTACT GROUPS

 
Suggest Edits

List Contact Groups

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/contacts/groups
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/contacts/groups
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/contacts/groups' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/contacts/groups")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/contacts/groups");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/contacts/groups"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Response

Suggest Edits

Create Contact Group

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/contacts/groups
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/contacts/groups
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/contacts/groups' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/contacts/groups")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/contacts/groups");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/contacts/groups"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Body Params

name
string
required
desc
string
color
string

Response

statusinteger
infostring
idstring
Suggest Edits

Get Contact Group

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/contacts/groups/groupId
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/contacts/groups/groupId
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/contacts/groups/groupId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/contacts/groups/groupId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/contacts/groups/groupId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/contacts/groups/groupId"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

groupId
string
required

Response

idstring
namestring
descstring
colorstring
Suggest Edits

Update Contact Group

 

Header Auth

 Authentication is required for this endpoint.
puthttps://api.holded.com/api/invoicing/v1/contacts/groups/groupId
curl --request PUT \
  --url https://api.holded.com/api/invoicing/v1/contacts/groups/groupId
var request = require("request");

var options = { method: 'PUT',
  url: 'https://api.holded.com/api/invoicing/v1/contacts/groups/groupId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/contacts/groups/groupId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://api.holded.com/api/invoicing/v1/contacts/groups/groupId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/contacts/groups/groupId"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

groupId
string
required

Body Params

name
string
desc
string
color
string

Response

statusinteger
infostring
idstring
Suggest Edits

Delete Contact Group

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.holded.com/api/invoicing/v1/contacts/groups/groupId
curl --request DELETE \
  --url https://api.holded.com/api/invoicing/v1/contacts/groups/groupId
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.holded.com/api/invoicing/v1/contacts/groups/groupId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/contacts/groups/groupId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.holded.com/api/invoicing/v1/contacts/groups/groupId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/contacts/groups/groupId"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Successfully deleted",
  "id": "5aba68b1c5d438006425ad45"
}

Path Params

groupId
string
required

Response

statusinteger
infostring
idstring
 

Manage products with variants or lots. Create product packs and manage the stock together. Do not give up on anything and get the full potential of Holded with Inventory.

Create custom attributes to sort your products as you want, tailor-made, no more and no less. For example you can create an attribute that identifies the product family and precreate the options you want to have, so when creating a new product will appear and avoid errors.

Holded Inventory allows you to take inventory management to the next level. Customize to the last detail your products, as well as your processes and adapt Holded to your business. Manage multiple rates and assign them to certain clients by default. It also works with multiple warehouses and turns your business into a global management.

Suggest Edits

List Products

Get all your products.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/products
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/products
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/products' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/products")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/products");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/products"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

[
  {
    "id": "5abbc9980823dd002b5c36f5",
    "kind": "simple",
    "name": "Brand new shirt",
    "desc": "Black shirt",
    "typeId": "5abbc8e40823dd00274ca482",
    "contactId": "5aaa51ab5b70640028340186",
    "contactName": "Iron Supply",
    "price": 95,
    "tax": 21,
    "total": 119.45,
    "rates": [],
    "hasStock": 1,
    "stock": 2,
    "barcode": "45the54",
    "sku": "23454657",
    "cost": 20,
    "weight": 0.5,
    "tags": [
      "tig",
      "tag",
      "tug"
    ],
    "categoryId": "5abbc9110823dd0025411fb4",
    "factoryCode": "32435g",
    "attributes": [],
    "forSale": 1,
    "forPurchase": 1,
    "salesChannelId": "5abbc324g3vdd002b5c36f3",
    "expAccountId": "5abbc9980823d3245b5c36f3",
    "warehouseId": "5abbc89e5823dd002b5c36f3",
    "variants": [
      {
        "id": "5abbc9980823dd002b5c36f3",
        "barcode": "35647",
        "sku": "34354",
        "price": 45,
        "cost": 20,
        "stock": 2
      },
      {
        "id": "5abbc9980823dd002b5c36f4",
        "barcode": "",
        "sku": "",
        "price": 45,
        "cost": 20,
        "stock": 0
      }
    ]
  },
  {
    "id": "5abbd1cf0823dd004562b685",
    "kind": "simple",
    "name": "Tata shoes",
    "desc": "brand new shoes",
    "typeId": "480yhfn2b3498o243upj2",
    "contactId": "2p4hjrnfob3hli2khpn",
    "contactName": "Tata industry",
    "price": 100,
    "tax": 21,
    "total": 121,
    "rates": [],
    "hasStock": 1,
    "stock": 234,
    "barcode": "232435465",
    "sku": "234rwt54",
    "cost": 39,
    "weight": 0,
    "tags": [
      ""
    ],
    "categoryId": "5abbd15e0823dd003b085005",
    "factoryCode": "324t5f4",
    "attributes": [],
    "forSale": 1,
    "forPurchase": 1,
    "salesChannelId": "0",
    "expAccountId": "0",
    "warehouseId": "0",
    "variants": [
      {
        "id": "5abbd1cf0823dd004562b683",
        "barcode": "123",
        "sku": "123",
        "price": 2,
        "cost": 1,
        "stock": 234
      },
      {
        "id": "5abbd1cf0823dd004562b684",
        "barcode": "",
        "sku": "",
        "price": 0,
        "cost": 0,
        "stock": 0
      }
    ]
  },
  {
    "id": "5abbca020823dd00343d0a44",
    "kind": "simple",
    "name": "new simple product",
    "desc": "the best simple product you can buy",
    "typeId": "3l4kbn5j3oknl645t574354",
    "contactId": "",
    "contactName": "",
    "price": 0,
    "tax": 21,
    "total": 0,
    "rates": [],
    "hasStock": 1,
    "stock": 0,
    "barcode": "",
    "sku": "",
    "cost": 0,
    "weight": 0,
    "tags": [
      ""
    ],
    "categoryId": "0",
    "factoryCode": "",
    "attributes": [],
    "forSale": 1,
    "forPurchase": 1,
    "salesChannelId": "0",
    "expAccountId": "0",
    "warehouseId": "0",
    "variants": [
      {
        "id": "5abbca020823dd00343d0a43",
        "barcode": "",
        "sku": "",
        "price": 0,
        "cost": 0,
        "stock": 0
      }
    ]
  }
]

Response

Suggest Edits

Create Product

Create a new product.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/products
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/products
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/products' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/products")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/products");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/products"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Created",
  "id": "5aa97e595b706400153f9f94"
}

Body Params

kind
string
name
string
desc
string
price
number
tax
number
cost
number
tags
array of strings
barcode
string
sku
string
weight
number
stock
integer

Response

statusinteger
infostring
idstring

Products creation

If you don't have the Inventory app, the only kind of products you are allowed to create is simple ("kind":"simple").
If you are enjoying our Inventory app, your are allowed to create different types of products such as "lots, variants or pack".

If you have the Inventory app..

In order to create a product with variants, lots or pack you just have to set the field kind to your desired type. Then you can add a variants array field (in the pack case, instead of "variants" the name of the field should be "packItems") with the following objects structure as follow:

{
  "kind": "variants",
  "variants": [
    {
    "code":"0123i",
"sku":"sku1",
"subtotal":20,
"cost": 5,
"stock": 10
    }
  ]
}

{
  "kind": "lots",
  "variants": [
    {
    "code":"3333test",
"sku":"ps123",
"desc":"my first lot",
"creationDate": 1540887390,
"endDate": 1546166520
    }
  ]
}

{
  "kind": "pack",
  "packItems": [
    {
    "productId":"5bc45f5b4c4bea00183e8096",
"variantId":"5bc45f5b4c4bea00183e8095",
"units": 100
    }
  ]
}

Suggest Edits

Update Product

Update a specific product.

Only the params included in the operation will update the product.

 

Header Auth

 Authentication is required for this endpoint.
puthttps://api.holded.com/api/invoicing/v1/products/productId
curl --request PUT \
  --url https://api.holded.com/api/invoicing/v1/products/productId
var request = require("request");

var options = { method: 'PUT',
  url: 'https://api.holded.com/api/invoicing/v1/products/productId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/products/productId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://api.holded.com/api/invoicing/v1/products/productId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/products/productId"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Updated",
  "id": "5aa97e595b706400153f9f94"
}

Path Params

productId
string
required

Body Params

kind
string
name
string
desc
string
tax
integer
subtotal
number
barcode
string
sku
string
cost
integer
weight
number

Response

statusinteger
infostring
idstring
Suggest Edits

Delete Product

Delete specific product.

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.holded.com/api/invoicing/v1/products/productId
curl --request DELETE \
  --url https://api.holded.com/api/invoicing/v1/products/productId
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.holded.com/api/invoicing/v1/products/productId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/products/productId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.holded.com/api/invoicing/v1/products/productId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/products/productId"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Successfully deleted",
  "id": "5aba68b1c5d438006425ad45"
}

Path Params

productId
string
required

Response

statusinteger
infostring
idstring
Suggest Edits

Get Product

Get a speccific product

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/products/productId
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/products/productId
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/products/productId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/products/productId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/products/productId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/products/productId"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

productId
string
required

Response

Suggest Edits

Get Product Main Image

Get the main image of a specific product

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/products/productId/image
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/products/productId/image
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/products/productId/image' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/products/productId/image")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/products/productId/image");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/products/productId/image"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

productId
string
required

Response

Suggest Edits

List Product Images

List all secondary product images

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/products/productId/imagesList
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/products/productId/imagesList
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/products/productId/imagesList' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/products/productId/imagesList")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/products/productId/imagesList");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/products/productId/imagesList"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

productId
string
required

Response

Suggest Edits

Get Product Secondary Image

Get a specific secondary Image

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/products/productId/image/imageFileName
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/products/productId/image/imageFileName
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/products/productId/image/imageFileName' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/products/productId/image/imageFileName")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/products/productId/image/imageFileName");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/products/productId/image/imageFileName"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

productId
string
required
imageFileName
string
required

Response

Suggest Edits

WAREHOUSES

 

Manage inventory in as many stores as you need. Control the global stock or for each warehouse. Move stock between warehouses and many more possibilities.

Suggest Edits

List Warehouses

Get all your warehouses.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/warehouses
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/warehouses
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/warehouses' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/warehouses")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/warehouses");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/warehouses"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

[
  {
    "id": "5a05cc6e60cea100094baf2f",
    "userId": "2344000h2o4b5s4n3o45",
    "name": "Main Warehouse",
    "email": "[email protected]",
    "phone": "765837638",
    "mobile": "23456673",
    "address": {
      "address": "Av. Meridiana, 13",
      "city": "Barcelona",
      "postalCode": 3849,
      "province": "Barcelona",
      "country": "Spain",
      "countryCode": "ES"
    },
    "default": true,
    "warehouseRecord": 30000001
  },
  {
    "id": "5aab9ae87bdcef002641e0c3",
    "userId": "5a05cc5a60cea100094baf22",
    "name": "Second warehouse",
    "email": "[email protected]",
    "phone": "",
    "mobile": "",
    "address": {
      "address": "Main Street, 3",
      "city": "London",
      "postalCode": "04747",
      "province": "London",
      "country": "United Kingdom",
      "countryCode": "UK"
    },
    "default": false,
    "warehouseRecord": null
  },
  {
    "id": "5aaba5237bdcef002c4979d5",
    "userId": "",
    "name": "Third warehouse",
    "email": "[email protected]",
    "phone": "123",
    "mobile": "123",
    "address": {
      "address": "Av. Blasco Ibañez, 34",
      "city": "Valencia",
      "postalCode": 8054,
      "province": "Valencia",
      "country": "Spain",
      "countryCode": "ES"
    },
    "default": false,
    "warehouseRecord": null
  }
]

Response

Suggest Edits

Create Warehouse

Create a new warehouse.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/warehouses
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/warehouses
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/warehouses' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/warehouses")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/warehouses");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/warehouses"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Created",
  "id": "5aa97e595b706400153f9f94"
}

Body Params

name
string
email
string
phone
string
mobile
string
address
object
 
address.address
string
address.city
string
address.postalCode
string
address.province
string
address.country
string
address.countryCode
string
default
boolean

Response

statusinteger
infostring
idstring
Suggest Edits

Get Warehouse

Get a specific warehouse.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/warehouses/warehouseId
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/warehouses/warehouseId
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/warehouses/warehouseId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/warehouses/warehouseId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/warehouses/warehouseId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/warehouses/warehouseId"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "id": "5a05cc6e60cea100094baf2f",
  "userId": "2344000h2o4b5s4n3o45",
  "name": "Main Warehouse",
  "email": "[email protected]",
  "phone": "765837638",
  "mobile": "23456673",
  "address": {
    "address": "Av. Meridiana, 13",
    "city": "Barcelona",
    "postalCode": 3849,
    "province": "Barcelona",
    "country": "Spain",
    "countryCode": "ES"
  },
  "default": true,
  "warehouseRecord": 30000001
}

Path Params

warehouseId
string
required

Response

idstring
userIdstring
namestring
emailstring
phonestring
mobilestring
addressobject
address.addressstring
address.citystring
address.postalCodestring
address.provincestring
address.countrystring
address.countryCodestring
defaultboolean
warehouseRecordinteger
Suggest Edits

Update Warehouse

Update a specific warehouse.

Only the params included in the operation will update the warehouse.

 

Header Auth

 Authentication is required for this endpoint.
puthttps://api.holded.com/api/invoicing/v1/warehouses/warehouseId
curl --request PUT \
  --url https://api.holded.com/api/invoicing/v1/warehouses/warehouseId
var request = require("request");

var options = { method: 'PUT',
  url: 'https://api.holded.com/api/invoicing/v1/warehouses/warehouseId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/warehouses/warehouseId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://api.holded.com/api/invoicing/v1/warehouses/warehouseId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/warehouses/warehouseId"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "name": "Main Warehouse",
  "email": "[email protected]",
  "phone": "765837638",
  "mobile": "23456673",
  "address": {
    "address": "Av. Meridiana, 13",
    "city": "Barcelona",
    "postalCode": 3849,
    "province": "Barcelona",
    "country": "Spain",
    "countryCode": "ES"
  }
}

Path Params

warehouseId
string
required

Response

namestring
emailstring
phonestring
mobilestring
addressobject
address.addressstring
address.citystring
address.postalCodestring
address.provincestring
address.countrystring
address.countryCodestring
Suggest Edits

Delete Warehouse

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.holded.com/api/invoicing/v1/warehouses/warehouseId
curl --request DELETE \
  --url https://api.holded.com/api/invoicing/v1/warehouses/warehouseId
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.holded.com/api/invoicing/v1/warehouses/warehouseId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/warehouses/warehouseId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.holded.com/api/invoicing/v1/warehouses/warehouseId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/warehouses/warehouseId"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Successfully deleted",
  "id": "5aba68b1c5d438006425ad45"
}

Path Params

warehouseId
string
required

Response

statusinteger
infostring
idstring
Suggest Edits

TREASURIES

 
Suggest Edits

List Treasuries Accounts

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/treasury
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/treasury
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/treasury' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/treasury")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/treasury");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/treasury"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

[
  {
    "id": "5aba68b1c5d438006425ad45",
    "name": "Abanca bank",
    "type": "bank",
    "balance": 0,
    "accountNumber": 57200003,
    "iban": "ES123456789",
    "swift": "CAGLESMM",
    "bank": "abanca",
    "bankname": "Abanca"
  },
  {
    "id": "5aba68b1c5d2453654ad90",
    "name": "ING bank",
    "type": "bank",
    "balance": 32435,
    "accountNumber": 65305004,
    "iban": "ES112345678",
    "swift": "DSFGT",
    "bank": "ing",
    "bankname": "ING"
  }
]

Response

Suggest Edits

Create Treasury Account

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/treasury
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/treasury
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/treasury' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/treasury")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/treasury");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/treasury"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "under": "development"
}

Response

Suggest Edits

Get Treasury Account

Get a specific treasury account.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/treasury/treasuryId
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/treasury/treasuryId
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/treasury/treasuryId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/treasury/treasuryId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/treasury/treasuryId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/treasury/treasuryId"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "id": "5aba68b1c5d438006425ad45",
  "name": "Abanca bank",
  "type": "bank",
  "balance": 0,
  "accountNumber": 57200003,
  "iban": "ES123456789",
  "swift": "CAGLESMM",
  "bank": "abanca",
  "bankname": "Abanca"
}

Path Params

treasuryId
string
required

Response

idstring
namestring
typestring
balanceinteger
accountNumberinteger
ibanstring
swiftstring
bankstring
banknamestring
Suggest Edits

Update Treasury Account

Update a specific treasury account.

Only the params included in the operation will update the account.

 

Header Auth

 Authentication is required for this endpoint.
puthttps://api.holded.com/api/invoicing/v1/treasury/treasuryId
curl --request PUT \
  --url https://api.holded.com/api/invoicing/v1/treasury/treasuryId
var request = require("request");

var options = { method: 'PUT',
  url: 'https://api.holded.com/api/invoicing/v1/treasury/treasuryId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/treasury/treasuryId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://api.holded.com/api/invoicing/v1/treasury/treasuryId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/treasury/treasuryId"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

treasuryId
string
required

Response

Suggest Edits

Delete Treasury Account

Delete specific treasury account.

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.holded.com/api/invoicing/v1/treasury/treasuryId
curl --request DELETE \
  --url https://api.holded.com/api/invoicing/v1/treasury/treasuryId
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.holded.com/api/invoicing/v1/treasury/treasuryId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/treasury/treasuryId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.holded.com/api/invoicing/v1/treasury/treasuryId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/treasury/treasuryId"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Successfully deleted",
  "id": "5aba68b1c5d438006425ad45"
}

Path Params

treasuryId
string
required

Response

statusinteger
infostring
idstring
Suggest Edits

NUMBERING SERIES

 
Suggest Edits

Get Numbering Series by Type

Get all your numbering series.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/numberingseries/type
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/numberingseries/type
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/numberingseries/type' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/numberingseries/type")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/numberingseries/type");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/numberingseries/type"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

[
  {
    "id": "5a05cc6e60cea100094baf24",
    "name": "Default",
    "format": "F17%%%%",
    "last": 6,
    "type": "invoice"
  },
  {
    "id": "5ab12cd63697ac00d1489fe3",
    "name": "nl SO",
    "format": "SO[YY]%%%",
    "last": 0,
    "type": "salesOrder"
  }
]

Path Params

type
string
required

Response

Suggest Edits

Create Numbering Serie

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/numberingseries/type
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/numberingseries/type
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/numberingseries/type' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/numberingseries/type")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/numberingseries/type");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/numberingseries/type"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "msg": "Created",
  "id": "4365gqrtg51446tg14f5"
}

Path Params

type
string
required

Body Params

name
string
format
string
last
integer
type
string

Response

statusinteger
msgstring
idstring
Suggest Edits

Update Numbering Serie

 

Header Auth

 Authentication is required for this endpoint.
puthttps://api.holded.com/api/invoicing/v1/numberingseries/type/numberingSeriesId
curl --request PUT \
  --url https://api.holded.com/api/invoicing/v1/numberingseries/type/numberingSeriesId
var request = require("request");

var options = { method: 'PUT',
  url: 'https://api.holded.com/api/invoicing/v1/numberingseries/type/numberingSeriesId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/numberingseries/type/numberingSeriesId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://api.holded.com/api/invoicing/v1/numberingseries/type/numberingSeriesId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/numberingseries/type/numberingSeriesId"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Updated",
  "id": "5ac4f2cec839ea004e18a463"
}

Path Params

type
string
required
numberingSeriesId
string
required

Body Params

name
string
format
string
last
string

Response

statusinteger
infostring
idstring
Suggest Edits

Delete Numbering Serie

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.holded.com/api/invoicing/v1/numberingseries/type/numberingSeriesId
curl --request DELETE \
  --url https://api.holded.com/api/invoicing/v1/numberingseries/type/numberingSeriesId
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.holded.com/api/invoicing/v1/numberingseries/type/numberingSeriesId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/numberingseries/type/numberingSeriesId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.holded.com/api/invoicing/v1/numberingseries/type/numberingSeriesId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/numberingseries/type/numberingSeriesId"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "msg": "Successfully deleted",
  "id": 484
}

Path Params

type
string
required
numberingSeriesId
string
required

Response

statusinteger
msgstring
idinteger
Suggest Edits

EXPENSES ACCOUNTS

 
Suggest Edits

List Expenses Accounts

List all your expenses accounts.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/expensesaccounts
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/expensesaccounts
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/expensesaccounts' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/expensesaccounts")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/expensesaccounts");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/expensesaccounts"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "id": "5aaf8c5f3697ac001f676082",
  "name": "Exp Account main",
  "desc": "My main expeses account dude",
  "color": "#2C0934",
  "accNum": 60000001
}

Response

idstring
namestring
descstring
colorstring
accNuminteger
Suggest Edits

Create Expenses Account

Create an expenses account.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/expensesaccounts
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/expensesaccounts
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/expensesaccounts' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/expensesaccounts")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/expensesaccounts");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/expensesaccounts"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Created",
  "id": "5ac4f2cec839ea004e18a463"
}

Body Params

name
string
required
desc
string
required

Response

statusinteger
infostring
idstring
Suggest Edits

Get Expenses Account

Get a specific expenses account.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "id": "5aaf8c5f3697ac001f676082",
  "name": "Exp Account",
  "desc": "My main expenses accoun",
  "color": "#2C0934",
  "accNum": 60000001
}

Path Params

expensesAccountId
string
required

Response

idstring
namestring
descstring
colorstring
accNuminteger
Suggest Edits

Update Expenses Account

Update a specific expenses account.

 

Header Auth

 Authentication is required for this endpoint.
puthttps://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId
curl --request PUT \
  --url https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId
var request = require("request");

var options = { method: 'PUT',
  url: 'https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Updated",
  "id": "5ac4f2cec839ea004e18a463"
}

Path Params

expensesAccountId
string
required

Body Params

name
string
desc
string
color
string

Response

statusinteger
infostring
idstring
Suggest Edits

Delete Expenses Account

Delete a specific expenses account.

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId
curl --request DELETE \
  --url https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/expensesaccounts/expensesAccountId"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Successfully deleted",
  "id": "5aba68b1c5d438006425ad45"
}

Path Params

expensesAccountId
string
required

Response

statusinteger
infostring
idstring
Suggest Edits

SALES CHANNELS

 
Suggest Edits

List Sales Channels

Get all your sales channels.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/saleschannels
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/saleschannels
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/saleschannels' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/saleschannels")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/saleschannels");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/saleschannels"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

[
  {
    "id": "5aba667fc5d438006425ad44",
    "name": "My brand new sales channel",
    "desc": "Main income",
    "color": "#507C6C",
    "accNum": 700002
  },
  {
    "id": "5aba667fc5d438006425ad44",
    "name": "My second brand new channel",
    "desc": "Second income stream",
    "color": "#507C6C",
    "accNum": null
  }
]

Response

Suggest Edits

Create Sales Channel

Create a new sales channel.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/saleschannels
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/saleschannels
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/saleschannels' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/saleschannels")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/saleschannels");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/saleschannels"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Created",
  "id": "5ac4f2cec839ea004e18a463"
}

Body Params

name
string
desc
string

Response

statusinteger
infostring
idstring
Suggest Edits

Get Sales Channel

Get a specific sales channel.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "id": "5aba667fc5d438006425ad44",
  "name": "My second brand new channel",
  "desc": "Second income stream",
  "color": "#507C6C",
  "accNum": null
}

Path Params

salesChannelId
string
required

Response

idstring
namestring
descstring
colorstring
accNumnull
Suggest Edits

Update Sales Channel

Update a specific sales channel.

Only the params included in the operation will update the sales channel.

 

Header Auth

 Authentication is required for this endpoint.
puthttps://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId
curl --request PUT \
  --url https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId
var request = require("request");

var options = { method: 'PUT',
  url: 'https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Updated",
  "id": "5ac4f2cec839ea004e18a463"
}

Path Params

salesChannelId
string
required

Body Params

name
string
desc
string
color
string

Response

statusinteger
infostring
idstring
Suggest Edits

Delete Sales Channel

Delete a specific sales channel.

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId
curl --request DELETE \
  --url https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/saleschannels/salesChannelId"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Successfully deleted",
  "id": "5aba68b1c5d438006425ad45"
}

Path Params

salesChannelId
string
required

Response

statusinteger
infostring
idstring
 
Suggest Edits

List Payments

Get all your payments.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/payments
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/payments
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/payments' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/payments")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/payments");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/payments"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

[
  {
    "id": "5aaa81685b7064004342fd82",
    "bankId": "",
    "contactId": "",
    "contactName": "",
    "amount": 100,
    "desc": "Gift",
    "date": 1521068400
  },
  {
    "id": "5aaa82455b7064004e0bbd02",
    "bankId": "5aaa82095b70640046270413",
    "contactId": "5aaa65e05b706400300ad246",
    "contactName": "Benedicto",
    "amount": 355,
    "desc": "Invoice F17003421",
    "date": 1520982000
  },
  {
    "id": "5ab4f6f61d6d820023411433",
    "bankId": "5aaf71763697ac000a0b34d3",
    "contactId": "5aa939a95b70640009653d72",
    "contactName": "Bose QC",
    "amount": 290,
    "desc": "Invoice F170001 ",
    "date": 1521759600
  }
]

Response

Suggest Edits

Create Payment

Create a new payment.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/payments
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/payments
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/payments' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/payments")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/payments");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/payments"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Created",
  "id": "5ac4f2cec839ea004e18a463"
}

Body Params

bankId
string
contactId
string
amount
integer
desc
string
date
integer

Response

statusinteger
infostring
idstring
Suggest Edits

Get Payment

Get a specific payment.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/payments/paymentId
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/payments/paymentId
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/payments/paymentId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/payments/paymentId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/payments/paymentId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/payments/paymentId"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "id": "5ab4f6f61d6d820023411433",
  "bankId": "5aaf71763697ac000a0b34d3",
  "contactId": "5aa939a95b70640009653d72",
  "contactName": "Bose QC",
  "amount": 290,
  "desc": "Invoice F170001 ",
  "date": 1521759600
}

Path Params

paymentId
string
required

Response

idstring
bankIdstring
contactIdstring
contactNamestring
amountinteger
descstring
dateinteger
Suggest Edits

Update Payment

Update a specific payment.

Only the params included in the operation will update the payment.

 

Header Auth

 Authentication is required for this endpoint.
puthttps://api.holded.com/api/invoicing/v1/payments/paymentId
curl --request PUT \
  --url https://api.holded.com/api/invoicing/v1/payments/paymentId
var request = require("request");

var options = { method: 'PUT',
  url: 'https://api.holded.com/api/invoicing/v1/payments/paymentId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/payments/paymentId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://api.holded.com/api/invoicing/v1/payments/paymentId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/payments/paymentId"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Updated",
  "id": "5aba68b1c5d438006425ad45"
}

Path Params

paymentId
string
required

Body Params

bankId
string
contactId
string
amount
integer
desc
string
date
integer

Response

statusinteger
infostring
idstring
Suggest Edits

Delete Payment

Delete a specific payment.

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.holded.com/api/invoicing/v1/payments/paymentId
curl --request DELETE \
  --url https://api.holded.com/api/invoicing/v1/payments/paymentId
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.holded.com/api/invoicing/v1/payments/paymentId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/payments/paymentId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.holded.com/api/invoicing/v1/payments/paymentId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/payments/paymentId"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Successfully deleted",
  "id": "5aba68b1c5d438006425ad45"
}

Path Params

paymentId
string
required

Response

statusinteger
infostring
idstring
Suggest Edits

DOCUMENTS

 

Manage your sales and purchases in detail. Control the entire process from a budget or order to the invoice and its collection as well as your orders to supplier, receipts of goods or services and their corresponding invoice and payment. Access the information of each contact visually and easily and manage your administration easily and intuitively.

Available document types

invoice: Sales invoices
salesreceipt: Sales receipts
creditnote: Sales refunds
estimate: Sales estimates / quotes
salesorder: Sales orders
waybill: Packing list
proform: Sales invoices proforms,
purchase: Purchases / purchase notes (like restaurant receipts)
purchaserefund: Purchases refunds
purchaseorder: Purchase orders

Suggest Edits

List Documents

Get all your documents by type.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/documents/docType
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/documents/docType
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/documents/docType' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/documents/docType")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/documents/docType");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/documents/docType"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Path Params

docType
string
required

docType should be one of: {invoice, salesreceipt, creditnote, salesorder, receipt, proform, waybill,estimate or purchase}

Query Params

starttmp
string

Starting timestamp

endtmp
string

Ending timestamp

contactid
string

Filtering by contact Id

paid
string

Filtering by paid status. 0 = not paid, 1 = paid, 2 = partially paid

billed
string

Filtering by billed status. 0 = not billed, 1 = billed

Response

Suggest Edits

Create Document

Create a new document type.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/documents/docType
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/documents/docType
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/documents/docType' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/documents/docType")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/documents/docType");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/documents/docType"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "id": "5acce41e12d56e005e0e62d3",
  "invoiceNum": "F170009",
  "contactId": "5ac3a7b68fbd9d000f07e237"
}

Path Params

docType
string
required

docType should be one of: {invoice, salesreceipt, creditnote, salesorder, receipt, proform, waybill,estimate or purchase}

Body Params

applyContactDefaults
boolean

Contact defaults are applied by default. If you don't want to apply it, set this field to false

contactCode
string

(NIF / CIF / VAT)

contactName
string
contactEmail
string
contactAddress
string
contactCity
string
contactCp
string
contactProvince
string
contactCountry
string
contactCountryCode
string
desc
string
date
integer
required
notes
string
salesChannelId
string
paymentMethodId
string
designId
string
language
string
items
array of objects
name
desc
units
sku
serviceId
accountingAccountId
subtotal
discount
tax
retention
equivalenceSurcharge
tags
customFields
array of objects
field
value
invoiceNum
string
numSerieId
string
currency
string
currencyChange
number
tags
array of strings
dueDate
integer
shippingAddress
string
shippingPostalCode
string
shippingCity
string
shippingProvince
string
shippingCountry
string
salesChannel
number

Response

Matching products or services

To match products or services you have already created inside Holded, you can use the "sku" field for products, or the "serviceId" field for services.

Purchase notes / Purchases receipts

If you want to create a purchase receipt, you will need to set the docType as purchase and add this field in your JSON:

  • "isReceipt": true
Suggest Edits

Get Document

Get a specific document.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/documents/docType/documentId
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/documents/docType/documentId
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/documents/docType/documentId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/documents/docType/documentId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/documents/docType/documentId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/documents/docType/documentId"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

docType
string
required
documentId
string
required

Response

Suggest Edits

Update Document

Update a specific document. {lotSku} field is only needed when {kind} is lots.

 

Header Auth

 Authentication is required for this endpoint.
puthttps://api.holded.com/api/invoicing/v1/documents/docType/documentId
curl --request PUT \
  --url https://api.holded.com/api/invoicing/v1/documents/docType/documentId
var request = require("request");

var options = { method: 'PUT',
  url: 'https://api.holded.com/api/invoicing/v1/documents/docType/documentId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/documents/docType/documentId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://api.holded.com/api/invoicing/v1/documents/docType/documentId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/documents/docType/documentId"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Updated",
  "id": "5ac4f2cec839ea004e18a463"
}

Path Params

docType
string
required
documentId
string
required

Body Params

desc
string
notes
string
language
string
date
integer
paymentMethod
string
items
array of objects
name
desc
subtotal
tax
tags
units
discount
kind
sku
lotSku
salesChannelId
string
expAccountId
string

Response

statusinteger
infostring
idstring
Suggest Edits

Delete Document

Delete specific document type.

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.holded.com/api/invoicing/v1/documents/docType/documentId
curl --request DELETE \
  --url https://api.holded.com/api/invoicing/v1/documents/docType/documentId
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.holded.com/api/invoicing/v1/documents/docType/documentId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/documents/docType/documentId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.holded.com/api/invoicing/v1/documents/docType/documentId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/documents/docType/documentId"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Successfully deleted",
  "id": "5aba68b1c5d438006425ad45"
}

Path Params

docType
string
required
documentId
string
required

Response

Suggest Edits

Pay Document

Pay one specific document

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/documents/docType/documentId/pay
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/documents/docType/documentId/pay
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/documents/docType/documentId/pay' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/documents/docType/documentId/pay")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/documents/docType/documentId/pay");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/documents/docType/documentId/pay"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "invoiceId": "13f14gl5i46ñ5b64vp1535",
  "invoiceNum": "F170007",
  "paymentId": "3245bkjblhj3v2k6vl4bhbv145b"
}

Path Params

docType
string
required
documentId
string
required

Body Params

date
integer
treasury
string
desc
string
amount
integer

Response

statusinteger
invoiceIdstring
invoiceNumstring
paymentIdstring
Suggest Edits

Send Document

Send a specific document by email.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/documents/docType/documentId/send
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/documents/docType/documentId/send
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/documents/docType/documentId/send' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/documents/docType/documentId/send")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/documents/docType/documentId/send");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/documents/docType/documentId/send"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Document sent"
}

Path Params

docType
string
required
documentId
string
required

Body Params

mailTemplateId
string
emails
string
subject
string
message
string
docIds
string

Response

statusinteger
infostring
Suggest Edits

Get Document PDF

Get a specific document pdf.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/documents/docType/documentId/pdf
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/documents/docType/documentId/pdf
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/documents/docType/documentId/pdf' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/documents/docType/documentId/pdf")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/documents/docType/documentId/pdf");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/documents/docType/documentId/pdf"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "data": "<<base64_encode('file content')>>"
}

Path Params

docType
string
required
documentId
string
required

Response

statusinteger
infostring
Suggest Edits

Ship All Items

Ship all the items of a specific sales order.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/documents/salesorder/documentId/shipall
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/documents/salesorder/documentId/shipall
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/documents/salesorder/documentId/shipall' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/documents/salesorder/documentId/shipall")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/documents/salesorder/documentId/shipall");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/documents/salesorder/documentId/shipall"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Items Shipped"
}

Path Params

documentId
string
required

Response

statusinteger
infostring
Suggest Edits

Ship items by line

Ship a specific item of a specific sales order (itemLinePosition starts at 0).

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/documents/salesorder/documentId/shipbylines
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/documents/salesorder/documentId/shipbylines
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/documents/salesorder/documentId/shipbylines' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/documents/salesorder/documentId/shipbylines")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/documents/salesorder/documentId/shipbylines");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/documents/salesorder/documentId/shipbylines"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Items Shipped"
}

Path Params

documentId
string
required

Body Params

lines
array of objects
itemLinePosition
units

Response

statusinteger
infostring
Suggest Edits

Attach File to a specific document

Attach File to a specific document.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/documents/docType/documentId/attach
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/documents/docType/documentId/attach
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/documents/docType/documentId/attach' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/documents/docType/documentId/attach")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/documents/docType/documentId/attach");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/documents/docType/documentId/attach"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "data": "<<base64_encode('file content')>>"
}

Path Params

docType
string
required
documentId
string
required

Form Data

file
file

The file to upload.

setMain
boolean

Response

statusinteger
infostring
Suggest Edits

REMITTANCES

 
Suggest Edits

List Remittances

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/remittances
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/remittances
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/remittances' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/remittances")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/remittances");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/remittances"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Response

Suggest Edits

Get Remittance

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/remittances/remittanceId
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/remittances/remittanceId
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/remittances/remittanceId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/remittances/remittanceId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/remittances/remittanceId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/remittances/remittanceId"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

remittanceId
string
required

Response

 
Suggest Edits

List Services

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/services
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/services
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/services' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/services")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/services");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/services"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Response

Suggest Edits

Create Service

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/invoicing/v1/services
curl --request POST \
  --url https://api.holded.com/api/invoicing/v1/services
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/invoicing/v1/services' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/services")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/invoicing/v1/services");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/services"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Body Params

name
string
desc
string
tags
array of strings
tax
number
subtotal
integer
salesChannelId
string
cost
number

Response

Suggest Edits

Get Service

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/invoicing/v1/services/serviceId
curl --request GET \
  --url https://api.holded.com/api/invoicing/v1/services/serviceId
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/invoicing/v1/services/serviceId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/services/serviceId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/invoicing/v1/services/serviceId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/services/serviceId"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

serviceId
string
required

Response

Suggest Edits

Update Service

 

Header Auth

 Authentication is required for this endpoint.
puthttps://api.holded.com/api/invoicing/v1/services/serviceId
curl --request PUT \
  --url https://api.holded.com/api/invoicing/v1/services/serviceId
var request = require("request");

var options = { method: 'PUT',
  url: 'https://api.holded.com/api/invoicing/v1/services/serviceId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/services/serviceId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://api.holded.com/api/invoicing/v1/services/serviceId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/services/serviceId"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

serviceId
string
required

Body Params

name
string
desc
string
tags
array of strings
tax
number
subtotal
integer
salesChannelId
string
cost
number

Response

Suggest Edits

Delete Service

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.holded.com/api/invoicing/v1/services/serviceId
curl --request DELETE \
  --url https://api.holded.com/api/invoicing/v1/services/serviceId
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.holded.com/api/invoicing/v1/services/serviceId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/invoicing/v1/services/serviceId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.holded.com/api/invoicing/v1/services/serviceId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/invoicing/v1/services/serviceId"

response = requests.request("DELETE", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

serviceId
string
required

Response

 

Quickly visualize the profitability of your projects, or each project separately. It controls the initial budget and the final billing, the cost of the personnel and the associated expenses and it invests in those projects more profitable.

Suggest Edits

/projects

Get all your projects.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/projects/v1/projects
curl --request GET \
  --url https://api.holded.com/api/projects/v1/projects
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/projects/v1/projects' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/projects/v1/projects")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/projects/v1/projects");

xhr.send(data);
import requests

url = "https://api.holded.com/api/projects/v1/projects"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

[
  {
    "id": "5ab390311d6d82002432ec5a",
    "name": "Building 301",
    "desc": "Bulding 301 in Barcelona",
    "tags": [
      "tag",
      "tog",
      "tug"
    ],
    "category": 0,
    "contactId": "5aaa51ab5b70640028340186",
    "contactName": "DIvero",
    "date": 0,
    "dueDate": 0,
    "status": 2,
    "lists": [
      {
        "id": "5ab390311d6d82002432ec52",
        "key": "pending",
        "name": "Pending",
        "desc": "nan"
      },
      {
        "id": "5ab390311d6d82002432ec53",
        "key": "review",
        "name": "Review",
        "desc": "nan"
      },
      {
        "id": "5ab390311d6d82002432ec54",
        "key": "done",
        "name": "Done",
        "desc": "nan"
      }
    ],
    "billable": 1,
    "expenses": {
      "docId": "5ab3d4121d6d820062013ed3",
      "type": "purchase",
      "subtotal": 200,
      "desc": "noooooo",
      "invoiceNum": "123",
      "total": 242,
      "contactId": "5aaa51ab5b70640028340186",
      "contactName": "DIvero (Divero)",
      "date": 1521673200,
      "dueDate": 1521759600
    },
    "estimates": [
      {
        "docId": "5ab3d4cc1d6d82007711bba3",
        "type": "estimate",
        "subtotal": 34433,
        "desc": "no desc",
        "invoiceNum": "E170001",
        "total": 41663.93,
        "contactId": "5aaa51ab5b70640028340186",
        "contactName": "DIvero (Divero)",
        "date": 1517871600,
        "dueDate": 1520118000
      }
    ],
    "sales": [
      {
        "docId": "5ab391071d6d820034294783",
        "type": "invoice",
        "subtotal": 818.18,
        "desc": "",
        "invoiceNum": "F170001",
        "total": 990,
        "contactId": "5aa939a95b70640009653d72",
        "contactName": "Bose QC",
        "date": 1521673200,
        "dueDate": 0
      }
    ],
    "timeTracking": {
      "timeId": "5ac4f2cec839ea004e18a463",
      "time": 45300,
      "desc": "POOOOOSTuuuuuuu eeeee timetracking after refactor",
      "costHour": 234,
      "userId": "5a05cc5a60cea100094baf22",
      "taskId": "5ab3cb7d1d6d8200440d4683",
      "total": 2944.5
    },
    "price": 2345,
    "numberOfTasks": 6,
    "completedTasks": 3,
    "labels": [
      {
        "id": "5ab390311d6d82002432ec55",
        "name": "New",
        "color": "#10cf91"
      },
      {
        "id": "5ab390311d6d82002432ec56",
        "name": "Confirmed",
        "color": "#10cf91"
      },
      {
        "id": "5ab390311d6d82002432ec57",
        "name": "Pending",
        "color": "#f8d053"
      },
      {
        "id": "5ab390311d6d82002432ec58",
        "name": "Fixed",
        "color": "#4181f2"
      },
      {
        "id": "5ab390311d6d82002432ec59",
        "name": "Urgent",
        "color": "#ee585d"
      }
    ]
  }
]

Response

Suggest Edits

/projects

Create a new project.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.holded.com/api/projects/v1/projects
curl --request POST \
  --url https://api.holded.com/api/projects/v1/projects
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.holded.com/api/projects/v1/projects' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/projects/v1/projects")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.holded.com/api/projects/v1/projects");

xhr.send(data);
import requests

url = "https://api.holded.com/api/projects/v1/projects"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": 1,
  "info": "Created",
  "id": "5ac4f2cec839ea004e18a463"
}

Body Params

name
string
required

Response

statusinteger
infostring
idstring
Suggest Edits

/projects/{projectId}

Get a specific payment.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.holded.com/api/projects/v1/projects/projectId
curl --request GET \
  --url https://api.holded.com/api/projects/v1/projects/projectId
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.holded.com/api/projects/v1/projects/projectId' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.holded.com/api/projects/v1/projects/projectId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.holded.com/api/projects/v1/projects/projectId");

xhr.send(data);
import requests

url = "https://api.holded.com/api/projects/v1/projects/projectId"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "id": "5ab390311d6d82002432ec5a",
  "name": "Building 301",
  "desc": "Bulding 301 in Barcelona",
  "tags": [
    "tag",
    "tog",
    "tug"
  ],
  "category": 0,
  "contactId": "5aaa51ab5b70640028340186",
  "contactName": "DIvero",
  "date": 0,
  "dueDate": 0,
  "status": 2,
  "lists": [
    {
      "id": "5ab390311d6d82002432ec52",
      "key": "pending",
      "name": "Pending",
      "desc": "nan"
    },
    {
      "id": "5ab390311d6d82002432ec53",
      "key": "review",
      "name": "Review",
      "desc": "nan"
    },
    {
      "id": "5ab390311d6d82002432ec54",
      "key": "done",
      "name": "Done",
      "desc": "nan"
    }
  ],
  "billable": 1,
  "expenses": {
    "docId": "5ab3d4121d6d820062013ed3",
    "type": "purchase",
    "subtotal": 200,
    "desc": "noooooo",
    "invoiceNum": "123",
    "total": 242,
    "contactId": "5aaa51ab5b70640028340186",
    "contactName": "DIvero (Divero)",
    "date": 1521673200,
    "dueDate": 1521759600
  },
  "estimates": [
    {
      "docId": "5ab3d4cc1d6d82007711bba3",
      "type": "estimate",
      "subtotal": 34433,
      "desc": "no desc",
      "invoiceNum": "E170001",
      "total": 41663.93,
      "contactId": "5aaa51ab5b70640028340186",
      "contactName": "DIvero (Divero)",
      "date": 1517871600,
      "dueDate": 1520118000
    }
  ],
  "sales": [
    {
      "docId": "5ab391071d6d820034294783",
      "type": "invoice",
      "subtotal": 818.18,
      "desc": "",
      "invoiceNum": "F170001",
      "total": 990,
      "contactId": "5aa939a95b70640009653d72",
      "contactName": "Bose QC",
      "date": 1521673200,
      "dueDate": 0
    }
  ],
  "timeTracking": {
    "timeId": "5ac4f2cec839ea004e18a463",
    "time