diff --git a/pin/pin.go b/pin/pin.go
index 4faaea6f7547609f67420bba4e9e545b3b16ae61..0e55963b36325ca213b6197a31975e0fa8e6f544 100644
--- a/pin/pin.go
+++ b/pin/pin.go
@@ -172,7 +172,10 @@ func NewPinner(dstore ds.Datastore, serv, internal mdag.DAGService) Pinner {
 func (p *pinner) Pin(ctx context.Context, node node.Node, recurse bool) error {
 	p.lock.Lock()
 	defer p.lock.Unlock()
-	c := node.Cid()
+	c, err := p.dserv.Add(node)
+	if err != nil {
+		return err
+	}
 
 	if recurse {
 		if p.recursePin.Has(c) {