While investigating #314 I note that BatchService is defined in the wrong place (it's in handlers/api/batch.go when it should be in service) and doesn't implement clean architecture (see #290).
It's possible it is redundant since work along the lines of #311 has taken place, but I'm still firefighting #314 so I have only considered this for a moment.