If you have provisioned a Sage instance before with a different country, then the root cause of the issue is the country cache storing due to prior country selection. After the country cache is cleared, the instance provisioning should work without error. The easiest way to clear the cached country is to navigate to this URL: https://www.sageone.com/?clear
This article presents the limitations in regards to Updating a Sage Accounting Other Payment as well as an example payload that can be used to perform the PUT API call.
In order to perform a PUT call, you will require the ID of the payment to be updated and a request Payload for the call, an example of which can be found below:
{
"bank_account_id":"*****************",
"contact_id":"*****************",
"date":"2020-01-21",
"deletable":true,
"editable":true,
"net_amount":140,
"reference":"PaymentPutExample",
"payment_lines":[
{ "details":"Line 1",
"ledger_account_id":"*****************",
"net_amount":140,
"tax_amount":0,
"total_amount":140 }
],
"tax_amount":0,
"total_amount":140,
"transaction_type_id":"OTHER_PAYMENT"
}
For more information on the payload, please see the vendor's documentation.
Likewise, for the above payload, a very important thing is that the parameters editable and deletable must be true to be able to update records. Further to the above, there are limitations that apply to payments as seen in the vendors' documentation.
In Sage Business Cloud Accounting, you cannot query by the field 'contact_name' directly; you can only query by contact (contact ID), status, search, from_date, and to_date.
For example to query for a specific contact named "ABC Distributing" you need to structure your Where clause query using the word 'search' such as where: search='ABC Distributing'.
More:
Sage has recently changed the required fields to make a successful post to their V3 sales_invoice endpoint. Below are all the required fields you will need, you can pass more (obviously) but these fields are absolutely required.
JSON payload
{
"date": "some_date",
"contact_id": "some_contact_id",
"main_address": {
"address_line_1": "some_address"
},
"invoice_lines": [{
"description": "some_description",
"quantity": "some_quantity",
"ledger_account_id": "some_ledger_account_id",
"unit_price": "some_price",
"tax_rate_id": "some_tax_rate_id"
}]
}
One thing to note is the ledger_account_id needs to correspond to a Sales Ledger Account. If you don't know off hand which ledger accounts those are you can call the following endpoint.
curl -X GET "https://console.cloud-elements.com/elements/api-v2/hubs/finance/ledger-accounts?where=visible_in%3D'sales'" -H "accept: application/json" -H "Authorization: User <user secret>, Organization <org secret>, Element <element secret>"
This call returns the Sales Ledger Accounts. Find the ledger account id you want to use, plug it into the POST payload, and you should be all set.