# Create Pay Plan Offer Create a pay plan offer for a registered and KYC'd merchant customer. The offer returned must be used to create a pay plan within 10 minutes. After this point, generate a new offer by calling this endpoint again. If called with a customer JWT, the pay plan is created for that customer, otherwise the customer must be provided via the Customer-Id request header. Endpoint: POST /payplans/offer Version: 3.0 Security: Marketplace API Key | Merchant Public Token | Merchant Secret Token | Customer JWT | Merchant JWT | Marketplace JWT ## Header parameters: - `Customer-Id` (string) Perform operation in the context of the given merchant customer. Usually not required — specify only if acting on behalf of a merchant customer not implied by the credentials specified in the Authorization header. ## Request fields (application/json): - `amount` (object, required) The full plan amount - `amount.minorCurrencyUnits` (integer, required) The amount in minor currency units (e.g. cents for AUD). - `amount.currency` (string, required) The currency of the given amount as a 3 letter ISO code. - `initialPayment` (integer) An optional amount that the customer will pay up front in minor currency units (e.g. cents for AUD) - `payPlanVariant` (string, required) The variant of the plan to construct. This implies the number of instalments; the minimum initialPayment expected; and the frequency of payments (e.g. fortnightly, weekly, etc.) Enum: "payplan_fortnight_25_25_25_25", "payplan_4_weekly_payments", "payplan_8_weekly_payments", "payplan_26_fortnightly_payments", "payplan_52_weekly_payments", "payplan_2_monthly_payments", "payplan_3_monthly_payments", "payplan_4_monthly_payments", "payplan_5_monthly_payments", "payplan_6_monthly_payments", "payplan_7_monthly_payments", "payplan_8_monthly_payments", "payplan_9_monthly_payments", "payplan_10_monthly_payments", "payplan_11_monthly_payments", "payplan_12_monthly_payments", "payplan_fortnight_0_100", "payplan_4_week_0_100", "payplan_7_week_0_100", "payplan_30_days_0_100" - `metadata` (object) An optional data structure including additional customer data that could influence the offer outcome. Only used if agreed up front between the payment system and the merchant. Independent from metadata provided during order creation. ## Response 200 fields (application/json): - `offerDetails` (object, required) Details of the pay plan offered to the customer - `offerDetails.merchantId` (string, required) System unique identifier for the merchant the pay plan was created for. - `offerDetails.customerId` (string, required) System unique identifier for the merchant customer who owns the pay plan. - `offerDetails.isCounterOffer` (boolean, required) Indicates that this is a revision (counter-offer) of a payment schedule proposed by the merchant customer. - `offerDetails.threeDSecureRequired` (boolean, required) When true, 3DS must be requested when paying for the order. - `offerDetails.payPlanParameters` (object) The parameters of the offered pay plan. If empty, the pay plan was declined outright. - `offerDetails.payPlanParameters.amount` (object, required) The full plan amount - `offerDetails.payPlanParameters.amount.minorCurrencyUnits` (integer, required) The amount in minor currency units (e.g. cents for AUD). - `offerDetails.payPlanParameters.amount.currency` (string, required) The currency of the given amount as a 3 letter ISO code. - `offerDetails.payPlanParameters.initialPayment` (integer, required) The amount that the customer will pay up front in minor currency units (eg cents for AUD). May be 0 if no upfront payment is required. - `offerDetails.payPlanParameters.instalmentLength` (integer, required) The number of instalment payments expected for this pay plan (min 2, max 52). - `offerDetails.payPlanParameters.instalmentFrequency` (string, required) The time period between instalments. Enum: "Weekly", "Fortnightly", "EveryFourWeeks", "EverySevenWeeks", "EveryThirtyDays", "EveryTenMinutes" - `offerDetails.payPlanParameters.proposedSchedule` (array) - `offerDetails.payPlanParameters.proposedSchedule.at` (string, required) - `offerDetails.payPlanParameters.proposedSchedule.amount` (integer, required) - `offerDetails.payPlanParameters.payPlanVariant` (string, required) The variant of the plan to construct. This implies the number of instalments; the minimum initialPayment expected; and the frequency of payments (e.g. fortnightly, weekly, etc.) Enum: "payplan_fortnight_25_25_25_25", "payplan_4_weekly_payments", "payplan_8_weekly_payments", "payplan_26_fortnightly_payments", "payplan_52_weekly_payments", "payplan_2_monthly_payments", "payplan_3_monthly_payments", "payplan_4_monthly_payments", "payplan_5_monthly_payments", "payplan_6_monthly_payments", "payplan_7_monthly_payments", "payplan_8_monthly_payments", "payplan_9_monthly_payments", "payplan_10_monthly_payments", "payplan_11_monthly_payments", "payplan_12_monthly_payments", "payplan_fortnight_0_100", "payplan_4_week_0_100", "payplan_7_week_0_100", "payplan_30_days_0_100" - `offerDetails.createdAt` (string, required) When the time limited offer was generated. - `offerVerificationToken` (string, required) Tamper detection digital signature - `message` (string) An explanation message that can be presented to the customer ## Response 400 fields (application/json): - `statusCode` (integer, required) HTTP status code for this error - `errorCode` (string, required) An April code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type. - `message` (string, required) Human readable description of the error - `tracer` (string) An unique identifier for the request. Provide this to the support team if you wish to query a particular error. - `detail` (string) Optional additional details for the error. - `errorTypeDescription` (string) A description of the category of errors for the given statusCode. - `metadata` (any) Optional key value list of metadata ## Response 401 fields (application/json): - `statusCode` (integer, required) HTTP status code for this error - `errorCode` (string, required) An April code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type. - `message` (string, required) Human readable description of the error - `tracer` (string) An unique identifier for the request. Provide this to the support team if you wish to query a particular error. - `detail` (string) Optional additional details for the error. - `errorTypeDescription` (string) A description of the category of errors for the given statusCode. - `metadata` (any) Optional key value list of metadata ## Response 403 fields (application/json): - `statusCode` (integer, required) HTTP status code for this error - `errorCode` (string, required) An April code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type. - `message` (string, required) Human readable description of the error - `tracer` (string) An unique identifier for the request. Provide this to the support team if you wish to query a particular error. - `detail` (string) Optional additional details for the error. - `errorTypeDescription` (string) A description of the category of errors for the given statusCode. - `metadata` (any) Optional key value list of metadata ## Response 404 fields (application/json): - `statusCode` (integer, required) HTTP status code for this error - `errorCode` (string, required) An April code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type. - `message` (string, required) Human readable description of the error - `tracer` (string) An unique identifier for the request. Provide this to the support team if you wish to query a particular error. - `detail` (string) Optional additional details for the error. - `errorTypeDescription` (string) A description of the category of errors for the given statusCode. - `metadata` (any) Optional key value list of metadata ## Response 405 fields (application/json): - `statusCode` (integer, required) HTTP status code for this error - `errorCode` (string, required) An April code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type. - `message` (string, required) Human readable description of the error - `tracer` (string) An unique identifier for the request. Provide this to the support team if you wish to query a particular error. - `detail` (string) Optional additional details for the error. - `errorTypeDescription` (string) A description of the category of errors for the given statusCode. - `metadata` (any) Optional key value list of metadata ## Response 406 fields (application/json): - `statusCode` (integer, required) HTTP status code for this error - `errorCode` (string, required) An April code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type. - `message` (string, required) Human readable description of the error - `tracer` (string) An unique identifier for the request. Provide this to the support team if you wish to query a particular error. - `detail` (string) Optional additional details for the error. - `errorTypeDescription` (string) A description of the category of errors for the given statusCode. - `metadata` (any) Optional key value list of metadata ## Response 409 fields (application/json): - `statusCode` (integer, required) HTTP status code for this error - `errorCode` (string, required) An April code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type. - `message` (string, required) Human readable description of the error - `tracer` (string) An unique identifier for the request. Provide this to the support team if you wish to query a particular error. - `detail` (string) Optional additional details for the error. - `errorTypeDescription` (string) A description of the category of errors for the given statusCode. - `metadata` (any) Optional key value list of metadata ## Response 422 fields (application/json): - `statusCode` (integer, required) HTTP status code for this error - `errorCode` (string, required) An April code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type. - `message` (string, required) Human readable description of the error - `tracer` (string) An unique identifier for the request. Provide this to the support team if you wish to query a particular error. - `detail` (string) Optional additional details for the error. - `errorTypeDescription` (string) A description of the category of errors for the given statusCode. - `metadata` (any) Optional key value list of metadata ## Response 429 fields (application/json): - `statusCode` (integer, required) HTTP status code for this error - `errorCode` (string, required) An April code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type. - `message` (string, required) Human readable description of the error - `tracer` (string) An unique identifier for the request. Provide this to the support team if you wish to query a particular error. - `detail` (string) Optional additional details for the error. - `errorTypeDescription` (string) A description of the category of errors for the given statusCode. - `metadata` (any) Optional key value list of metadata ## Response 500 fields (application/json): - `statusCode` (integer, required) HTTP status code for this error - `errorCode` (string, required) An April code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type. - `message` (string, required) Human readable description of the error - `tracer` (string) An unique identifier for the request. Provide this to the support team if you wish to query a particular error. - `detail` (string) Optional additional details for the error. - `errorTypeDescription` (string) A description of the category of errors for the given statusCode. - `metadata` (any) Optional key value list of metadata ## Response 503 fields (application/json): - `statusCode` (integer, required) HTTP status code for this error - `errorCode` (string, required) An April code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type. - `message` (string, required) Human readable description of the error - `tracer` (string) An unique identifier for the request. Provide this to the support team if you wish to query a particular error. - `detail` (string) Optional additional details for the error. - `errorTypeDescription` (string) A description of the category of errors for the given statusCode. - `metadata` (any) Optional key value list of metadata