Jump to content

Steel, Mark

Moderators
  • Posts

    479
  • Joined

  • Last visited

  • Days Won

    35

Everything posted by Steel, Mark

  1. Hi Norman, Thank you for your question. When you return the ledger_account/d7fh34o1c29b11ea8d3c022aced7f78e, what are the visible scopes shown for the ledger account please? "visible_scopes": [ "journals", "other_payment", "purchasing", "reporting" ], Thanks Mark
  2. Hi, Sage 50 Accounts integration isn't something this community supports at present. You can contact [email protected] or try the community at https://www.sagecity.com/gb/sage-50-accounts/f/general-discussion-uk Thanks Mark
  3. Hi Marie, Thank you for your post. Could you provide the JSON body you are sending in the request please along with the invoice dates of any invoices you are attempting to allocate to when creating the receipt. I've created a customer_receipt using the below body and could not replicate the behaviour you describe. { "contact_payment": { "transaction_type_id": "CUSTOMER_RECEIPT", "date": "2023-06-01", "contact_id": "2e01687362494a2697a51301a8697ea1", "bank_account_id": "6b4b114dc9da4664bdcb82b510a63ac8", "payment_method_id": "CREDIT_DEBIT", "reference": "Test Receipt", "total_amount": "12.0", "payment_lines": [{ "ledger_account_id": "fba3a5ec7a1311ed91ce06907ea83981", "details": "Test", "total_amount": "10.0", "tax_rate_id": "GB_STANDARD", "tax_amount": "2.0" }] } } Thanks Mark
  4. Hi Paul, Thank you for your question. We've seen the same issue with an integrator compiling a java library in the same way. Their solution was to amend the swagger at source to include a page object to describe the pagination meta data for the API's they required. I've sent you an example of the swagger they used in reply to your email. We have tickets on our backlog to improve the swagger definitions we provide and hope to be able to action these tickets in the near future. Thanks Mark
  5. Hi Xavier, The tax_rate_id ES _LOWER_3 is no longer valid in Spain. You can clarify if a tax_rate has expired or confirm the dates when it was in use by returning the percentages attribute in your request to tax_rates. The to_date returned for ES _LOWER_3 = 2023-12-31, if the transaction date provided was on this date or before, the tax_rate would have been valid. GET https://api.accounting.sage.com/v3.1/tax_rates?attributes=percentages { "id": "ES_LOWER_3", "displayed_as": "Reducido 5,00%", "$path": "/tax_rates/ES_LOWER_3", "percentages": [ { "percentage": "5.0", "from_date": "2022-07-01", "to_date": "2023-12-31" } ] }, Thanks Mark
  6. Hi Emmanuel, For integration support with the French version of Sage 50 c, you'll need to contact the people listed below by email: [email protected] [email protected] Thanks Mark
  7. Hi Matthew, Sage Business Cloud Accounting uses an email service called Postmark. At present the API to send emails has not been exposed. The work around would be to download the invoice as a PDF using accept: application/pdf in the header in lieu of accept:application/json. Thanks Mark
  8. Hi Jeff, Welcome to the community. Sage have a large portfolio of products with a wide range of functionality and integration possibilities. We have a number of integrators who have created solutions for Sage Products and advertise on https://uk-marketplace.sage.com/en-GB/home. The market place allows users of Sage Products to filter solutions based on the Sage product they use, the industry they operate in and the solution type they're looking for. One of our products similar to Quickbooks is Sage Business Cloud Accounting. There is no barrier to getting started with your SBCA integration and all documentation is public. https://developer.sage.com/accounting/ If you're interested in developing an application for one or many of our products and would like your product to be visible on the market place, you can contact our partner recruitment team using the become a partner option located at the bottom of https://www.sage.com/en-gb/partners/tech-partners/ Thanks Mark
  9. Hi Benedict, Welcome to the community. You may wish to add your post to the Sage product forum your issue relates to. Thanks Mark
  10. Thanks for the update Matthew, I'm pleased you've been able to find a solution to your issue. Thanks Mark
  11. Hi Reginald, Thank you for your question. At present setting the discount_percentage on a POST request to sales_invoices does not invoke the internal method to calculate the discount_amount as you see in the web UI. You would also need to set the discount_amount should you wish the discount_percentage to be persisted. { "sales_invoice": { "contact_id": "2e01687362494a2697a51301a8697ea1", "date": "2023-07-07", "total_discount_amount":"10", "invoice_lines": [{ "description": "Test discount", "ledger_account_id": "fba3a5ec7a1311ed91ce06907ea83981", "unit_price": "100", "tax_amount": "18.00", "tax_rate_id":"GB_STANDARD", "quantity": "1", "unit_price_includes_tax":false, "discount_percentage":"10.00", "discount_amount":"10.00" }] } } Thanks Mark
  12. Hi Matthew, welcome to the forum. Could you clarify you have the following: You've read the Authentication Guide. Your application has been registered in the developer self service portal and the correct callback url's have been added. **Note** - callback url's are case sensitive. A Sage Business Cloud Accounting instance has been created to test the oAuth flow https://developer.sage.com/accounting/quick-start/set-up-the-basics/. You're able to sign into the Sage Business Cloud Accounting instance and view the welcome dashboard. The parameters passed in the auth url match those registered in the developer portal and the country filter(optional) passed matches the country the business is registered for. For example if GB is passed and the business is registered for the US the auth will fail. If you have the above it may be worthwhile completing the Auth flow in POSTMAN before moving on to you app. Looking at your code I can't see how you're constructing the auth url with the required params. It should look similar to the below. request_uri = auth_url + "&response_type=" + response_type + "&client_id=" + client_id + "&redirect_uri=" + redirect_uri + "&scope=" + scope + "&state=" + state Also, your code for exchanging the code once it's returned doesn't look to be using the correct header params def exchange_code(code: str): headers = { "Content-Type": "application/x-www-form-urlencoded", "Accept": "application/json", } data = { "client_id": config.client_id, "client_secret": config.client_secret, "code": code, "grant_type": "authorization_code", "redirect_uri": config.redirect_uri, } response = requests.post(config.token_url, headers=headers, data=data) Thanks Mark
  13. Hi Tamas, It's something we could consider. I'll create an internal ticket which includes your requirements for an explorative look at how this could be achieved. There will never be a one to one relationship given the nature of ledger_entries. It would always be one(invoice_line) to many ledger entries. For example, an invoice containing a single invoice line which has 100 net going to a P&L ledger_account, 20 tax going to the tax control account and 120 going to the debtors/creditors control account. This would be one line to three ledger_entries. Thanks Mark
  14. Hi Martin, Thank you for contacting us. Sage 50 Payroll integration isn't something this community supports at present. You can contact [email protected] or try the community at https://www.sagecity.com/gb/sage-50-payroll/ Thanks Mark
  15. Hi thanks for your question. In short there is no one to one relationship that can be established with the API's and attributes that we have today. Currently, the DB stores invoice_lines in a separate table to the artefact/invoice and the API’s do not expose invoice_lines other than in the invoice_lines array of the artefact. The closest the API’s can get you to the resulting ledger_entry is by using the transaction_id as a conduit. The sales and purchase invoices API’s return the associated transaction_id. This id is also present in the resulting ledger_entries meaning you can obtain with certainty the ledger_entries created by the sales and purchase invoice. Example sales_invoice attached transaction_id returned from sales_invoices GET request "transaction": { "id": "0dec4b201636471fa918bb064d3f2c60", "displayed_as": "test viewed", "$path": "/transactions/0dec4b201636471fa918bb064d3f2c60" }, Resulting ledger_entries from attached sales_invoice example { "id": "c6aa8d02c7424d218d59b1c618cf21e3", "displayed_as": "test viewed", "$path": "/ledger_entries/c6aa8d02c7424d218d59b1c618cf21e3", "transaction": { "id": "0dec4b201636471fa918bb064d3f2c60", "displayed_as": "test viewed", "$path": "/transactions/0dec4b201636471fa918bb064d3f2c60" } }, { "id": "7e8c4b0316e341e197370b9c4471bf38", "displayed_as": "test viewed", "$path": "/ledger_entries/7e8c4b0316e341e197370b9c4471bf38", "transaction": { "id": "0dec4b201636471fa918bb064d3f2c60", "displayed_as": "test viewed", "$path": "/transactions/0dec4b201636471fa918bb064d3f2c60" } }, { "id": "d95c03bd7b9144fc92f848b7e436bc36", "displayed_as": "test viewed", "$path": "/ledger_entries/d95c03bd7b9144fc92f848b7e436bc36", "transaction": { "id": "0dec4b201636471fa918bb064d3f2c60", "displayed_as": "test viewed", "$path": "/transactions/0dec4b201636471fa918bb064d3f2c60" } }, { "id": "8e4113bcdb0a4ec8b78c48a02fcc12cf", "displayed_as": "test viewed", "$path": "/ledger_entries/8e4113bcdb0a4ec8b78c48a02fcc12cf", "transaction": { "id": "0dec4b201636471fa918bb064d3f2c60", "displayed_as": "test viewed", "$path": "/transactions/0dec4b201636471fa918bb064d3f2c60" } }, { "id": "dfa09f78d33a4a90be3445a44a92aecd", "displayed_as": "test viewed", "$path": "/ledger_entries/dfa09f78d33a4a90be3445a44a92aecd", "transaction": { "id": "0dec4b201636471fa918bb064d3f2c60", "displayed_as": "test viewed", "$path": "/transactions/0dec4b201636471fa918bb064d3f2c60" } } This above ledger_entries are the result of a sales_invoice with two line items. It’s important to note that the number of ledger_entries can and will change if an invoice is edited and additional line items are added to it or the invoice is corrected or voided for any reason. Thanks Mark
  16. Hi Syeda, Thank you for your question. Sage 50c and Sage Business Cloud Accounting are two different products which are not interconnected in any way. We have a service that allows Sage 50c Data to be migrated to Sage Business Cloud Accounting but other than that, you cannot view data stored in one product in the other. The contacts API provides access to both CUSTOMER and SUPPLIER contacts in Sage Business Cloud Accounting. The difference is with the contact_type_id parameter. https://developer.sage.com/accounting/reference/contacts/ Thanks Mark
  17. Hi Stephane, Sage 50 Accounts integration isn't something this community supports at present. You can contact [email protected] or try the community at https://www.sagecity.com/gb/sage-50-accounts/f/general-discussion-uk Thanks Mark
  18. Hi Marco, Thanks for the info. I've been able to replicate the issue and it looks to be related to the main address not having an associated country. The resolution is to add a country to the main address of this contact. I need to look into why the API is not handling this error and returning a more meaningful message. Thanks Mark
  19. Thanks Marco, It looks as if this one is going to be business specific. Could you send me directly the X-Business guid of the business and your client_id please and i'll take a look in to it. Thanks Mark
  20. Hi Dave, Thanks for your question. It's the tax_scheme you need to be looking at in the financial_settings. They are set with an enum value from tax_schemes which include the below options. Yours should be CASH_ACCOUNTING. { "id": "CASH_ACCOUNTING", "displayed_as": "Cash Accounting", "$path": "/tax_schemes/CASH_ACCOUNTING" }, { "id": "STANDARD", "displayed_as": "Standard", "$path": "/tax_schemes/STANDARD" }, { "id": "NOT_REGISTERED", "displayed_as": "Not Registered", "$path": "/tax_schemes/NOT_REGISTERED" }, { "id": "FLAT_CASH", "displayed_as": "Flat Rate Cash Based", "$path": "/tax_schemes/FLAT_CASH" }, { "id": "FLAT_INVOICE", "displayed_as": "Flat Rate Invoice Based", "$path": "/tax_schemes/FLAT_INVOICE" } Thanks Mark
  21. Thanks Marco, The first thing of note is that you're attempting to set the type of the contact in the PUT request. This should be a constant for the contact record after creation and is not required for a PUT request. I can't make out the majority of the values you've provided but i've included the body params of a working PUT request. Let me know how you get on. { "contact": { "name": "Win", "main_address": { "address_name": "ACCOUNTS", "address_line_1": "24-26 Gibraltar Row", "address_city": "Liverpool", "address_post_code": "LV23 7RA", "address_country_id": "GB" }, "main_contact_person": { "contact_name": "Michael Smith Editied", "contact_email": "email edited", "contact_telephone": "tel edited", "contact_mobile": "mo edited", "contact_fax": "fax edited" } } } Thanks Mark
  22. Hi Syada, The API's you reference do not work with Sage 50 at all. They are specific to Sage Business Cloud Accounting in CA, ES, FR, IRE, UK and US. Sage 50 Integration is not supported in this community please try the below resources if you require further assistance. [email protected] - Developer Services for the UK only https://www.sagecity.com/gb/sage-50-accounts/ Thanks Mark
  23. Hi Abel, Sage Intaact isn't a product supported in this community. If you try the below resources you'll be able to find support. https://developer.intacct.com/api/ intaact community https://developer.intacct.com/support/ Thanks Mark
  24. Hi Abel, Sage Intaact isn't a product supported in this community. If you try the below resources you'll be able to find support. https://developer.intacct.com/api/ intaact community https://developer.intacct.com/support/ Thanks Mark
  25. Hi Marco, Thanks for your question. Can you provide the body params of the PUT request together with the country of the business you're sending it to please. Thanks Mark
×
×
  • Create New...