Usually, we clone the user story and move it to the next sprint for tracking.
Don't do that.
The story isn't done. If you put it to Done and clone it, your velocity will be messed up. It will look as if you completed work, when you didn't. This will cause you to overestimate in the future, because velocity reports mistakenly show you being able to complete more work than you really can.
there is a chance of some acceptance criteria being completed while some are not.
So add columns/statuses representing the acceptance criteria. Only move it to the rightmost Done column once all criteria have passed. If the Sprint ends while the story isn't yet Done, just leave it. JIRA should move it to your Product Backlog automatically upon ending the Sprint.
Afterwards, you should evaluate the story as normal in the Sprint Planning Meeting. Re-estimate/re-prioritize it as normal.
Should we move the incomplete stories to product backlog[?]
Yes.
This will underestimate the points in [the sprint where the stories were not completed].
Nope. You did not complete the work. You accomplished 0 story points for that story. So your burndown chart will show that story having not been burned down.
This is correct.
As far as Scrum is concerned, a story that is 90% done provides 0 business value, and is therefore treated the same as 0% done. Your velocity should only take into account the amount of Done story points you can complete in a Sprint.
Just make sure you re-estimate the story before including it in a new Sprint. If an originally 13-point story is 90% done, it should only be 1 point for the new Sprint.