There is a difference between a successfully sent message, and a successful delivery.
Successfully sending a message using the sendSMS function only means that the number and message appear to be in the correct format and that the message was queued for sending – this does not mean that the destination number exists, or that the message was received by the recipient.
A delivery report – which you can retrieve through the getDeliveryReport function – confirms to you what has actually happened to the message. This may change over time, e.g. a delivery report may show a 'PENDING' status for a message 10 minutes after the message was sent, but may show a 'DELIVERED' status after an hour.
The status of messages can change for up to 36 hours after the message was sent.
Therefore you may prefer to wait for 36 hours after sending an SMS before trying to retrieve its delivery report.
Very occasionally there is no delivery report status for a given message at all. This can be due to a failure at the operator end because of exceptionally high load or other problems.