Cocoa Export from Nigeria: Grading, Quality and EU Rules for Buyers

Cocoa Export from Nigeria: Grading, Quality and EU Rules for Buyers

Cocoa Export from Nigeria: Grading, Quality and EU Rules for Buyers
@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@500;600;700;800&family=Inter:wght@400;500;600;700&display=swap'); .ab{--g0:#062a16;--g:#0c4a27;--g2:#17793b;--lf:#3fae5a;--gold:#c9a227;--gold2:#f2d174;--cream:#f7f4ea;--ink:#0f2418;--txt:#35463b;--line:#e6e2d3; font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;color:var(--txt);line-height:1.7;font-size:17px;-webkit-font-smoothing:antialiased;overflow-x:hidden} .ab *,.ab *:before,.ab *:after{box-sizing:border-box} .ab h1,.ab h2,.ab h3,.ab h4{font-family:"Outfit","Inter",sans-serif;color:var(--ink);line-height:1.15;margin:0 0 .5em;font-weight:700;letter-spacing:-.02em} .ab h1{font-size:clamp(2.3rem,5.4vw,4rem);font-weight:800} .ab h2{font-size:clamp(1.8rem,3.6vw,2.7rem);margin-top:0} .ab h3{font-size:1.3rem;margin-top:0} .ab p{margin:0 0 1.1em} .ab a{color:var(--g2);text-underline-offset:3px} .ab a:hover{color:var(--gold)} .ab ul,.ab ol{margin:0 0 1.2em 1.3em;padding:0} .ab li{margin-bottom:.45em} .ab strong{color:var(--ink)} .ab img,.ab svg{max-width:100%} .ab-s{padding:84px 22px;position:relative} .ab-in{max-width:1180px;margin:0 auto;position:relative} .ab-narrow{max-width:820px;margin:0 auto} .ab-alt{background:var(--cream)} .ab-dark{background:linear-gradient(135deg,var(--g0),var(--g) 70%,#116a37);color:#dcebe1} .ab-dark h2,.ab-dark h3,.ab-dark strong{color:#fff} .ab-dark a{color:var(--gold2)} .ab-head{text-align:center;max-width:760px;margin:0 auto 46px} .ab-head p{font-size:1.12rem;color:#5a6b60;margin:0} .ab-dark .ab-head p{color:#b9d3c2} .ab-eyebrow,.ab-kicker{display:inline-block;font-family:"Outfit",sans-serif;font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;font-weight:700;color:var(--gold);margin-bottom:.9em} .ab-eyebrow:before,.ab-kicker:before{content:"";display:inline-block;width:28px;height:2px;background:var(--gold);vertical-align:middle;margin-right:10px} .ab-dark .ab-eyebrow,.ab-hero .ab-kicker{color:var(--gold2)} /* buttons */ .ab a.ab-btn,.ab button.ab-btn{display:inline-block;background:linear-gradient(135deg,var(--gold2),var(--gold));color:#201703;font-family:"Outfit",sans-serif;font-weight:700;padding:16px 32px;border-radius:50px;text-decoration:none;border:0;cursor:pointer;font-size:1.02rem;margin:6px 12px 6px 0;box-shadow:0 10px 24px rgba(201,162,39,.35);transition:transform .2s,box-shadow .2s} .ab a.ab-btn:hover,.ab button.ab-btn:hover{transform:translateY(-3px);box-shadow:0 16px 30px rgba(201,162,39,.45);color:#201703} .ab a.ab-btn.o{background:rgba(255,255,255,.06);color:#fff;border:2px solid rgba(255,255,255,.55);box-shadow:none;backdrop-filter:blur(4px)} .ab a.ab-btn.o:hover{background:#fff;color:var(--g)} /* hero */ .ab-hero{position:relative;overflow:hidden;color:#e4f0e8;padding:96px 22px 110px;background:radial-gradient(circle at 80% 20%,rgba(63,174,90,.35),transparent 50%),radial-gradient(circle at 10% 90%,rgba(201,162,39,.22),transparent 45%),linear-gradient(135deg,#051f10,#0c4a27 60%,#14693a)} .ab-hero:before{content:"";position:absolute;inset:0;background-image:var(--ab-hero-img,none);background-size:cover;background-position:center;opacity:.35} .ab-hero .ab-map{position:absolute;left:50%;bottom:-6%;width:130%;transform:translateX(-50%);color:rgba(255,255,255,.17);pointer-events:none} .ab-hero .ab-in{display:grid;grid-template-columns:1.15fr .85fr;gap:30px;align-items:center} .ab-hero.solo .ab-in{grid-template-columns:1fr} .ab-hero h1{color:#fff;margin-bottom:.45em;max-width:760px} .ab-hero h1 em{font-style:normal;background:linear-gradient(90deg,var(--gold2),var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent} .ab-hero p.ab-sub{font-size:1.22rem;max-width:600px;color:#cfe3d6;margin-bottom:1.6em} .ab-chiprow{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px} .ab-chiprow span{font-size:.85rem;font-weight:600;color:#e8f3ec;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.07);padding:6px 14px;border-radius:30px} .ab-hv{position:relative;min-height:420px} .ab-bub{position:absolute;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 24px 50px rgba(0,0,0,.35),inset 0 0 0 4px rgba(255,255,255,.18);animation:abfloat 7s ease-in-out infinite} .ab-bub svg{width:62%;height:62%} .ab-bub.b1{width:210px;height:210px;left:4%;top:2%;background:linear-gradient(135deg,#d62f4d,#7a0f26)} .ab-bub.b2{width:150px;height:150px;right:0;top:0;background:linear-gradient(135deg,#f0b54a,#9a6414);animation-delay:-2s} .ab-bub.b3{width:130px;height:130px;left:0;bottom:6%;background:linear-gradient(135deg,#f5e4aa,#b89a4a);animation-delay:-4s} .ab-bub.b4{width:190px;height:190px;right:6%;top:34%;background:linear-gradient(135deg,#a8622f,#3b1d0e);animation-delay:-1s} .ab-bub.b5{width:140px;height:140px;left:34%;bottom:-2%;background:linear-gradient(135deg,#f1de8d,#c9a227);animation-delay:-3s} @keyframes abfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}} .ab-bigart{width:min(380px,100%);aspect-ratio:1;border-radius:50%;margin:0 auto;display:flex;align-items:center;justify-content:center;box-shadow:0 30px 70px rgba(0,0,0,.4),inset 0 0 0 6px rgba(255,255,255,.18);animation:abfloat 8s ease-in-out infinite;position:relative} .ab-bigart svg{width:62%;height:62%;filter:drop-shadow(0 12px 14px rgba(0,0,0,.3))} .ab-bigart:before{content:"";position:absolute;inset:-18px;border-radius:50%;border:2px dashed rgba(255,255,255,.3);animation:abspin 40s linear infinite} @keyframes abspin{to{transform:rotate(360deg)}} .pc-hibiscus{background:linear-gradient(135deg,#d62f4d,#7a0f26)}.pc-ginger{background:linear-gradient(135deg,#f0b54a,#9a6414)}.pc-sesame{background:linear-gradient(135deg,#f5e4aa,#b89a4a)}.pc-cocoa{background:linear-gradient(135deg,#a8622f,#3b1d0e)}.pc-shea{background:linear-gradient(135deg,#f1de8d,#c9a227)}.pc-leaf{background:linear-gradient(135deg,#3fae5a,#0c4a27)} .ab-crumbs{font-size:.85rem;margin-bottom:1.6em} .ab-crumbs,.ab-crumbs a{color:#a9c6b3;text-decoration:none} .ab-crumbs a:hover{color:#fff} .ab-post .ab-crumbs,.ab-post .ab-crumbs a{color:#6b776f} /* stats */ .ab-statswrap{padding:0 22px;margin-top:-62px;position:relative;z-index:3} .ab-stats{max-width:1080px;margin:0 auto;background:#fff;border-radius:22px;box-shadow:0 24px 60px rgba(6,42,22,.18);display:grid;grid-template-columns:repeat(4,1fr);overflow:hidden} .ab-stats div{padding:28px 18px;text-align:center;border-right:1px solid var(--line)} .ab-stats div:last-child{border:0} .ab-stats b{display:block;font-family:"Outfit",sans-serif;font-size:2.3rem;line-height:1;background:linear-gradient(135deg,var(--g2),var(--g));-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:800} .ab-stats span{display:block;font-size:.85rem;color:#5a6b60;margin-top:8px;font-weight:600;letter-spacing:.04em} .ab-trust{background:#fff;border-bottom:1px solid var(--line);padding:16px 22px} .ab-trust ul{list-style:none;margin:0 auto;padding:0;max-width:1100px;display:flex;flex-wrap:wrap;gap:8px 30px;justify-content:center;font-size:.9rem} .ab-trust li{margin:0} .ab-trust b{color:var(--g)} /* product tiles */ .ab-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:24px} .ab-tile{display:flex;flex-direction:column;align-items:center;text-align:center;border-radius:26px;padding:34px 26px 28px;min-height:400px;text-decoration:none!important;color:#fff!important;position:relative;overflow:hidden;box-shadow:0 18px 40px rgba(6,42,22,.18);transition:transform .3s,box-shadow .3s} .ab-tile:hover{transform:translateY(-10px);box-shadow:0 30px 60px rgba(6,42,22,.28)} .ab-tile:before{content:"";position:absolute;width:300px;height:300px;border-radius:50%;background:rgba(255,255,255,.12);top:-90px;right:-90px} .ab-tile:after{content:"";position:absolute;width:180px;height:180px;border-radius:50%;background:rgba(0,0,0,.1);bottom:-60px;left:-50px} .ab-tile .art{width:170px;height:170px;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;margin-bottom:22px;position:relative;z-index:1;box-shadow:inset 0 0 0 3px rgba(255,255,255,.3);transition:transform .4s} .ab-tile:hover .art{transform:scale(1.08) rotate(-6deg)} .ab-tile .art svg{width:98px;height:98px;filter:drop-shadow(0 8px 10px rgba(0,0,0,.28))} .ab-tile h3{color:#fff;font-size:1.45rem;position:relative;z-index:1;margin-bottom:.3em} .ab-tile p{font-size:.98rem;color:rgba(255,255,255,.9);margin:0 0 1.2em;position:relative;z-index:1} .ab-tile .go{margin-top:auto;position:relative;z-index:1;background:rgba(255,255,255,.95);color:var(--g);font-family:"Outfit",sans-serif;font-weight:700;padding:10px 22px;border-radius:40px;font-size:.92rem} .ab-tile.sesame,.ab-tile.shea{color:#2a2208!important} .ab-tile.sesame h3,.ab-tile.shea h3{color:#2a2208} .ab-tile.sesame p,.ab-tile.shea p{color:#46380f} .ab-tile.hibiscus{background:linear-gradient(150deg,#e0395a,#7a0f26)} .ab-tile.ginger{background:linear-gradient(150deg,#f2b94e,#8f5a10)} .ab-tile.sesame{background:linear-gradient(150deg,#f7e8b4,#c6a85a)} .ab-tile.cocoa{background:linear-gradient(150deg,#b06a35,#33180a)} .ab-tile.shea{background:linear-gradient(150deg,#f4e3a0,#cdaa2c)} .ab-tile.leaf{background:linear-gradient(150deg,#3fae5a,#08361c)} /* feature grid */ .ab-feats{display:grid;grid-template-columns:repeat(3,1fr);gap:26px} .ab-feat{background:#fff;border-radius:22px;padding:34px 28px;box-shadow:0 8px 30px rgba(6,42,22,.07);border:1px solid var(--line);transition:transform .25s,box-shadow .25s} .ab-feat:hover{transform:translateY(-6px);box-shadow:0 18px 40px rgba(6,42,22,.13)} .ab-feat h3{font-size:1.22rem;margin:18px 0 .35em} .ab-feat p{margin:0;font-size:.98rem;color:#5a6b60} .ab-fic{width:64px;height:64px;border-radius:20px;background:linear-gradient(135deg,var(--g2),var(--g));display:flex;align-items:center;justify-content:center;box-shadow:0 10px 20px rgba(12,74,39,.25);transform:rotate(-6deg)} .ab-fic svg{width:30px;height:30px;stroke:#fff;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round} .ab-feat:nth-child(even) .ab-fic{background:linear-gradient(135deg,var(--gold2),var(--gold))} .ab-feat:nth-child(even) .ab-fic svg{stroke:#2a2208} /* spotlight */ .ab-spot{display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:center} .ab-spot .ab-bigart{width:min(400px,100%)} .ab-spot h2{color:#fff} .ab-spots{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:24px 0 28px} .ab-spots div{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:14px;padding:14px 16px} .ab-spots span{display:block;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold2);font-weight:700} .ab-spots b{color:#fff;font-weight:600;font-size:1rem} /* flow */ .ab-flow{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;position:relative;counter-reset:f} .ab-flow:before{content:"";position:absolute;left:10%;right:10%;top:44px;border-top:3px dashed var(--gold)} .ab-fl{text-align:center;position:relative;padding:0 8px} .ab-fl .n{width:88px;height:88px;border-radius:50%;margin:0 auto 18px;background:linear-gradient(135deg,var(--g2),var(--g));display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 8px #fff,0 14px 28px rgba(12,74,39,.3);position:relative} .ab-alt .ab-fl .n{box-shadow:0 0 0 8px var(--cream),0 14px 28px rgba(12,74,39,.3)} .ab-fl .n svg{width:36px;height:36px;stroke:#fff;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round} .ab-fl .n i{position:absolute;top:-4px;right:-4px;width:30px;height:30px;border-radius:50%;background:var(--gold);color:#201703;font-style:normal;font-weight:800;font-family:"Outfit",sans-serif;font-size:.9rem;display:flex;align-items:center;justify-content:center} .ab-fl h3{font-size:1.06rem;margin-bottom:.3em} .ab-fl p{font-size:.9rem;color:#5a6b60;margin:0} /* map */ .ab-mapbox{position:relative;max-width:1100px;margin:0 auto} .ab-map{display:block;width:100%;height:auto} .ab-map .land{stroke-width:.95;stroke-linecap:round;stroke:currentColor;fill:none} .ab-map .ng{stroke:var(--gold2);stroke-width:1.1;stroke-linecap:round;fill:none} .ab-map .arc{fill:none;stroke:var(--gold2);stroke-width:.42;stroke-dasharray:1.4 1.6;stroke-linecap:round;animation:abdash 5s linear infinite;opacity:.95} @keyframes abdash{to{stroke-dashoffset:-30}} .ab-map .pt{fill:var(--gold2)} .ab-map .pulse{fill:none;stroke:var(--gold2);stroke-width:.35;transform-box:fill-box;transform-origin:center;animation:abpulse 2.6s ease-out infinite} @keyframes abpulse{0%{transform:scale(.4);opacity:1}100%{transform:scale(3.2);opacity:0}} .ab-regions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:30px} .ab-regions a{display:inline-flex;align-items:center;gap:10px;padding:11px 20px;border-radius:40px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);color:#fff!important;text-decoration:none;font-weight:600;font-size:.95rem;transition:background .2s} .ab-regions a:hover{background:rgba(255,255,255,.22)} .ab-regions i{width:10px;height:10px;border-radius:50%;background:var(--gold2);box-shadow:0 0 0 4px rgba(242,209,116,.25)} /* region cards */ .ab-reg{display:grid;grid-template-columns:repeat(3,1fr);gap:24px} .ab-rc{background:#fff;border-radius:22px;overflow:hidden;box-shadow:0 10px 32px rgba(6,42,22,.09);border:1px solid var(--line)} .ab-rc .top{padding:26px 26px 20px;color:#fff;position:relative;overflow:hidden} .ab-rc .top:after{content:"";position:absolute;right:-40px;top:-40px;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.14)} .ab-rc .top h3{color:#fff;margin:0;font-size:1.4rem;position:relative} .ab-rc .top span{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;opacity:.85;font-weight:600;position:relative} .ab-rc .bd{padding:20px 26px 26px} .ab-rc ul{list-style:none;margin:0;padding:0} .ab-rc li{padding-left:26px;position:relative;margin:0 0 .6em;font-size:.97rem} .ab-rc li:before{content:"";position:absolute;left:0;top:.5em;width:12px;height:12px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 3px rgba(201,162,39,.2)} .rc1{background:linear-gradient(135deg,#1e5fa8,#0b2f5c)}.rc2{background:linear-gradient(135deg,#c0392b,#6e1d14)}.rc3{background:linear-gradient(135deg,#17793b,#0a3a1d)}.rc4{background:linear-gradient(135deg,#e08a1e,#8a4a05)}.rc5{background:linear-gradient(135deg,#7b3fa0,#3d1a5c)} /* chips */ .ab-chips{display:flex;flex-wrap:wrap;gap:14px;justify-content:center} .ab-chip{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);padding:12px 22px 12px 14px;border-radius:50px;box-shadow:0 6px 18px rgba(6,42,22,.07);font-weight:600;color:var(--ink);font-size:.97rem} .ab-chip svg{width:38px;height:38px;padding:8px;border-radius:50%;background:linear-gradient(135deg,var(--g2),var(--g));stroke:#fff;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round} /* guide cards */ .ab-guides{display:grid;grid-template-columns:repeat(3,1fr);gap:24px} .ab-gc{background:#fff;border-radius:22px;overflow:hidden;text-decoration:none!important;box-shadow:0 10px 32px rgba(6,42,22,.1);border:1px solid var(--line);transition:transform .25s;display:flex;flex-direction:column} .ab-gc:hover{transform:translateY(-8px)} .ab-gc .im{height:150px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden} .ab-gc .im:after{content:"";position:absolute;width:200px;height:200px;border-radius:50%;background:rgba(255,255,255,.14);right:-50px;top:-60px} .ab-gc .im svg{width:76px;height:76px;position:relative;z-index:1;filter:drop-shadow(0 6px 8px rgba(0,0,0,.25))} .ab-gc .tx{padding:22px 24px 26px;display:flex;flex-direction:column;flex:1} .ab-gc small{font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--gold)} .ab-gc h3{font-size:1.12rem;margin:.4em 0 .8em;color:var(--ink)} .ab-gc .rd{margin-top:auto;font-weight:700;color:var(--g2);font-family:"Outfit",sans-serif} /* credentials */ .ab-creds{display:grid;grid-template-columns:repeat(4,1fr);gap:18px} .ab-cr{background:#fff;border-radius:18px;padding:24px 20px;text-align:center;border:1px solid var(--line);box-shadow:0 6px 20px rgba(6,42,22,.06)} .ab-cr svg{width:42px;height:42px;stroke:var(--gold);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;margin-bottom:8px} .ab-cr span{display:block;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:#6b776f;font-weight:700} .ab-cr b{display:block;font-family:"Outfit",sans-serif;font-size:1.25rem;color:var(--ink)} /* journey (about) */ .ab-jr{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center} .ab-jr .ab-in{max-width:none} .ab-bridge{background:linear-gradient(160deg,var(--g0),var(--g));border-radius:30px;padding:30px;box-shadow:0 30px 60px rgba(6,42,22,.25);color:#cfe3d6} /* accordion */ .ab-acc details{background:#fff;border:1px solid var(--line);border-radius:16px;margin-bottom:14px;box-shadow:0 4px 14px rgba(6,42,22,.05)} .ab-acc summary{cursor:pointer;padding:20px 60px 20px 24px;position:relative;list-style:none;font-family:"Outfit",sans-serif;font-weight:700;font-size:1.15rem;color:var(--ink)} .ab-acc summary::-webkit-details-marker{display:none} .ab-acc summary:after{content:"+";position:absolute;right:20px;top:50%;transform:translateY(-50%);width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--gold2),var(--gold));display:flex;align-items:center;justify-content:center;font-size:1.4rem;color:#201703} .ab-acc details[open] summary:after{content:"\2212"} .ab-acc .bd{padding:0 24px 12px} .ab-acc .bd h2{display:none} .ab-more{max-width:900px;margin:0 auto} .ab-more summary{cursor:pointer;text-align:center;font-family:"Outfit",sans-serif;font-weight:700;color:var(--g2);padding:14px;list-style:none;font-size:1.05rem} .ab-more summary::-webkit-details-marker{display:none} .ab-more[open] summary{margin-bottom:10px} .ab-more h2,.ab-more h3{font-size:1.4rem;margin-top:1.2em} /* generic cards */ .ab-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;margin:28px 0} .ab-grid.g2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))} .ab-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:0 8px 26px rgba(6,42,22,.07);transition:transform .25s} .ab-card:hover{transform:translateY(-5px)} .ab-card h3{margin-top:.2em;font-size:1.2rem} .ab-card p:last-child{margin-bottom:0} .ab .ab-ic{display:block;width:58px;height:58px;margin-bottom:14px} .ab .ab-ic svg{display:block;width:58px;height:58px} .ab-ic.line{width:58px;height:58px;border-radius:18px;background:linear-gradient(135deg,var(--g2),var(--g));padding:14px;box-shadow:0 8px 16px rgba(12,74,39,.22)} .ab-ic.line svg{stroke:#fff;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;width:30px;height:30px} .ab-card a.ab-more{font-weight:700;text-decoration:none} /* steps timeline */ .ab-steps{counter-reset:s;list-style:none;margin:30px 0;padding:0} .ab-steps li{counter-increment:s;position:relative;padding:6px 0 26px 76px;margin:0;min-height:64px} .ab-steps li:before{content:counter(s);position:absolute;left:0;top:0;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,var(--g2),var(--g));color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-family:"Outfit",sans-serif;font-size:1.2rem;box-shadow:0 0 0 6px rgba(63,174,90,.18)} .ab-steps li:after{content:"";position:absolute;left:25px;top:58px;bottom:4px;width:2px;background:repeating-linear-gradient(var(--gold) 0 6px,transparent 6px 12px)} .ab-steps li:last-child:after{display:none} .ab-steps b{display:block;color:var(--ink);font-family:"Outfit",sans-serif;font-size:1.18rem} .ab-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin:26px 0} .ab-facts div{background:#fff;border-radius:16px;padding:16px 20px;border:1px solid var(--line);box-shadow:0 4px 14px rgba(6,42,22,.05);position:relative;overflow:hidden} .ab-facts div:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:linear-gradient(var(--gold2),var(--gold))} .ab-facts span{display:block;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:#6b776f;font-weight:700} .ab-facts b{color:var(--ink);word-break:break-word;font-family:"Outfit",sans-serif} /* spec cards */ .ab-specs{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:10px 0 24px} .ab-specs div{background:#fff;border:1px solid var(--line);border-top:4px solid var(--gold);border-radius:14px;padding:16px 18px;box-shadow:0 6px 18px rgba(6,42,22,.06)} .ab-specs span{display:block;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:#6b776f;font-weight:700;margin-bottom:4px} .ab-specs b{font-family:"Outfit",sans-serif;color:var(--ink);font-size:1rem;font-weight:600;line-height:1.3;display:block} .ab table{width:100%;border-collapse:separate;border-spacing:0;margin:1.4em 0;font-size:.97rem;display:table;border-radius:14px;overflow:hidden;border:1px solid var(--line)} .ab th,.ab td{padding:12px 16px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)} .ab th{background:var(--g);color:#fff;font-weight:600} .ab tr:nth-child(even) td{background:var(--cream)} .ab blockquote{margin:1.6em 0;padding:18px 22px;background:#fdf8ea;border-left:5px solid var(--gold);border-radius:0 14px 14px 0} .ab blockquote p:last-child{margin-bottom:0} .ab-toc{background:var(--cream);border:1px solid var(--line);border-radius:16px;padding:22px 28px;margin:26px 0} .ab-toc b{display:block;font-family:"Outfit",sans-serif;font-size:1.15rem;color:var(--ink);margin-bottom:8px} .ab-toc ol{margin-bottom:0} .ab-faq details{background:#fff;border:1px solid var(--line);border-radius:16px;margin-bottom:12px;box-shadow:0 4px 14px rgba(6,42,22,.05)} .ab-faq summary{cursor:pointer;font-family:"Outfit",sans-serif;font-weight:600;font-size:1.06rem;color:var(--ink);padding:18px 60px 18px 22px;list-style:none;position:relative} .ab-faq summary::-webkit-details-marker{display:none} .ab-faq summary:after{content:"+";position:absolute;right:18px;top:50%;transform:translateY(-50%);width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--gold2),var(--gold));display:flex;align-items:center;justify-content:center;font-size:1.3rem;color:#201703} .ab-faq details[open] summary:after{content:"\2212"} .ab-faq details div{padding:0 22px 8px} .ab-cta{text-align:center;padding:96px 22px;overflow:hidden;background:radial-gradient(circle at 20% 20%,rgba(63,174,90,.3),transparent 50%),linear-gradient(135deg,#051f10,#0c4a27 70%,#14693a)} .ab-cta .ab-map{position:absolute;left:50%;top:50%;width:120%;transform:translate(-50%,-50%);color:rgba(255,255,255,.1);pointer-events:none} .ab-cta h2{margin-top:0;color:#fff;font-size:clamp(2rem,4.4vw,3.2rem)} .ab-cta p{max-width:660px;margin:0 auto 1.6em;color:#cfe3d6;font-size:1.15rem} .ab-rel{border-top:4px solid var(--gold);background:var(--cream);padding:30px;border-radius:0 0 16px 16px;margin:42px 0 10px} .ab-rel h3{margin-top:0} .ab-rel ul{margin-bottom:0} .ab-meta{font-size:.88rem;color:#6b776f;margin:0 0 1.6em} .ab-note{font-size:.88rem;color:#6b776f} .ab-form{background:#fff;border:1px solid var(--line);border-radius:22px;padding:34px;box-shadow:0 16px 44px rgba(6,42,22,.1)} .ab-form label{display:block;font-weight:600;color:var(--ink);font-size:.92rem;margin-bottom:5px} .ab-form input,.ab-form select,.ab-form textarea{width:100%;padding:13px 16px;border:1px solid #d3cfbd;border-radius:12px;font-size:1rem;font-family:inherit;background:#fff;color:var(--ink)} .ab-form input:focus,.ab-form select:focus,.ab-form textarea:focus{outline:0;border-color:var(--g2);box-shadow:0 0 0 4px rgba(63,174,90,.18)} .ab-form textarea{min-height:130px} .ab-form .r{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:16px} .ab-form .f{margin-bottom:16px} .ab-msg{display:none;margin-top:14px;padding:12px 16px;border-radius:12px;background:#e8f4ec;color:#14532d;font-weight:600} .ab-split{display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:start} .ab-two{columns:2;column-gap:40px} .ab-two li{break-inside:avoid} .ab-post{max-width:100%} .ab-box{background:linear-gradient(135deg,#062a16,#0c4a27);border-radius:22px;padding:40px 30px;text-align:center;color:#cfe3d6;margin:38px 0} .ab-box h3{color:#fff;margin-top:0;font-size:1.6rem} .ab-box p{max-width:620px;margin:0 auto 1.2em} .ab-part{background:#fdf8ea;border-left:5px solid var(--gold);padding:14px 20px;border-radius:0 12px 12px 0;margin:0 0 1.6em;font-size:.95rem} /* blog category tiles */ .ab-cats{display:grid;grid-template-columns:repeat(3,1fr);gap:22px} .ab-cats .ab-gc .im{height:130px} @media(max-width:980px){ .ab-hero .ab-in,.ab-spot,.ab-jr,.ab-split{grid-template-columns:1fr} .ab-hv{min-height:360px;max-width:460px;margin:30px auto 0;width:100%} .ab-tiles,.ab-feats,.ab-guides,.ab-reg,.ab-cats{grid-template-columns:repeat(2,1fr)} .ab-specs{grid-template-columns:repeat(2,1fr)} .ab-flow{grid-template-columns:1fr;gap:26px} .ab-flow:before{display:none} .ab-fl{display:grid;grid-template-columns:88px 1fr;text-align:left;gap:18px;align-items:center} .ab-fl .n{margin:0} .ab-creds,.ab-stats{grid-template-columns:repeat(2,1fr)} .ab-stats div:nth-child(2){border-right:0} .ab-stats div:nth-child(-n+2){border-bottom:1px solid var(--line)} .ab-two{columns:1} } @media(max-width:640px){ .ab{font-size:16px} .ab-s{padding:60px 18px} .ab-hero{padding:64px 18px 96px} .ab-tiles,.ab-feats,.ab-guides,.ab-reg,.ab-cats,.ab-spots{grid-template-columns:1fr} .ab-tile{min-height:0} .ab-hv{min-height:300px} .ab-bub.b1{width:150px;height:150px}.ab-bub.b2{width:100px;height:100px}.ab-bub.b3{width:90px;height:90px}.ab-bub.b4{width:130px;height:130px}.ab-bub.b5{width:90px;height:90px} .ab a.ab-btn{padding:14px 26px} } .ab-crim{background:radial-gradient(circle at 15% 20%,rgba(255,120,150,.25),transparent 45%),linear-gradient(135deg,#2b040c,#6e0c23 60%,#a8213d);color:#f6dfe4;overflow:hidden} .ab-crim h2{color:#fff}.ab-crim p{color:#f1cdd5} .ab-crim .ab-spots div{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.22)} .ab-mission{text-align:center;max-width:900px;margin:0 auto} .ab-mission h2{font-size:clamp(1.9rem,4vw,3rem);line-height:1.2} .ab-mission h2 em{font-style:normal;color:var(--gold2)} .ab-brow{display:flex;gap:18px;align-items:center;padding:18px 0;border-bottom:1px dashed rgba(255,255,255,.25)} .ab-brow:last-child{border:0} .ab-brow .ic{flex:0 0 66px;height:66px;border-radius:50%;background:linear-gradient(135deg,var(--gold2),var(--gold));display:flex;align-items:center;justify-content:center;box-shadow:0 10px 20px rgba(0,0,0,.25)} .ab-brow .ic svg{width:30px;height:30px;stroke:#201703;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round} .ab-brow h3{color:#fff;margin:0 0 .15em;font-size:1.25rem} .ab-brow p{margin:0;font-size:.97rem;color:#b9d3c2} .ab-story p{font-size:1.08rem} .ab-cats .ab-gc .tx p{font-size:.93rem;color:#5a6b60;margin:0 0 .8em} .ab-flow.c4{grid-template-columns:repeat(4,1fr)}.ab-flow.c4:before{left:12.5%;right:12.5%} @media(max-width:980px){.ab-flow.c4{grid-template-columns:1fr}} .ab-hero .ab-map .arc{opacity:.28}.ab-hero .ab-map .pulse,.ab-hero .ab-map .pt{opacity:.35} .ab-hero .ab-map .ng,.ab-cta .ab-map .ng{stroke:rgba(242,209,116,.55)}
Cocoa Export · Pillar guide

By the Agro-Bridge editorial team · Updated November 2026 · 4 min read

Cocoa export from Nigeria supplies grinders and chocolate makers around the world. Nigeria is one of the largest cocoa-producing countries, and Nigerian beans are traded as part of the wider West African origin. Cocoa is a demanding commodity. Quality is decided on the farm through fermentation and drying, grading is strict, and rules such as the EU Deforestation Regulation add a new compliance layer for European buyers.

This guide covers the essentials. Each section links to a deeper article.

Where Nigerian cocoa is grown

Cocoa needs a warm, humid climate, so it grows in the southern and south-western parts of Nigeria. Ondo is generally the largest producing state, and Ogun, Osun, Ekiti, Edo and Cross River are also important. Most cocoa comes from smallholder farms. Farmers harvest the pods, ferment and dry the beans, and sell to local buying agents, who sell on to licensed buyers and exporters.

The cocoa season

The main crop is generally harvested from around October into the early months of the year, and a lighter crop follows later in the year. Buyers planning forward contracts should ask their supplier which crop a lot belongs to.

Quality starts with fermentation and drying

Raw cocoa beans taste bitter and unpleasant. Fermentation develops the chocolate flavour precursors, and drying lowers the moisture so that the beans can be stored. Poor fermentation or slow, smoky or uneven drying causes defects that cannot be fixed later. Read cocoa fermentation and drying.

Grading: how cocoa is judged

Cocoa is graded mainly through a cut test. A sample of beans, commonly 300, is cut open and checked for mouldy, slaty, insect-damaged, germinated and flat beans. The percentages decide the grade, and Grade I allows only small percentages of defects. Other checks include moisture, bean count (beans per 100 g), foreign matter and off-odours. See cocoa bean grading standards.

Typical specification points

Parameter What buyers set
Grade Grade I, Grade II or your own standard
Moisture A maximum, commonly around 7.5%
Bean count Beans per 100 g, showing size
Mouldy and slaty beans Maximum percentages
Insect-damaged, germinated, flat beans Maximum percentages
Foreign matter Maximum percentage
Odour No smoky, hammy or other off-odours
Packaging Bag type and weight

EU Deforestation Regulation

Cocoa is one of the commodities covered by the EU Deforestation Regulation (EUDR). Operators placing cocoa on the EU market must show that it is deforestation-free, legally produced and covered by a due diligence statement, with geolocation data for the plots of land. The application dates, after repeated delays, are 30 December 2026 for large and medium operators and 30 June 2027 for most micro and small operators. This is a major topic for European buyers. Read EUDR and Nigerian cocoa: what buyers need to know.

Documents

A typical document set includes the contract or PO, proforma and commercial invoices, packing list, quality or inspection certificate, phytosanitary and fumigation certificates where required, Form NXP, Certificate of Origin where required and the Bill of Lading. See the complete export documents checklist.

Packing, storage and shipping

Cocoa is usually shipped in bags and needs dry, ventilated storage and a clean container. It also absorbs odours, so it must be kept away from fuel, chemicals and smoke. At loading, we confirm the bags, quantity, lot identification and seal.

How to buy cocoa from Nigeria safely

  1. Define the grade, moisture, bean count and defect limits.
  2. Verify the exporter. See how to verify a Nigerian exporter.
  3. Ask for a sample from the real lot and an inspection or COA.
  4. Ask about traceability early if you ship to the EU.
  5. Agree Incoterm and payment. See Incoterms and payment terms.
  6. Check the documents against the cargo before paying the balance.

Common mistakes in cocoa export from Nigeria

Buyers and sellers who are new to cocoa export from Nigeria often stumble on the same points.

  1. Grading by name only. "Grade I" means little unless the contract lists the defect limits.
  2. Ignoring odour. Smoky or chemical odours can ruin a lot, even when the cut test is clean.
  3. Weak moisture control. Beans bagged too wet can mould in the container.
  4. No traceability plan. EU buyers need origin data. Ask early what is realistic.
  5. Mixed lots. Blending lots hides problems and makes the quality certificate unreliable.
  6. Late documents. Missing fumigation or phytosanitary certificates stop shipments.

Planning around the cocoa year

Cocoa trade follows the crop cycle. Build your purchasing around the main and light crops, and ask your supplier which crop each lot comes from. Prices in the cocoa market move often, so agree pricing and fixing rules clearly in the contract. For very large volumes, buyers often use dedicated terminal and exchange channels, which are outside what a small specification-led exporter handles. We focus on buyers who want specified, documented lots.

A word on sustainability

Many buyers now ask about farm conditions, deforestation and fair pay. These are legitimate questions. A good exporter will tell you what evidence exists and will not claim more than it can prove. We do not make sustainability or certification claims that we cannot support with documents.

Work with Agro-Bridge

We start with your specification, verify the supplier and run pre-shipment quality control, then reconcile the documents. See our Nigerian cocoa beans page or request a quote.

Frequently asked questions

Which Nigerian states grow the most cocoa?

Ondo is generally the largest, with Ogun, Osun, Ekiti, Edo and Cross River also important.

What moisture is acceptable for cocoa?

Many buyers set a maximum of around 7.5%. Agree your own limit in the contract.

Is Nigerian cocoa affected by the EU deforestation rule?

Cocoa is one of the commodities covered by the EUDR, so European buyers need to plan for it. See our EUDR guide for details.

Planning to source from Nigeria?

Send us your specification, quantity, packaging, destination and Incoterm. We will review it and reply with the right sourcing and commercial process.

Request a QuoteContact Us

More in this series

Other guides

See all Cocoa Export articles →

{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Which Nigerian states grow the most cocoa?", "acceptedAnswer": {"@type": "Answer", "text": "Ondo is generally the largest, with Ogun, Osun, Ekiti, Edo and Cross River also important."}}, {"@type": "Question", "name": "What moisture is acceptable for cocoa?", "acceptedAnswer": {"@type": "Answer", "text": "Many buyers set a maximum of around 7.5%. Agree your own limit in the contract."}}, {"@type": "Question", "name": "Is Nigerian cocoa affected by the EU deforestation rule?", "acceptedAnswer": {"@type": "Answer", "text": "Cocoa is one of the commodities covered by the EUDR, so European buyers need to plan for it. See our EUDR guide for details."}}]}
Share:

agrobridgeglobal

Leave a Reply

Your email address will not be published. Required fields are makes.

Top