Complete checkout - set delivery method and mark as paid

To answer your questions in order:

  1. You are correct. You cannot programatically complete checkouts using the storefront API. You must redirect to the webUrl.

  2. If you use the Admin REST API you can create and complete checkouts programatically only if you are a sales channel integration. To become a sales channel integration it has to make business sense for your app and it must function as a market place. This is something you would apply for in your partner dashboard. After a review of your request from our end, your app will or will not be converted to a sales channel integration. More on that here.

  3. Related to point 2, here’s information on payment processing, which is also a part of the sales channel SDK.