Oh loopy, it's so hard, isn't it? I have been there, and I couldn't solve it either, so I'm no 'expert' - I'm just offering you the benefit of my hindsight, for what it's worth. :)
The thing is, you're not 'letting' him stay at home, are you? Because as you have already discovered, you can't 'make' him go. It feels like 'letting' because you feel you should be able to make him; if you're anything like me, you'll be hugely frustrated, ill or almost-ill with stress, and feeling a total failure right now... :(
It really helps to realise that you can't 'make' him now; he has to learn to make himself...
I could give you a whole long explanation of what I think goes on inside their heads - I will later if you like... But since he's still at home this morning and it's still quite early, can I make a suggestion? Try this...
Go to him now and say "I've decided I'm not even going to try to make you go to school today. You're 14, not 4; you need to make yourself go. If you don't set off in 20 minutes, I'll phone them and tell them you are refusing to come in this morning, and you can deal with the consequences of that. You know all the arguments for why school is important, and I can't be bothered to go through them all again. What you may not know is that this school is costing me a fortune, and I don't want to waste my money: if you don't go, I will withdraw you, and send you whatever free school will have you. You seem to want to make your life harder for yourself, but I am not going to let you make it harder for me."
Wait 20 mins. Then if he doesn't go to school, phone them as promised, and go out. Don't speak to your DS again. Go to work (take your laptop and router to the library, since you're self-employed). Or if you can afford to take a day off, go swimming or do something pleasant and relaxing. Try not to go home til after he'd be back from school...
I'll come back later and see how today has gone... :)