Faits :
A.
Par jugement du 19 février 2016, le Tribunal correctionnel de l'arrondissement de la Broye et du Nord vaudois a notamment reconnu X._ coupable de vol par métier, blanchiment d'argent et d'infraction à l'art. 118 al. 1 de la loi fédérale du 16 décembre 2005 sur les étrangers (LEtr; RS 142.20). Il l'a condamné à une peine privative de liberté de 30 mois, a suspendu l'exécution d'une partie de la peine portant sur 20 mois et fixé un délai d'épreuve de 4 ans. Le Tribunal correctionnel a ordonné le maintien de la saisie du passeport sénégalais et du titre de séjour de X._, a indiqué qu'il était débiteur envers l'Etat de Vaud de 80'000 fr. à titre de créance compensatrice et a ordonné la confiscation et la dévolution à l'Etat des valeurs créditées sur son compte postal.
B.
Par jugement du 23 août 2016, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel formé par X._ contre le jugement de première instance, qu'elle a confirmé.
En substance, la cour cantonale a retenu les faits suivants.
Entre janvier 2009 et août 2011, en sa qualité de caissier auxiliaire dans deux stations-service à A._, X._ a procédé de manière régulière et systématique à des annulations de multiples transactions encaissées auprès de clients et conservé par-devers lui les montants afférant aux opérations supprimées. Il a ainsi détourné et versé sur son compte postal à tout le moins un montant de 349'468 fr. 34. Entre janvier 2009 et septembre 2011, il a transféré au Sénégal à tout le moins 219'028 fr. 70, montant avec lequel il a acquis plusieurs parcelles et construit une maison luxueuse.
Par ailleurs, à la suite d'une lettre du Service de la population (SPOP) du 9 janvier 2010 annonçant à X._ le refus probable de sa demande de renouvellement du permis B, ce dernier et B._ ont contacté l'Office de l'état civil, le 11 janvier 2010, afin d'entreprendre des formalités pour la procédure préparatoire de mariage. En juin 2010, X._ a remis une somme de l'ordre de 25'000 fr. à B._. Le 13 juillet 2010 à C._, X._ et B._ (de 17 ans son aînée) se sont mariés, ils n'ont pas fait ménage commun. X._ occupe seul un studio à C._ qu'il sous-loue. Lors des perquisitions effectuées au domicile de B._, à D._ puis à E._, aucun effet appartenant à son époux n'y a été retrouvé.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement cantonal. Il conclut principalement à la libération de toute accusation, le tout avec suite de frais et dépens, et à la restitution du passeport sénégalais ainsi que les valeurs créditées sur son compte postal. Subsidiairement, il conclut à la réforme du jugement en ce sens que la peine prononcée soit réduite dans une proportion que justice dira et plus subsidiairement au renvoi de la cause à la Cour d'appel pénale du Tribunal cantonal pour nouveau jugement dans le sens des considérants. Il sollicite en outre l'octroi de l'assistance judiciaire.

Considérant en droit :
1.
Le recourant considère que la juridiction cantonale a procédé à une appréciation arbitraire des preuves s'agissant des opérations de caisse et qu'elle a violé le principe « in dubio pro reo ».
1.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (<ref-law>), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. Il n'entre ainsi pas en matière sur les critiques de nature appellatoire (<ref-ruling> consid. 2.4 p. 368; <ref-ruling> consid. 6.3 p. 375).
La présomption d'innocence, garantie par les art. 6 par. 2 CEDH, 32 al. 1 Cst. et 10 CPP, ainsi que son corollaire le principe « in dubio pro reo » concernent tant le fardeau de la preuve que l'appréciation des preuves. Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe «in dubio pro reo», celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (<ref-ruling> consid. 7 p. 82).
1.2. Le recourant soutient que d'autres employés ont également été licenciés pour vol et qu'il ne peut être tenu pour seul responsable des pertes. Il indique également que les images captées par la caméra de surveillance ne permettent pas d'identifier clairement ses gestes et qu'il n'a pas été possible de définir exactement le procédé utilisé lors de chaque annulation de transaction.
La juridiction cantonale a indiqué que l'enquête pour blanchiment d'argent a débuté à la suite de soupçons émis par l'intermédiaire financier, qui gérait les comptes du recourant et qui a trouvé suspect le nombre de versements effectués. Dans le cadre de l'enquête alors diligentée contre lui, il est apparu que les explications du recourant au sujet de prétendus remboursements à son beau-frère ainsi que de prétendus prêts octroyés à des tiers n'avaient aucune consistance. L'enquête a permis par la suite de découvrir que le recourant avait été licencié et que l'origine des fonds coïncidait avec les pertes subies par l'employeur. L'autorité précédente a souligné que toutes les annulations constatées n'avaient pas été imputées au recourant mais que l'ampleur des annulations n'était pas compatible avec une activité normale de caissier. Or, ces annulations étaient significativement plus importantes les jours de travail du recourant. La cour cantonale a relevé qu'il existe une concordance temporelle frappante entre les périodes d'activité du recourant, le nombre d'annulations et leur montant ainsi que les versements opérés sur le compte du recourant. Elle a également indiqué qu'il était le seul employé a avoir été filmé alors qu'il procédait de façon frénétique à des annulations dans un court laps de temps. Dès lors, déterminer exactement de quelle façon le recourant a procédé aux annulations de caisse est sans incidence sur la réalisation des éléments constitutifs de l'infraction. En indiquant que la caméra ne permet pas d'identifier clairement ses gestes, le recourant se borne à relater sa propre version du litige au terme d'une démarche appellatoire qui ne remplit pas les exigences de motivation requises et qui se révèle irrecevable (cf. <ref-law>). Le fait que l'employeur aurait renoncé à porter plainte est sans pertinence pour l'établissement des faits, notamment au vu des nombreux éléments retenus par la cour cantonale. L'appréciation personnelle que livre le recourant à cet égard est irrecevable.
Ainsi, la cour cantonale pouvait sans arbitraire, retenir que le recourant était l'auteur des opérations reprochées. Sur cette base, c'est sans violer le droit fédéral qu'elle l'a jugé coupable de vol par métier; partant l'argument du recourant selon lequel l'infraction de blanchiment n'est pas réalisée, parce que l'origine des fonds n'est pas criminelle, tombe à faux.
2.
Le recourant soutient également que la cour cantonale a violé l'art. 118 al. 1 LEtr.
2.1. Selon l'art. 118 al. 1 LEtr, quiconque induit en erreur les autorités chargées de l'application de la présente loi en leur donnant de fausses indications ou en dissimulant des faits essentiels et, de ce fait, obtient frauduleusement une autorisation pour lui ou pour un tiers ou évite le retrait d'une autorisation est puni d'une peine privative de liberté de trois ans au plus ou d'une peine pécuniaire.
Selon la jurisprudence, il y a mariage fictif lorsque celui-ci est contracté dans le seul but d'éluder les dispositions de la loi fédérale sur les étrangers, en ce sens que les époux (voire seulement l'un d'eux) n'ont jamais eu la volonté de former une véritable communauté conjugale (<ref-ruling> consid. 4a p. 55). Toute la difficulté réside dans la circonstance que l'intention réelle des époux ne peut souvent pas être établie par une preuve directe, mais seulement grâce à des indices (<ref-ruling> consid. 5a p. 57; arrêt 2C_ 783/2015 du 6 janvier 2016 consid. 4.2).
Constituent notamment des indices d'un mariage fictif ou d'un abus de droit les éléments suivants : le fait que l'époux étranger soit menacé d'un renvoi ou ne puisse obtenir une autorisation de séjour autrement que par un mariage; l'existence d'une sensible différence d'âge entre les époux; les circonstances particulières de leur rencontre et de leur relation, tels une courte période de fréquentation avant le mariage ou le peu de connaissances que les époux ont l'un de l'autre, etc. (<ref-ruling> consid. 3.1 p. 152; arrêt 2C_1055/2015 du 16 juin 2016 consid. 2.2).
Les constatations portant sur les indices peuvent concerner des circonstances externes tout comme des éléments d'ordre psychique relevant de la volonté interne (volonté de chacun des époux). Il s'agit, dans les deux cas, de constatations de fait (<ref-ruling> consid. 2.3 p. 152 et les arrêts cités) qui lient le Tribunal fédéral, sauf si elles ont été établies de façon manifestement inexacte ou en violation du droit au sens de l'<ref-law>. En revanche, le Tribunal fédéral examine librement si les constatations de fait (indices) permettent de conclure à l'existence d'un mariage fictif.
2.2. En l'occurrence, le recourant soutient que B._ ne l'avait pas présenté à sa famille parce qu'elle entretenait plus de liens avec ses amis qu'avec sa famille et que tous deux avaient un caractère individuel. Une telle argumentation - purement appellatoire, partant, irrecevable - accrédite au demeurant la thèse soutenue par l'autorité précédente.
En effet, cette dernière, reprenant le jugement de première instance, a clairement indiqué qu'on ne pouvait conclure à un mariage fictif du seul fait que le recourant et B._ ne vivaient pas ensemble, ne partaient pas en vacances ensemble ni qu'ils ont débuté la procédure de mariage deux jours après le refus du SPOP de renouveler l'autorisation de séjour. En revanche, elle a mis en évidence plusieurs autres éléments sur lesquels elle s'est fondée pour conclure qu'une communauté de vie n'avait jamais été voulue. En particulier, elle a souligné que le couple n'avait pas donné de détails sur une histoire commune, que personne ne connaissait l'existence de ce mariage mis à part de vagues connaissances ayant assisté à la cérémonie, que les époux n'avaient pas formé de communauté d'habitation, que le recourant avait payé à B._ une somme de 25'000 fr. peu avant le mariage et qu'aucun effet personnel n'avait été trouvé à l'adresse de l'épouse, malgré une recherche effectuée dans les deux derniers domiciles de B._ et dans celui du recourant.
Ces constatations de fait, établies sans arbitraire, constituent des indices importants et convergents de l'existence d'un mariage fictif. Le recourant s'est limité, dans une critique de nature purement appellatoire, à opposer sa version des faits qui ne répond pas aux exigences de recevabilité.
3.
Le recours est rejeté dans la mesure où il est recevable. Les conclusions du recourant étant dénuées de chances de succès, la demande d'assistance judiciaire est rejetée (<ref-law>). Le recourant supporte des frais fixés en tenant compte de sa situation économique (art. 65 al. 2 et 66 al. 1 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 francs, sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 11 septembre 2017
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Klinke