Sandbox is not behaving as in production regarding products requiring upfront fare pricing.
In production, requesting for such product will return error with status=422 and code=upfront_fare_required, which is expected behavior. By the way, this error code should be added to API docs. (Currently not listed in https://developer.uber.com/docs/riders/references/api/v1.2/requests-post#http-error-codes)
But most importantly, sandbox should behave like production environment and return an error if no fare_id is provided when requesting a product that requires upfront fare pricing.