Child canisters have to pay for themselves. Sending cycles from caller to callee is optional. Also canisters consume cycles even if they are not called (although not very much if they don’t use a lot of storage).
I recently asked a similar question internally:
For inter-canister calls who is paying? If we have a three canisters in a call chain A
→ B
→ C
, does A
have to pay the whole bill?
and @dsarlis answered like this:
A
pays for the sending request-response pair between A
and B
and B
pays for sending the request-response pair between B
and C
. Each canister also pays for processing that happens locally — so A
pays for processing the response from B
while B
pays for processing the request from A
.