I am attempting to update a contribution's status but I am getting the error "Cannot change contribution status from Pending to In Progress." I am doing this through the API. I understand there may be some specification bug where In Progress is intended for pledges, not contribution's -- but I can't think of any better way to represent the data I am getting using the available contribution statuses :-S In Britain, a contribution or payment of any kind can have multiple states and frequently goes through multiple state changes. I understand this is different to, say, the US system which I have limited experience of. I am using the contribution status 'Pending' to mean "The direct debit mandate has been created (but not submitted by the payment gateway to the banks)". I am trying to use the contribution status 'In Progress' to mean "The direct debit mandate has been submitted to the banks (but not yet paid)" I believe this is in keeping with expected behaviour for these terms in this context.
-
1Hi Daniel, actually have a client in the UK with the same workflow - they use pending and seem to be happy with that - currently, as you have surmised, "in progress" is not a contribution status currently available, however, there have been many discussions on this topic within the core team and civi accounts enthusiasts - not sure if you are a part of those channels?– Tamar Meir - CivideskJul 6, 2016 at 1:11
1 Answer
For the why on restrictions - see: Reasons for restricting changing contribution statusses?
I'm co-maintaining the iATS extension and we're doing Uk direct debit - so I hear you. And I also have a status = Returned that I need to be able to get in for North American ACHEFT processing. ACHEFT here can go from Pending -> Completed -> to Returned. And Returned is not a refund. It's also not quite a Canceled either.
-
At a client we also had this problem. Their contributions get the status pending and then pushed to a financial system which does the sepa direct debit. This system then updates the contribution status but it wasn't allowed to do so. I have created a custom api which works around this restriction. Jul 6, 2016 at 6:24