The packets crossed, and the name did not
Two accounts, peered and routed, and the peering is not in question: an instance in the Platform account can reach the ledger's private address directly and gets a response on the first try.
What it cannot do is find that address. The ledger is published in a private hosted zone that lives in the Payments account, and every lookup from the Platform side comes back NXDOMAIN.
Boundaries, outermost first: Platform account VPC: VPC Resolver (nothing to ask), Migrated service (asks by name; FAILED: NXDOMAIN), an empty slot for the so the zone answers here too Payments account VPC: Private hosted zone (ledger.corp), Ledger (reachable by IP) Connections: Migrated service calls VPC Resolver — ledger.corp? (step 1) so the zone answers here too controls Private hosted zone — authorize, then associate (step 2) Private hosted zone calls VPC Resolver — answers here now (step 3) Migrated service publishes to Ledger (step 4)