How can we enable users to enter a custom amount above the minimum fee when they are creating or renewing their membership through a contribution page?

For reference, this is the membership structure we want:

  • Annual Member ($25/annual) auto-renew optional
  • [Other types] ($[x fixed] / annual) auto-renew optional
  • Sustaining Member ($[user-custom >= 10] / month) auto-renew required

We're having trouble with the last one - on contribution pages, the fee shown for "Sustaining Member" is fixed at $10 and there is no option for users to input their own price (e.g., a textfield).

From the CiviCRM Book, "Defining Memberships" section,

…we have an option to encourage people pay more than the minimum for a membership if they want to.

I have found no way to enable this, even through membership price sets (we don't want to create discrete increments, e.g. $10/15/20/25/etc.), nor through integration with Drupal webforms.


Here's a mockeup of what we'd like the membership signup form to look like, if it helps: desired membership configuration mockup

  • 1
    I've just added this as a new feature request on the Issues list (Jira) for CiviCRM. If you want this capability as badly as my organization does, please go here and upvote the feature request. Thanks! Commented Oct 30, 2015 at 5:15

4 Answers 4


I gather you are not looking for a development solution (ie. extension, custom template, etc.) since the API/template system is extremely extensible.

If that is the case you might consider creating a button or link on the form (if you are slick you might adjust the css or use jquery to place it in the price-set.) that takes the user to a separate contribution page with the name your own price.

I realize it does not match the mockup but it may serve the functional requirements.


The basic feature described here has been available for many years. This is what's described in the book. However, the specific need for auto-renew may cause trouble, as would the clutter of fields presented to the user.

For the basics:

  • Don't use a price set.
  • On the contribution amounts tab, make the contribution amount section active and allow other amounts.
  • On the membership tab, check the boxes for the membership types you want to offer and require membership signup.

The result is that you select the membership type and then enter the amount you'd like to pay. The contribution page will enforce the minimum amount for your membership type.

Here are the caveats, however. First, it won't look like your mockup. The open-ended amount field (and any fixed contribution amounts you pick) will be below the membership types. Members may be confused by having to pick the type and then the price. This will also apply to all membership types on the page, not just one.

Second, I'm not certain that recurring membership dues will charge the custom contribution amount for the subsequent payments. You may find that it charges the minimum for the membership type.

  • Andrew thanks but the mere fact that monthly renewals would not work correctly makes this solution probably not worthwhile. Do you know of an organization with a public page that actually uses this method? Commented Oct 30, 2015 at 14:41
  • Not anymore. Before price sets were introduced, this was the only way to do it (even if you didn't offer open-ended amounts, you had to choose a contribution amount option, which may be higher than the membership's minimum). But yeah, It would be worth testing out the auto-renew. You could make a case that renewals should be made at the membership type's posted rate, not an arbitrary amount, though thst would make more sense from an annual renewal perspective. The same rules apply either way, however.
    – Andie Hunt
    Commented Oct 30, 2015 at 23:25

At a client of us they have the same use case. They have a membership of a minimum fee of 5 euro a year but it could be anything more than that.

They don't have online payments but their memberships are payed by direct debit each quarter. (1st of Januaru, 1st of April, 1st of July, 1st of October).

We have created a custom membership api which allows to easily create new memberships. E.g. also dividing the yearly membership contribution by 4 quarters and creating 4 membership contributions.

The client has on their drupal website a custom drupal module which includes a form for signing up for a new membership. The backend of this form uses the custom API.

Again it is somehow extended by development.

  • Jaap, thanks. Any chance the client could let you tell us who it is? Commented Nov 7, 2015 at 2:39
  • Yes it is the socialist political party in the Netherlands. Commented Nov 7, 2015 at 9:29

Within a price set, you can add a text/numeric field and set the price of that text field to 1, and also turn off the option to display the amount. This will allow you the user to enter a contribution amount.

If you do not use a price set on the contribution page, there will be an Allow other amounts check box, on the Amounts tab. Once checked, there will be a min and max field.

Hope that helps,


  • 2
    Both of these methods work as far as letting a user input a custom amount, but don't tie the contribution to a new membership record. It also breaks up the membership radio-select group.
    – nikulis
    Commented Jul 14, 2015 at 4:45
  • agreed that the Text/numeric field in a Price Set does not let you stipulate which Membership Type is should provide
    – petednz - fuzion
    Commented Jul 15, 2015 at 3:21
  • Any update with newer Civi versions (4.6.9, 4.7) to handle the problem nikulis ID's above - "Both of these methods work as far as letting a user input a custom amount, but don't tie the contribution to a new membership record. It also breaks up the membership radio-select group"?? Commented Oct 16, 2015 at 20:51
  • As far as breaking up the group goes, I used a jQuery hack- we wanted to have user-selectable prices and quantities, and I was able to line them up.
    – DaveFF
    Commented Oct 30, 2015 at 6:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.