Someone Else Pays

We are thinking about creating a native CiviCRM extension Someone Else Pays.

In CiviCRM you could use the soft credits (with a new soft credit type) to register another contact pay for an event registration, a membership and in theory any contribution. Our customer Domus Medica is using that at the moment. We encounter some issues though. Some of the issues are possibly bugs but some are also because we think soft credits is originally not meant to cater for this. It was meant to cater for soft credits. So we prefer to create an extension rather than fix a few issues in a hackish way and then finding out we have some more.

At this point in time our thinking would be to:

generate a new table (sep_contribution_payer) where the contribution_id and the paying contact_id are stored if there is a different payer

add a new collapse window on the contribution forms (also membership and event registration) to show this link if it is there, and enable the setting of 'someone else pays' in the UI

create API's (get, create, delete)

Domus Medica would like this functionality we have a few questions for all of you out there:

This seems to overlap with similar functionality that exists elsewhere. That doesn't need to be your problem, but it does complicate things a bit.

* Any contribution can be made on behalf of an organization by checking the appropriate box on the first page of the Contribution Page configuration.
* Back-end memberships have an option "Record Payment from a Different Contact?"

We are aware of the current possibilities in core CiviCRM with back end memberships and contribution pages. In our opinion that functionality sort of hijacks soft credits to achieve its aim but it is only a half way solution for what we need. So yes, we will have to cater for that in our extension, meaning that we are aiming to pick up the data in both spots and process it towards whatever we will have in the end.

I am not aware of the Gift Membership extension, thanks for pointing it out! We will have a look and make sure that at least we include it in our documentation.

I have encountered similar use cases, but have been able to resolve these with "what's already there". I am very concerned about adding yet another mechanism when there are already similar constructs in CiviCRM (cf. JonGold), and you could use the existing data model to do so. For example, you can absolutely record different contact_ids in the civicrm_contribution and civicrm_membership tables if 'someone else pays'. The same is true for event registrations. We are already using these constructs when a parent pays for a child's registration, or when an employee pays for a corporate membership. Going outside of these existing constructs could require downstream changes and/or have adverse effects on reporting, accounting integration, the calculated fields or tax receipts extensions, the webforms integration, etc.

I think it is not as dramatic as that because I will not change any of the contribution recording. Effectively we will introduce what is already there in the soft_credit table but in another table because in the back end processing it is not a soft credit. I think a soft credit is when someone donates/pays but you want to record that there is another person that you want to be grateful for this. That is quite another thing as my company pays for my membership or event registration.

When we would do what is required for the project we have at hand we would be introducing quite a few places where we would effectively code a variety of "if a soft credit is actually not a soft credt". That sounds a bit hackish to me.

Effectively all we would be introducing is a small window to show what is in the database as 'A is paying for B', not changing any other part of the financial process which works fine indeed.

FYI, the ContributionSoft in the core is at the moment not calling any hooks. Fixing that for something that is actually not a soft credit is not something I would advocate?