Ensure that you're passing the proposal id to the remove function. The following code is an example using the API in SAMPLE data.

Public Sub DeleteProposal()
   Dim oRec As CRecord
   Set oRec = New CRecord
   oRec.Init REApplication.SessionContext

   'Load prospect record using system record ID
   oRec.Load 280
   Dim oProspect As CProspect
   Dim oProp As CProposal

   Set oProspect = oRec.Prospect

   For Each oProp In oProspect.Proposals
       oProspect.Proposals.Remove (oProp.Fields(PROPOSAL_fld_ID))
   Next oProp

   Set oRec = Nothing

   Set oProp = Nothing
   Set oProspect = Nothing
End Sub

Disclaimer: We provide programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes you are familiar with Microsoft Visual Basic and the tools used to create and debug procedures. Our Customer Support can help explain the functionality of a particular procedure, but we will not modify, or assist you with modifying, these examples to provide additional functionality. If you are interested in learning more about the VBA and API modules, contact your account manager.