v1
latestOpenAPI 3.0.02026-08-0631139237.5 KBSubscriptions
Create Subscription
Creates a new subscription with the specified parameters.
Subscription Lifecycle:
- When first created, the subscription has a PENDING status
- To initiate billing, you must call the activate endpoint with payment details
- Once activated, the subscription will automatically bill according to the configured interval
Key Configuration Parameters:
- Billing settings: Amount, currency, interval (daily, weekly, monthly, yearly)
- Schedule customization: Interval count, trial period duration
- Trial pricing: Offer a free trial with trialPeriodDays/trialPeriodEnd (no charge until the trial ends), or discounted introductory pricing with trialAmount + trialIntervalCount (the trialAmount is charged each billing cycle for that many cycles, then the regular amount applies). trialAmount can also be combined with trialPeriodDays/trialPeriodEnd to charge it once at activation for the whole trial period. trialIntervalCount requires trialAmount and cannot be combined with trialPeriodDays/trialPeriodEnd
Example — 5 EUR for the first 3 months, then 10 EUR/month:
{
"amount": 1000,
"currency": "EUR",
"interval": "month",
"intervalCount": 1,
"trialAmount": 500,
"trialIntervalCount": 3
}
The customer pays 5.00 EUR at activation and for the next two monthly cycles (3 discounted cycles in total), then 10.00 EUR every month.
- Allowed payment methods: An array of strings specifying which payment methods are allowed for this subscription (e.g., card, bizum)
- Customer information: Contact details, billing and shipping addresses
- Communication: Callback URLs for webhook notifications about subscription events
Best Practices:
- Set clear, descriptive names for subscriptions to help with identification
- Configure appropriate webhook notifications to monitor subscription status changes
- Consider offering trial periods to increase customer conversion rates
- Use metadata to store additional information relevant to your business logic
post/subscriptions
Request body
Example request
{
"amount": 110,
"currency": "EUR",
"interval": "month",
"intervalCount": 1,
"allowedPaymentMethods": [
"card",
"bizum"
],
"description": "MoonMail Monthly Lite",
"customer": {
"email": "john.doe@example.com",
"name": "John Doe"
},
"billingDetails": {
"name": "John Doe",
"email": "john.doe@example.com",
"address": {
"country": "ES",
"city": "Málaga",
"line1": "Fake Street 123",
"zip": "1234",
"state": "Málaga"
}
},
"shippingDetails": {
"name": "John Doe",
"email": "john.doe@example.com",
"address": {
"country": "ES",
"city": "Málaga",
"line1": "Fake Street 123",
"zip": "1234",
"state": "Málaga"
}
},
"trialPeriodEnd": 1636366897,
"trialPeriodDays": 7,
"trialAmount": 100,
"trialIntervalCount": 3,
"retrySchedule": [
{
"interval": "day",
"intervalCount": 1
},
{
"interval": "day",
"intervalCount": 3
},
{
"interval": "week",
"intervalCount": 1
}
],
"callbackUrl": "https://example.com/subscriptions/callback",
"paymentCallbackUrl": "https://example.com/payments/callback",
"metadata": {
"systemId": "12345"
}
}Response
A subscription object
Example response
{
"id": "575bcd84-09fc-4a6e-8c4c-f88b8eb90bfa",
"amount": 110,
"currency": "EUR",
"allowedPaymentMethods": [
"card",
"bizum"
],
"description": "MoonMail Monthly Lite",
"accountId": "aa9333ba-82de-400c-9ae7-087b9f8d2242",
"status": "PENDING",
"customer": {
"email": "john.doe@example.com",
"name": "John Doe"
},
"billingDetails": {
"name": "John Doe",
"email": "john.doe@example.com",
"address": {
"country": "ES",
"city": "Málaga",
"line1": "Fake Street 123",
"zip": "1234",
"state": "Málaga"
}
},
"shippingDetails": {
"name": "John Doe",
"email": "john.doe@example.com",
"address": {
"country": "ES",
"city": "Málaga",
"line1": "Fake Street 123",
"zip": "1234",
"state": "Málaga"
}
},
"interval": "month",
"intervalCount": 1,
"pauseIntervalCount": 1,
"skipIntervalCount": 1,
"lastOrderId": "14379133960355",
"lastPayment": {
"id": "af6029f80f5fc73a8ad2753eea0b1be0",
"status": "PENDING",
"statusCode": "E000",
"statusMessage": "Transaction approved"
},
"paymentMethod": {
"method": "card",
"card": {
"country": "ES",
"brand": "visa",
"type": "credit",
"threeDSecureVersion": "2.1.0",
"threeDSecureFlow": "CHALLENGE",
"expiration": 2048544000,
"last4": "0004",
"fingerprint": "7f2afde1566286c5fb126bb7e79bef549755cce6033dc429013c46d1365ff0e9",
"tokenizationMethod": "applePay",
"cardholderName": "John Doe",
"cardholderEmail": "email@example.com"
}
},
"currentPeriodStart": 1636366897,
"currentPeriodEnd": 1636366897,
"trialPeriodEnd": 1636366897,
"trialAmount": 100,
"trialIntervalCount": 3,
"nextPaymentAt": 1636366897,
"retryCount": 1,
"retrySchedule": [
{
"interval": "day",
"intervalCount": 1
},
{
"interval": "day",
"intervalCount": 3
},
{
"interval": "week",
"intervalCount": 1
}
],
"traceDetails": {
"ip": "100.100.200.100",
"countryCode": "ES",
"lang": "es",
"deviceType": "desktop",
"browser": "Chrome",
"browserVersion": "83.0.4103.116",
"os": "Mac OS",
"osVersion": "10.15.4",
"source": "MONEI/PHP",
"sourceVersion": "0.1.2",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
"browserAccept": "text/html,application/xhtml+xml,application/json",
"browserColorDepth": "24",
"browserScreenHeight": "1152",
"browserScreenWidth": "2048",
"browserTimezoneOffset": "-120",
"userEmail": "user@example.com"
},
"sequenceId": "62b23b9f3627cc38b08ff471ccd313ad",
"callbackUrl": "https://example.com/subscriptions/callback",
"paymentCallbackUrl": "https://example.com/payments/callback",
"metadata": {
"systemId": "12345"
},
"createdAt": 1636366897,
"updatedAt": 1636366897
}