-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Stripe API for Haskell - Pure Core
--   
--   
--   <ul>
--   <li><i>Pure API Wrapper</i> `stripe-core` provides a complete binding
--   to the Stripe API. `stripe-core` provides pure wrappers around all the
--   Stripe API objects and methods. `stripe-core` is pure and is not tied
--   to any particular HTTP client library. End users will typically
--   install the `stripe-haskell` package which pulls in the
--   `stripe-http-streams` library to obtain a complete set of
--   functionality.</li>
--   </ul>
@package stripe-core
@version 2.3.0


module Web.Stripe.Error

-- | Error Codes for HTTP Responses
data StripeErrorHTTPCode

-- | 400
BadRequest :: StripeErrorHTTPCode

-- | 401
UnAuthorized :: StripeErrorHTTPCode

-- | 402
RequestFailed :: StripeErrorHTTPCode

-- | 404
NotFound :: StripeErrorHTTPCode

-- | (&gt;=500)
StripeServerError :: StripeErrorHTTPCode

-- | All other codes
UnknownHTTPCode :: StripeErrorHTTPCode

-- | Stripe Error Types
data StripeErrorType
InvalidRequest :: StripeErrorType
APIError :: StripeErrorType
CardError :: StripeErrorType
ConnectionFailure :: StripeErrorType
ParseFailure :: StripeErrorType
UnknownErrorType :: StripeErrorType

-- | Stripe Error Codes
data StripeErrorCode
IncorrectNumber :: StripeErrorCode
InvalidNumber :: StripeErrorCode
InvalidExpiryMonth :: StripeErrorCode
InvalidExpiryYear :: StripeErrorCode
InvalidCVC :: StripeErrorCode
ExpiredCard :: StripeErrorCode
IncorrectCVC :: StripeErrorCode
IncorrectZIP :: StripeErrorCode
CardDeclined :: StripeErrorCode
Missing :: StripeErrorCode
ProcessingError :: StripeErrorCode
RateLimit :: StripeErrorCode
UnknownError :: StripeErrorCode

-- | Stripe Error
data StripeError
StripeError :: StripeErrorType -> Text -> Maybe StripeErrorCode -> Maybe Text -> Maybe StripeErrorHTTPCode -> StripeError
[errorType] :: StripeError -> StripeErrorType
[errorMsg] :: StripeError -> Text
[errorCode] :: StripeError -> Maybe StripeErrorCode
[errorParam] :: StripeError -> Maybe Text
[errorHTTP] :: StripeError -> Maybe StripeErrorHTTPCode
instance GHC.Show.Show Web.Stripe.Error.StripeError
instance GHC.Show.Show Web.Stripe.Error.StripeErrorCode
instance GHC.Show.Show Web.Stripe.Error.StripeErrorType
instance GHC.Show.Show Web.Stripe.Error.StripeErrorHTTPCode
instance GHC.Exception.Exception Web.Stripe.Error.StripeError
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Error.StripeError


module Web.Stripe.Util

-- | Convert an <a>Integer</a> to a <a>UTCTime</a>
fromSeconds :: Integer -> UTCTime

-- | Convert a <a>UTCTime</a> to a <a>Integer</a>
toSeconds :: UTCTime -> Integer

-- | Conversion of a key value pair to a query parameterized string
paramsToByteString :: (Monoid m, IsString m) => [(m, m)] -> m

-- | Conversion from a <a>Show</a> constrained type to <a>Text</a>
toText :: Show a => a -> Text

-- | Conversion from a <a>Show</a> constrained type to lowercase
--   <a>Text</a>
toTextLower :: Show a => a -> Text

-- | Retrieve and encode the optional parameters
getParams :: [(ByteString, Maybe Text)] -> [(ByteString, ByteString)]

-- | Convert APITVersion to a ByteString
toBytestring :: Show a => a -> ByteString

-- | Forward slash interspersion on <a>Monoid</a> and <a>IsString</a>
--   constrained types
(</>) :: (Monoid m, IsString m) => m -> m -> m

-- | To MetaData
toMetaData :: [(Text, Text)] -> [(ByteString, ByteString)]

-- | To Expandable
toExpandable :: [Text] -> [(ByteString, ByteString)]


module Web.Stripe.Types

-- | <a>Expandable</a> values maps from an id to an object, e.g.
--   <a>CardId</a> to <a>Card</a>

-- | a wrapper for fields which can either be an id or an expanded object
data Expandable id

-- | an id such as <a>CardId</a>, <a>AccountId</a>, <a>CustomerId</a>, etc
Id :: id -> Expandable id

-- | expanded object such as <a>Card</a>, <a>Account</a>, <a>Customer</a>,
--   etc
Expanded :: (ExpandsTo id) -> Expandable id

-- | JSON Instance for <a>Expandable</a>

-- | specify a <a>TimeRange</a> FIXME: this is a little awkward to use. How
--   can we make it moar better?
data TimeRange a
TimeRange :: Maybe a -> Maybe a -> Maybe a -> Maybe a -> TimeRange a
[gt] :: TimeRange a -> Maybe a
[gte] :: TimeRange a -> Maybe a
[lt] :: TimeRange a -> Maybe a
[lte] :: TimeRange a -> Maybe a

-- | Time range with all values set to <a>Nothing</a>
emptyTimeRange :: TimeRange a

-- | <a>AvailableOn</a>
newtype AvailableOn
AvailableOn :: UTCTime -> AvailableOn

-- | <a>Created</a>
newtype Created
Created :: UTCTime -> Created

-- | <a>Date</a>
newtype Date
Date :: UTCTime -> Date

-- | <a>ChargeId</a> associated with a <a>Charge</a>
newtype ChargeId
ChargeId :: Text -> ChargeId

-- | JSON Instance for <a>ChargeId</a>

-- | <a>StatementDescription</a> to be added to a <a>Charge</a>
newtype StatementDescription
StatementDescription :: Text -> StatementDescription

-- | <a>Charge</a> object in <tt>Stripe</tt> API
data Charge
Charge :: ChargeId -> Text -> UTCTime -> Bool -> Bool -> Amount -> Currency -> Bool -> Maybe Card -> Bool -> StripeList Refund -> Maybe (Expandable TransactionId) -> Maybe Text -> Maybe Text -> Int -> Maybe (Expandable CustomerId) -> Maybe (Expandable InvoiceId) -> Maybe Description -> Maybe Dispute -> MetaData -> Maybe StatementDescription -> Maybe Text -> Maybe Text -> Charge
[chargeId] :: Charge -> ChargeId
[chargeObject] :: Charge -> Text
[chargeCreated] :: Charge -> UTCTime
[chargeLiveMode] :: Charge -> Bool
[chargePaid] :: Charge -> Bool
[chargeAmount] :: Charge -> Amount
[chargeCurrency] :: Charge -> Currency
[chargeRefunded] :: Charge -> Bool
[chargeCreditCard] :: Charge -> Maybe Card
[chargeCaptured] :: Charge -> Bool
[chargeRefunds] :: Charge -> StripeList Refund
[chargeBalanceTransaction] :: Charge -> Maybe (Expandable TransactionId)
[chargeFailureMessage] :: Charge -> Maybe Text
[chargeFailureCode] :: Charge -> Maybe Text
[chargeAmountRefunded] :: Charge -> Int
[chargeCustomerId] :: Charge -> Maybe (Expandable CustomerId)
[chargeInvoice] :: Charge -> Maybe (Expandable InvoiceId)
[chargeDescription] :: Charge -> Maybe Description
[chargeDispute] :: Charge -> Maybe Dispute
[chargeMetaData] :: Charge -> MetaData
[chargeStatementDescription] :: Charge -> Maybe StatementDescription
[chargeReceiptEmail] :: Charge -> Maybe Text
[chargeReceiptNumber] :: Charge -> Maybe Text

-- | JSON Instance for <a>Charge</a>

-- | Capture for <a>Charge</a>
newtype Capture
Capture :: Bool -> Capture
[getCapture] :: Capture -> Bool

-- | <a>RefundId</a> for <a>Refund</a>
newtype RefundId
RefundId :: Text -> RefundId

-- | <a>Refund</a> Object
data Refund
Refund :: RefundId -> Int -> Currency -> UTCTime -> Text -> ChargeId -> Expandable TransactionId -> MetaData -> Refund
[refundId] :: Refund -> RefundId
[refundAmount] :: Refund -> Int
[refundCurrency] :: Refund -> Currency
[refundCreated] :: Refund -> UTCTime
[refundObject] :: Refund -> Text
[refundCharge] :: Refund -> ChargeId
[refundBalanceTransaction] :: Refund -> Expandable TransactionId
[refundMetaData] :: Refund -> MetaData

-- | JSON Instance for <a>Refund</a>

-- | <a>RefundApplicationFee</a>
newtype RefundApplicationFee
RefundApplicationFee :: Bool -> RefundApplicationFee
[getRefundApplicationFee] :: RefundApplicationFee -> Bool

-- | <a>RefundReason</a>
data RefundReason
RefundDuplicate :: RefundReason
RefundFraudulent :: RefundReason
RefundRequestedByCustomer :: RefundReason

-- | <a>CustomerId</a> for a <a>Customer</a>
newtype CustomerId
CustomerId :: Text -> CustomerId

-- | JSON Instance for <a>CustomerId</a>

-- | <a>Customer</a> object
data Customer
Customer :: Text -> UTCTime -> CustomerId -> Bool -> Maybe Description -> Maybe Email -> Bool -> StripeList Subscription -> Maybe Discount -> Int -> StripeList Card -> Maybe Currency -> Maybe (Expandable CardId) -> MetaData -> Customer
[customerObject] :: Customer -> Text
[customerCreated] :: Customer -> UTCTime
[customerId] :: Customer -> CustomerId
[customerLiveMode] :: Customer -> Bool
[customerDescription] :: Customer -> Maybe Description
[customerEmail] :: Customer -> Maybe Email
[customerDelinquent] :: Customer -> Bool
[customerSubscriptions] :: Customer -> StripeList Subscription
[customerDiscount] :: Customer -> Maybe Discount
[customerAccountBalance] :: Customer -> Int
[customerCards] :: Customer -> StripeList Card
[customerCurrency] :: Customer -> Maybe Currency
[customerDefaultCard] :: Customer -> Maybe (Expandable CardId)
[customerMetaData] :: Customer -> MetaData
DeletedCustomer :: Maybe Bool -> CustomerId -> Customer
[deletedCustomer] :: Customer -> Maybe Bool
[deletedCustomerId] :: Customer -> CustomerId

-- | JSON Instance for <a>Customer</a>

-- | AccountBalance for a <a>Customer</a>
newtype AccountBalance
AccountBalance :: Int -> AccountBalance

-- | CardId for a <a>Customer</a>
newtype CardId
CardId :: Text -> CardId

-- | CardId for a <a>Recipient</a>
newtype RecipientCardId
RecipientCardId :: Text -> RecipientCardId

-- | JSON Instance for <a>CardId</a>

-- | JSON Instance for <a>RecipientCardId</a>

-- | Number associated with a <a>Card</a>
newtype CardNumber
CardNumber :: Text -> CardNumber

-- | Expiration Month for a <a>Card</a>
newtype ExpMonth
ExpMonth :: Int -> ExpMonth

-- | Expiration Year for a <a>Card</a>
newtype ExpYear
ExpYear :: Int -> ExpYear

-- | CVC for a <a>Card</a>
newtype CVC
CVC :: Text -> CVC

-- | City address for a <a>Card</a>
newtype AddressCity
AddressCity :: Text -> AddressCity

-- | Country address for a <a>Card</a>
newtype AddressCountry
AddressCountry :: Text -> AddressCountry

-- | Address Line One for a <a>Card</a>
newtype AddressLine1
AddressLine1 :: Text -> AddressLine1

-- | Address Line Two for a <a>Card</a>
newtype AddressLine2
AddressLine2 :: Text -> AddressLine2

-- | Address State for a <a>Card</a>
newtype AddressState
AddressState :: Text -> AddressState

-- | Address Zip Code for a <a>Card</a>
newtype AddressZip
AddressZip :: Text -> AddressZip

-- | <a>IsVerified</a> <tt>Recipients</tt>
newtype IsVerified
IsVerified :: Bool -> IsVerified
[getVerified] :: IsVerified -> Bool

-- | Credit / Debit Card Brand
data Brand
Visa :: Brand
AMEX :: Brand
MasterCard :: Brand
Discover :: Brand
JCB :: Brand
DinersClub :: Brand
Unknown :: Brand

-- | JSON Instance for <a>Brand</a>

-- | <a>Card</a> Object
data Card
Card :: CardId -> Text -> Text -> Brand -> Text -> ExpMonth -> ExpYear -> Text -> Maybe Text -> Maybe Name -> Maybe AddressLine1 -> Maybe AddressLine2 -> Maybe AddressCity -> Maybe AddressState -> Maybe AddressZip -> Maybe AddressCountry -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe (Expandable CustomerId) -> MetaData -> Card
[cardId] :: Card -> CardId
[cardObject] :: Card -> Text
[cardLastFour] :: Card -> Text
[cardBrand] :: Card -> Brand
[cardFunding] :: Card -> Text
[cardExpMonth] :: Card -> ExpMonth
[cardExpYear] :: Card -> ExpYear
[cardFingerprint] :: Card -> Text
[cardCountry] :: Card -> Maybe Text
[cardName] :: Card -> Maybe Name
[cardAddressLine1] :: Card -> Maybe AddressLine1
[cardAddressLine2] :: Card -> Maybe AddressLine2
[cardAddressCity] :: Card -> Maybe AddressCity
[cardAddressState] :: Card -> Maybe AddressState
[cardAddressZip] :: Card -> Maybe AddressZip
[cardAddressCountry] :: Card -> Maybe AddressCountry
[cardCVCCheck] :: Card -> Maybe Text
[cardAddressLine1Check] :: Card -> Maybe Text
[cardAddressZipCheck] :: Card -> Maybe Text
[cardCustomerId] :: Card -> Maybe (Expandable CustomerId)
[cardMetaData] :: Card -> MetaData

-- | <a>RecipientCard</a> object
data RecipientCard
RecipientCard :: RecipientCardId -> Text -> Brand -> Text -> ExpMonth -> ExpYear -> Text -> Country -> Maybe Name -> Maybe AddressLine1 -> Maybe AddressLine2 -> Maybe AddressCity -> Maybe AddressState -> Maybe AddressZip -> Maybe AddressCountry -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe (Expandable RecipientId) -> RecipientCard
[recipientCardId] :: RecipientCard -> RecipientCardId
[recipientCardLastFour] :: RecipientCard -> Text
[recipientCardBrand] :: RecipientCard -> Brand
[recipientCardFunding] :: RecipientCard -> Text
[recipientCardExpMonth] :: RecipientCard -> ExpMonth
[recipientCardExpYear] :: RecipientCard -> ExpYear
[recipientCardFingerprint] :: RecipientCard -> Text
[recipientCardCountry] :: RecipientCard -> Country
[recipientCardName] :: RecipientCard -> Maybe Name
[recipientCardAddressLine1] :: RecipientCard -> Maybe AddressLine1
[recipientCardAddressLine2] :: RecipientCard -> Maybe AddressLine2
[recipientCardAddressCity] :: RecipientCard -> Maybe AddressCity
[recipientCardAddressState] :: RecipientCard -> Maybe AddressState
[recipientCardAddressZip] :: RecipientCard -> Maybe AddressZip
[recipientCardAddressCountry] :: RecipientCard -> Maybe AddressCountry
[recipientCardCVCCheck] :: RecipientCard -> Maybe Text
[recipientCardAddressLine1Check] :: RecipientCard -> Maybe Text
[recipientCardAddressZipCheck] :: RecipientCard -> Maybe Text
[recipientCardRecipientId] :: RecipientCard -> Maybe (Expandable RecipientId)

-- | JSON Instance for <a>Card</a>

-- | JSON Instance for <a>RecipientCard</a>

-- | <a>NewCard</a> contains the data needed to create a new <a>Card</a>
data NewCard
NewCard :: CardNumber -> ExpMonth -> ExpYear -> Maybe CVC -> Maybe Name -> Maybe AddressLine1 -> Maybe AddressLine2 -> Maybe AddressCity -> Maybe AddressZip -> Maybe AddressState -> Maybe AddressCountry -> NewCard
[newCardCardNumber] :: NewCard -> CardNumber
[newCardExpMonth] :: NewCard -> ExpMonth
[newCardExpYear] :: NewCard -> ExpYear
[newCardCVC] :: NewCard -> Maybe CVC
[newCardName] :: NewCard -> Maybe Name
[newCardAddressLine1] :: NewCard -> Maybe AddressLine1
[newCardAddressLine2] :: NewCard -> Maybe AddressLine2
[newCardAddressCity] :: NewCard -> Maybe AddressCity
[newCardAddressZip] :: NewCard -> Maybe AddressZip
[newCardAddressState] :: NewCard -> Maybe AddressState
[newCardAddressCountry] :: NewCard -> Maybe AddressCountry

-- | create a <a>NewCard</a> with only the required fields
mkNewCard :: CardNumber -> ExpMonth -> ExpYear -> NewCard

-- | set the <a>DefaultCard</a>
data DefaultCard
DefaultCard :: CardId -> DefaultCard
[getDefaultCard] :: DefaultCard -> CardId

-- | <a>SubscriptionId</a> for a <a>Subscription</a>
newtype SubscriptionId
SubscriptionId :: Text -> SubscriptionId
[getSubscriptionId] :: SubscriptionId -> Text

-- | JSON Instance for <a>SubscriptionId</a>

-- | Subscription Object
data Subscription
Subscription :: SubscriptionId -> Plan -> Text -> UTCTime -> SubscriptionStatus -> Expandable CustomerId -> Bool -> UTCTime -> UTCTime -> Maybe UTCTime -> Maybe UTCTime -> Maybe UTCTime -> Maybe UTCTime -> Quantity -> Maybe Double -> Maybe Discount -> MetaData -> Maybe Double -> Subscription
[subscriptionId] :: Subscription -> SubscriptionId
[subscriptionPlan] :: Subscription -> Plan
[subscriptionObject] :: Subscription -> Text
[subscriptionStart] :: Subscription -> UTCTime
[subscriptionStatus] :: Subscription -> SubscriptionStatus
[subscriptionCustomerId] :: Subscription -> Expandable CustomerId
[subscriptionCancelAtPeriodEnd] :: Subscription -> Bool
[subscriptionCurrentPeriodStart] :: Subscription -> UTCTime
[subscriptionCurrentPeriodEnd] :: Subscription -> UTCTime
[subscriptionEndedAt] :: Subscription -> Maybe UTCTime
[subscriptionTrialStart] :: Subscription -> Maybe UTCTime
[subscriptionTrialEnd] :: Subscription -> Maybe UTCTime
[subscriptionCanceledAt] :: Subscription -> Maybe UTCTime
[subscriptionQuantity] :: Subscription -> Quantity
[subscriptionApplicationFeePercent] :: Subscription -> Maybe Double
[subscriptionDiscount] :: Subscription -> Maybe Discount
[subscriptionMetaData] :: Subscription -> MetaData
[subscriptionTaxPercent] :: Subscription -> Maybe Double

-- | JSON Instance for <a>Subscription</a>

-- | Status of a <a>Subscription</a>
data SubscriptionStatus
Trialing :: SubscriptionStatus
Active :: SubscriptionStatus
PastDue :: SubscriptionStatus
Canceled :: SubscriptionStatus
UnPaid :: SubscriptionStatus

-- | JSON Instance for <a>SubscriptionStatus</a>

-- | <a>TaxPercent</a> for a <a>Subscription</a>
newtype TaxPercent
TaxPercent :: Double -> TaxPercent

-- | <a>PlanId</a> for a <a>Plan</a>
newtype PlanId
PlanId :: Text -> PlanId

-- | Plan object
data Plan
Plan :: Interval -> Text -> UTCTime -> Int -> Currency -> PlanId -> Text -> Bool -> Maybe Int -> Maybe Int -> MetaData -> Maybe StatementDescription -> Plan
[planInterval] :: Plan -> Interval
[planName] :: Plan -> Text
[planCreated] :: Plan -> UTCTime
[planAmount] :: Plan -> Int
[planCurrency] :: Plan -> Currency
[planId] :: Plan -> PlanId
[planObject] :: Plan -> Text
[planLiveMode] :: Plan -> Bool
[planIntervalCount] :: Plan -> Maybe Int
[planTrialPeriodDays] :: Plan -> Maybe Int
[planMetaData] :: Plan -> MetaData
[planDescription] :: Plan -> Maybe StatementDescription

-- | JSON Instance for <a>Plan</a>

-- | <a>TrialPeriod</a> for a Plan
newtype TrialPeriod
TrialPeriod :: UTCTime -> TrialPeriod

-- | <a>TrialEnd</a> for a Plan
newtype TrialEnd
TrialEnd :: UTCTime -> TrialEnd

-- | Interval for <a>Plan</a>s
data Interval
Day :: Interval
Week :: Interval
Month :: Interval
Year :: Interval

-- | JSON Instance for <a>Interval</a>

-- | <a>Show</a> instance for <a>Interval</a>

-- | <a>Read</a> instance for <a>Interval</a>

-- | <a>Coupon</a> Duration
data Duration
Forever :: Duration
Once :: Duration
Repeating :: Duration

-- | <a>Show</a> instance for <a>Duration</a>

-- | <a>Read</a> instance for <a>Duration</a>

-- | JSON Instance for <a>Duration</a>

-- | <a>Coupon</a> Object
data Coupon
Coupon :: CouponId -> UTCTime -> Maybe Int -> Maybe Int -> Maybe Currency -> Bool -> Duration -> Maybe UTCTime -> Maybe Int -> Maybe Int -> Maybe Int -> Bool -> MetaData -> Coupon
[couponId] :: Coupon -> CouponId
[couponCreated] :: Coupon -> UTCTime
[couponPercentOff] :: Coupon -> Maybe Int
[couponAmountOff] :: Coupon -> Maybe Int
[couponCurrency] :: Coupon -> Maybe Currency
[couponLiveMode] :: Coupon -> Bool
[couponDuration] :: Coupon -> Duration
[couponRedeemBy] :: Coupon -> Maybe UTCTime
[couponMaxRedemptions] :: Coupon -> Maybe Int
[couponTimesRedeemed] :: Coupon -> Maybe Int
[couponDurationInMonths] :: Coupon -> Maybe Int
[couponValid] :: Coupon -> Bool
[couponMetaData] :: Coupon -> MetaData

-- | JSON Instance for <a>Coupon</a>

-- | <a>CouponId</a> for a <a>Coupon</a>
newtype CouponId
CouponId :: Text -> CouponId

-- | <a>AmountOff</a> for a <a>Coupon</a>
newtype AmountOff
AmountOff :: Int -> AmountOff

-- | <a>MaxRedemptions</a> for a <a>Coupon</a>
newtype MaxRedemptions
MaxRedemptions :: Int -> MaxRedemptions

-- | <a>PercentOff</a> for a <a>Coupon</a>
newtype PercentOff
PercentOff :: Int -> PercentOff

-- | <a>RedeemBy</a> date for a <a>Coupon</a>
newtype RedeemBy
RedeemBy :: UTCTime -> RedeemBy

-- | <a>DurationInMonths</a> for a <a>Coupon</a>
newtype DurationInMonths
DurationInMonths :: Int -> DurationInMonths

-- | <a>IntervalCount</a> for a <a>Coupon</a>
newtype IntervalCount
IntervalCount :: Int -> IntervalCount

-- | <a>TrialPeriodDays</a> for a <a>Coupon</a>
newtype TrialPeriodDays
TrialPeriodDays :: Int -> TrialPeriodDays

-- | Amount representing a monetary value. Stripe represents pennies as
--   whole numbers i.e. 100 = $1
newtype Amount
Amount :: Int -> Amount
[getAmount] :: Amount -> Int

-- | <a>Discount</a> for <a>Coupon</a>
data Discount
Discount :: Coupon -> UTCTime -> Maybe UTCTime -> Expandable CustomerId -> Text -> Maybe SubscriptionId -> Discount
[discountCoupon] :: Discount -> Coupon
[discountStart] :: Discount -> UTCTime
[discountEnd] :: Discount -> Maybe UTCTime
[discountCustomer] :: Discount -> Expandable CustomerId
[discountObject] :: Discount -> Text
[discountSubscription] :: Discount -> Maybe SubscriptionId

-- | JSON Instance for <a>Discount</a>

-- | <a>Invoice</a> for a <a>Coupon</a>
newtype InvoiceId
InvoiceId :: Text -> InvoiceId

-- | JSON Instance for <a>InvoiceId</a>

-- | <a>Invoice</a> Object
data Invoice
Invoice :: UTCTime -> Maybe InvoiceId -> UTCTime -> UTCTime -> StripeList InvoiceLineItem -> Int -> Int -> Expandable CustomerId -> Text -> Bool -> Bool -> Bool -> Bool -> Bool -> Int -> Int -> Currency -> Int -> Maybe Int -> Maybe UTCTime -> Maybe UTCTime -> Maybe (Expandable ChargeId) -> Maybe Discount -> Maybe FeeId -> Maybe SubscriptionId -> Maybe StatementDescription -> Maybe Description -> MetaData -> Invoice
[invoiceDate] :: Invoice -> UTCTime

-- | If upcoming no ID will exist
[invoiceId] :: Invoice -> Maybe InvoiceId
[invoicePeriodStart] :: Invoice -> UTCTime
[invoicePeriodEnd] :: Invoice -> UTCTime
[invoiceLineItems] :: Invoice -> StripeList InvoiceLineItem
[invoiceSubTotal] :: Invoice -> Int
[invoiceTotal] :: Invoice -> Int
[invoiceCustomer] :: Invoice -> Expandable CustomerId
[invoiceObject] :: Invoice -> Text
[invoiceAttempted] :: Invoice -> Bool
[invoiceClosed] :: Invoice -> Bool
[invoiceForgiven] :: Invoice -> Bool
[invoicePaid] :: Invoice -> Bool
[invoiceLiveMode] :: Invoice -> Bool
[invoiceAttemptCount] :: Invoice -> Int
[invoiceAmountDue] :: Invoice -> Int
[invoiceCurrency] :: Invoice -> Currency
[invoiceStartingBalance] :: Invoice -> Int
[invoiceEndingBalance] :: Invoice -> Maybe Int
[invoiceNextPaymentAttempt] :: Invoice -> Maybe UTCTime
[invoiceWebHooksDeliveredAt] :: Invoice -> Maybe UTCTime
[invoiceCharge] :: Invoice -> Maybe (Expandable ChargeId)
[invoiceDiscount] :: Invoice -> Maybe Discount
[invoiceApplicateFee] :: Invoice -> Maybe FeeId
[invoiceSubscription] :: Invoice -> Maybe SubscriptionId
[invoiceStatementDescription] :: Invoice -> Maybe StatementDescription
[invoiceDescription] :: Invoice -> Maybe Description
[invoiceMetaData] :: Invoice -> MetaData

-- | JSON Instance for <a>Invoice</a>

-- | <a>InvoiceItemId</a> for <a>InvoiceItem</a>
newtype InvoiceItemId
InvoiceItemId :: Text -> InvoiceItemId

-- | <a>InvoiceItem</a> object
data InvoiceItem
InvoiceItem :: Text -> InvoiceItemId -> UTCTime -> Int -> Bool -> Bool -> Currency -> Expandable CustomerId -> Maybe Description -> Maybe (Expandable InvoiceId) -> Maybe Quantity -> Maybe SubscriptionId -> MetaData -> InvoiceItem
[invoiceItemObject] :: InvoiceItem -> Text
[invoiceItemId] :: InvoiceItem -> InvoiceItemId
[invoiceItemDate] :: InvoiceItem -> UTCTime
[invoiceItemAmount] :: InvoiceItem -> Int
[invoiceItemLiveMode] :: InvoiceItem -> Bool
[invoiceItemProration] :: InvoiceItem -> Bool
[invoiceItemCurrency] :: InvoiceItem -> Currency
[invoiceItemCustomer] :: InvoiceItem -> Expandable CustomerId
[invoiceItemDescription] :: InvoiceItem -> Maybe Description
[invoiceItemInvoice] :: InvoiceItem -> Maybe (Expandable InvoiceId)
[invoiceItemQuantity] :: InvoiceItem -> Maybe Quantity
[invoiceItemSubscription] :: InvoiceItem -> Maybe SubscriptionId
[invoiceItemMetaData] :: InvoiceItem -> MetaData

-- | JSON Instance for <a>InvoiceItem</a>

-- | <a>InvoiceLineItemId</a> for an <a>InvoiceLineItem</a>
newtype InvoiceLineItemId
InvoiceLineItemId :: Text -> InvoiceLineItemId

-- | Type of <a>InvoiceItem</a>
data InvoiceLineItemType
InvoiceItemType :: InvoiceLineItemType
SubscriptionItemType :: InvoiceLineItemType

-- | JSON Instance for <a>InvoiceLineItemType</a>

-- | <a>InvoiceLineItem</a> Object
data InvoiceLineItem
InvoiceLineItem :: InvoiceLineItemId -> Text -> InvoiceLineItemType -> Bool -> Int -> Currency -> Bool -> Period -> Maybe Quantity -> Maybe Plan -> Maybe Description -> MetaData -> InvoiceLineItem
[invoiceLineItemId] :: InvoiceLineItem -> InvoiceLineItemId
[invoiceLineItemObject] :: InvoiceLineItem -> Text
[invoiceLineItemType] :: InvoiceLineItem -> InvoiceLineItemType
[invoiceLineItemLiveMode] :: InvoiceLineItem -> Bool
[invoiceLineItemAmount] :: InvoiceLineItem -> Int
[invoiceLineItemCurrency] :: InvoiceLineItem -> Currency
[invoiceLineItemProration] :: InvoiceLineItem -> Bool
[invoiceLineItemPeriod] :: InvoiceLineItem -> Period
[invoiceLineItemQuantity] :: InvoiceLineItem -> Maybe Quantity
[invoiceLineItemPlan] :: InvoiceLineItem -> Maybe Plan
[invoiceLineItemDescription] :: InvoiceLineItem -> Maybe Description
[invoiceLineItemMetaData] :: InvoiceLineItem -> MetaData

-- | Period for an <a>InvoiceLineItem</a>
data Period
Period :: UTCTime -> UTCTime -> Period
[start] :: Period -> UTCTime
[end] :: Period -> UTCTime

-- | JSON Instance for <a>Period</a>

-- | JSON Instance for <a>InvoiceLineItem</a>

-- | <a>Closed</a> - invoice closed or not
newtype Closed
Closed :: Bool -> Closed
[getClosed] :: Closed -> Bool

-- | <a>Forgiven</a> - invoice forgiven or not
newtype Forgiven
Forgiven :: Bool -> Forgiven
[getForgiven] :: Forgiven -> Bool

-- | Status of a <a>Dispute</a>
data DisputeStatus
WarningNeedsResponse :: DisputeStatus
WarningUnderReview :: DisputeStatus
NeedsResponse :: DisputeStatus
UnderReview :: DisputeStatus
ChargeRefunded :: DisputeStatus
Won :: DisputeStatus
Lost :: DisputeStatus

-- | JSON Instance for <a>DisputeReason</a>

-- | Reason of a <a>Dispute</a>
data DisputeReason
Duplicate :: DisputeReason
Fraudulent :: DisputeReason
SubscriptionCanceled :: DisputeReason
ProductUnacceptable :: DisputeReason
ProductNotReceived :: DisputeReason
Unrecognized :: DisputeReason
CreditNotProcessed :: DisputeReason
General :: DisputeReason

-- | JSON Instance for <a>DisputeStatus</a>

-- | <a>Dispute</a> Object
data Dispute
Dispute :: Expandable ChargeId -> Int -> UTCTime -> DisputeStatus -> Bool -> Currency -> Text -> DisputeReason -> Bool -> [BalanceTransaction] -> UTCTime -> Maybe Evidence -> MetaData -> Dispute
[disputeChargeId] :: Dispute -> Expandable ChargeId
[disputeAmount] :: Dispute -> Int
[disputeCreated] :: Dispute -> UTCTime
[disputeStatus] :: Dispute -> DisputeStatus
[disputeLiveMode] :: Dispute -> Bool
[disputeCurrency] :: Dispute -> Currency
[disputeObject] :: Dispute -> Text
[disputeReason] :: Dispute -> DisputeReason
[disputeIsChargeRefundable] :: Dispute -> Bool
[disputeBalanceTransactions] :: Dispute -> [BalanceTransaction]
[disputeEvidenceDueBy] :: Dispute -> UTCTime
[disputeEvidence] :: Dispute -> Maybe Evidence
[disputeMetaData] :: Dispute -> MetaData

-- | <a>Evidence</a> associated with a <a>Dispute</a>
newtype Evidence
Evidence :: Text -> Evidence

-- | JSON Instance for <a>Dispute</a>

-- | <a>TransferId</a>
newtype TransferId
TransferId :: Text -> TransferId

-- | Status of a <a>Transfer</a>
data TransferStatus
TransferPaid :: TransferStatus
TransferPending :: TransferStatus
TransferCanceled :: TransferStatus
TransferFailed :: TransferStatus

-- | Type of a <a>Transfer</a>
data TransferType
CardTransfer :: TransferType
BankAccountTransfer :: TransferType

-- | JSON Instance for <a>TransferType</a>

-- | JSON Instance for <a>TransferStatus</a>

-- | <a>Transfer</a> Object
data Transfer
Transfer :: TransferId -> Text -> UTCTime -> UTCTime -> Bool -> Int -> Currency -> TransferStatus -> TransferType -> Expandable TransactionId -> Maybe Description -> Maybe BankAccount -> Maybe Text -> Maybe Text -> Maybe StatementDescription -> Maybe (Expandable RecipientId) -> MetaData -> Transfer
[transferId] :: Transfer -> TransferId
[transferObject] :: Transfer -> Text
[transferCreated] :: Transfer -> UTCTime
[transferDate] :: Transfer -> UTCTime
[transferLiveMode] :: Transfer -> Bool
[transferAmount] :: Transfer -> Int
[transferCurrency] :: Transfer -> Currency
[transferStatus] :: Transfer -> TransferStatus
[transferType] :: Transfer -> TransferType
[transferBalanceTransaction] :: Transfer -> Expandable TransactionId
[transferDescription] :: Transfer -> Maybe Description
[transferBankAccount] :: Transfer -> Maybe BankAccount
[transferFailureMessage] :: Transfer -> Maybe Text
[transferFailureCode] :: Transfer -> Maybe Text
[transferStatementDescription] :: Transfer -> Maybe StatementDescription
[transferRecipient] :: Transfer -> Maybe (Expandable RecipientId)
[transferMetaData] :: Transfer -> MetaData

-- | JSON Instance for <a>Transfer</a>

-- | <a>BankAccount</a> Object
data BankAccount
BankAccount :: BankAccountId -> Text -> Text -> Country -> Currency -> Maybe BankAccountStatus -> Maybe Text -> Text -> BankAccount
[bankAccountId] :: BankAccount -> BankAccountId
[bankAccountObject] :: BankAccount -> Text
[bankAccountLast4] :: BankAccount -> Text
[bankAccountCountry] :: BankAccount -> Country
[bankAccountCurrency] :: BankAccount -> Currency
[bankAccountStatus] :: BankAccount -> Maybe BankAccountStatus
[bankAccountFingerprint] :: BankAccount -> Maybe Text
[bankAccountName] :: BankAccount -> Text

-- | <a>BankAccount</a> JSON Instance

-- | <a>BankAccountId</a> for <a>BankAccount</a>
newtype BankAccountId
BankAccountId :: Text -> BankAccountId

-- | <a>BankAccountStatus</a> Object
data BankAccountStatus
New :: BankAccountStatus
Validated :: BankAccountStatus
Verified :: BankAccountStatus
Errored :: BankAccountStatus

-- | <a>BankAccountStatus</a> JSON instance

-- | Routing Number for Bank Account
newtype RoutingNumber
RoutingNumber :: Text -> RoutingNumber

-- | Country
newtype Country
Country :: Text -> Country

-- | Account Number of a Bank Account
newtype AccountNumber
AccountNumber :: Text -> AccountNumber

-- | create a new <a>BankAccount</a>
data NewBankAccount
NewBankAccount :: Country -> RoutingNumber -> AccountNumber -> NewBankAccount
[newBankAccountCountry] :: NewBankAccount -> Country
[newBankAccountRoutingNumber] :: NewBankAccount -> RoutingNumber
[newBankAccountAccountNumber] :: NewBankAccount -> AccountNumber

-- | Recipients
--   
--   <a>FirstName</a> of a <a>Recipient</a>
newtype FirstName
FirstName :: Text -> FirstName

-- | <a>LastName</a> of a <a>Recipient</a>
newtype LastName
LastName :: Text -> LastName

-- | Middle Initial of a <a>Recipient</a>
type MiddleInitial = Char

-- | <a>RecipientId</a> for a <a>Recipient</a>
newtype RecipientId
RecipientId :: Text -> RecipientId

-- | JSON Instance for <a>RecipientId</a>

-- | <a>TaxID</a>
newtype TaxID
TaxID :: Text -> TaxID
[getTaxID] :: TaxID -> Text

-- | Type of <a>Recipient</a>
data RecipientType
Individual :: RecipientType
Corporation :: RecipientType

-- | <a>Show</a> instance for <a>RecipientType</a>

-- | <a>Read</a> instance for <a>RecipientType</a>

-- | JSON Instance for <a>RecipientType</a>

-- | Recipient Object
data Recipient
Recipient :: RecipientId -> Text -> UTCTime -> Bool -> RecipientType -> Maybe Description -> Maybe Email -> Name -> Bool -> Maybe BankAccount -> StripeList RecipientCard -> Maybe (Expandable RecipientCardId) -> Recipient
[recipientId] :: Recipient -> RecipientId
[recipientObject] :: Recipient -> Text
[recipientCreated] :: Recipient -> UTCTime
[recipientLiveMode] :: Recipient -> Bool
[recipientType] :: Recipient -> RecipientType
[recipientDescription] :: Recipient -> Maybe Description
[recipientEmail] :: Recipient -> Maybe Email
[recipientName] :: Recipient -> Name
[recipientVerified] :: Recipient -> Bool
[recipientActiveAccount] :: Recipient -> Maybe BankAccount
[recipientCards] :: Recipient -> StripeList RecipientCard
[recipientDefaultCard] :: Recipient -> Maybe (Expandable RecipientCardId)
DeletedRecipient :: Maybe Bool -> RecipientId -> Recipient
[deletedRecipient] :: Recipient -> Maybe Bool
[deletedRecipientId] :: Recipient -> RecipientId

-- | JSON Instance for <a>Recipient</a>

-- | <a>PlanId</a> for a <a>Plan</a>
newtype ApplicationFeeId
ApplicationFeeId :: Text -> ApplicationFeeId

-- | ApplicationFee Object
data ApplicationFee
ApplicationFee :: ApplicationFeeId -> Text -> UTCTime -> Bool -> Int -> Currency -> Bool -> Int -> StripeList Refund -> Expandable TransactionId -> Expandable AccountId -> ApplicationId -> Expandable ChargeId -> MetaData -> ApplicationFee
[applicationFeeId] :: ApplicationFee -> ApplicationFeeId
[applicationFeeObjecet] :: ApplicationFee -> Text
[applicationFeeCreated] :: ApplicationFee -> UTCTime
[applicationFeeLiveMode] :: ApplicationFee -> Bool
[applicationFeeAmount] :: ApplicationFee -> Int
[applicationFeeCurrency] :: ApplicationFee -> Currency
[applicationFeeRefunded] :: ApplicationFee -> Bool
[applicationFeeAmountRefunded] :: ApplicationFee -> Int
[applicationFeeRefunds] :: ApplicationFee -> StripeList Refund
[applicationFeeBalanceTransaction] :: ApplicationFee -> Expandable TransactionId
[applicationFeeAccountId] :: ApplicationFee -> Expandable AccountId
[applicationFeeApplicationId] :: ApplicationFee -> ApplicationId
[applicationFeeChargeId] :: ApplicationFee -> Expandable ChargeId
[applicationFeeMetaData] :: ApplicationFee -> MetaData

-- | ApplicationFeePercent
newtype ApplicationFeePercent
ApplicationFeePercent :: Double -> ApplicationFeePercent

-- | ApplicationFeeAmount
newtype ApplicationFeeAmount
ApplicationFeeAmount :: Integer -> ApplicationFeeAmount

-- | <a>ApplicationId</a> object
newtype ApplicationId
ApplicationId :: Text -> ApplicationId

-- | JSON Instance for <a>ApplicationFee</a>

-- | <a>FeeId</a> for objects with Fees
newtype FeeId
FeeId :: Text -> FeeId

-- | Application Fee Refunds
data ApplicationFeeRefund
ApplicationFeeRefund :: RefundId -> Int -> Currency -> UTCTime -> Text -> Maybe (Expandable TransactionId) -> FeeId -> MetaData -> ApplicationFeeRefund
[applicationFeeRefundId] :: ApplicationFeeRefund -> RefundId
[applicationFeeRefundAmount] :: ApplicationFeeRefund -> Int
[applicationFeeRefundCurrency] :: ApplicationFeeRefund -> Currency
[applicationFeeRefundCreated] :: ApplicationFeeRefund -> UTCTime
[applicationFeeRefundObject] :: ApplicationFeeRefund -> Text
[applicationFeeRefundBalanceTransaction] :: ApplicationFeeRefund -> Maybe (Expandable TransactionId)
[applicationFeeRefundFee] :: ApplicationFeeRefund -> FeeId
[applicationFeeRefundMetaData] :: ApplicationFeeRefund -> MetaData

-- | JSON Instance for <a>ApplicationFeeRefund</a>

-- | <a>AccountId</a> of an <a>Account</a>
newtype AccountId
AccountId :: Text -> AccountId

-- | JSON Instance for <a>AccountId</a>

-- | <a>Account</a> Object
data Account
Account :: AccountId -> Email -> Maybe Description -> Maybe Text -> Text -> Bool -> Bool -> Bool -> [Currency] -> Currency -> Text -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Account
[accountId] :: Account -> AccountId
[accountEmail] :: Account -> Email
[accountStatementDescriptor] :: Account -> Maybe Description
[accountDisplayName] :: Account -> Maybe Text
[accountTimeZone] :: Account -> Text
[accountDetailsSubmitted] :: Account -> Bool
[accountChargeEnabled] :: Account -> Bool
[accountTransferEnabled] :: Account -> Bool
[accountCurrenciesSupported] :: Account -> [Currency]
[accountDefaultCurrency] :: Account -> Currency
[accountCountry] :: Account -> Text
[accountObject] :: Account -> Text
[accountBusinessName] :: Account -> Maybe Text
[accountBusinessURL] :: Account -> Maybe Text
[accountBusinessLogo] :: Account -> Maybe Text
[accountSupportPhone] :: Account -> Maybe Text

-- | JSON Instance for <a>Account</a>

-- | <a>Balance</a> Object
data Balance
Balance :: [BalanceAmount] -> [BalanceAmount] -> Bool -> Text -> Balance
[balancePending] :: Balance -> [BalanceAmount]
[balanceAvailable] :: Balance -> [BalanceAmount]
[balanceLiveMode] :: Balance -> Bool
[balanceObject] :: Balance -> Text

-- | JSON Instance for <a>Balance</a>

-- | <a>BalanceAmount</a> Object
data BalanceAmount
BalanceAmount :: Int -> Currency -> BalanceAmount
[balanceAmount] :: BalanceAmount -> Int
[balanceCurrency] :: BalanceAmount -> Currency

-- | JSON Instance for <a>BalanceAmount</a>

-- | <a>BalanceTransaction</a> Object
data BalanceTransaction
BalanceTransaction :: TransactionId -> Text -> Int -> Currency -> Int -> TransactionType -> UTCTime -> UTCTime -> Text -> Int -> [FeeDetails] -> Expandable ChargeId -> Maybe Description -> BalanceTransaction
[balanceTransactionId] :: BalanceTransaction -> TransactionId
[balanceTransactionObject] :: BalanceTransaction -> Text
[balanceTransactionAmount] :: BalanceTransaction -> Int
[balanceTransactionCurrency] :: BalanceTransaction -> Currency
[balanceTransactionNet] :: BalanceTransaction -> Int
[balanceTransactionType] :: BalanceTransaction -> TransactionType
[balanceTransactionCreated] :: BalanceTransaction -> UTCTime
[balanceTransactionAvailableOn] :: BalanceTransaction -> UTCTime
[balanceTransactionStatus] :: BalanceTransaction -> Text
[balanceTransactionFee] :: BalanceTransaction -> Int
[balanceTransactionFeeDetails] :: BalanceTransaction -> [FeeDetails]
[balanceTransactionFeeSource] :: BalanceTransaction -> Expandable ChargeId
[balanceTransactionFeeDescription] :: BalanceTransaction -> Maybe Description

-- | JSON Instance for <a>BalanceTransaction</a>

-- | <a>TransactionId</a> of a <tt>Transaction</tt>
newtype TransactionId
TransactionId :: Text -> TransactionId

-- | JSON Instance for <a>TransactionId</a>

-- | <a>FeeDetails</a> Object
data FeeDetails
FeeDetails :: Int -> Currency -> Text -> Maybe Description -> Maybe Text -> FeeDetails
[feeDetailsAmount] :: FeeDetails -> Int
[feeDetailsCurrency] :: FeeDetails -> Currency
[feeType] :: FeeDetails -> Text
[feeDescription] :: FeeDetails -> Maybe Description
[feeApplication] :: FeeDetails -> Maybe Text

-- | JSON Instance for <a>FeeDetails</a>

-- | <a>Source</a> used for filtering <a>Balance</a> transactions. It
--   should contain an object Id such as a <a>ChargeId</a>
newtype Source a
Source :: a -> Source a
[getSource] :: Source a -> a

-- | transaction type for <a>BalanceTransaction</a>
data TransactionType
ChargeTxn :: TransactionType
RefundTxn :: TransactionType
AdjustmentTxn :: TransactionType
ApplicationFeeTxn :: TransactionType
ApplicationFeeRefundTxn :: TransactionType
TransferTxn :: TransactionType
TransferCancelTxn :: TransactionType
TransferFailureTxn :: TransactionType

-- | <a>Event</a> Types
data EventType
AccountUpdatedEvent :: EventType
AccountApplicationDeauthorizedEvent :: EventType
ApplicationFeeCreatedEvent :: EventType
ApplicationFeeRefundedEvent :: EventType
BalanceAvailableEvent :: EventType
ChargeSucceededEvent :: EventType
ChargeFailedEvent :: EventType
ChargeRefundedEvent :: EventType
ChargeCapturedEvent :: EventType
ChargeUpdatedEvent :: EventType
ChargeDisputeCreatedEvent :: EventType
ChargeDisputeUpdatedEvent :: EventType
ChargeDisputeClosedEvent :: EventType
ChargeDisputeFundsWithdrawnEvent :: EventType
ChargeDisputeFundsReinstatedEvent :: EventType
CustomerCreatedEvent :: EventType
CustomerUpdatedEvent :: EventType
CustomerDeletedEvent :: EventType
CustomerCardCreatedEvent :: EventType
CustomerCardUpdatedEvent :: EventType
CustomerCardDeletedEvent :: EventType
CustomerSubscriptionCreatedEvent :: EventType
CustomerSubscriptionUpdatedEvent :: EventType
CustomerSubscriptionDeletedEvent :: EventType
CustomerSubscriptionTrialWillEndEvent :: EventType
CustomerDiscountCreatedEvent :: EventType
CustomerDiscountUpdatedEvent :: EventType
CustomerDiscountDeletedEvent :: EventType
InvoiceCreatedEvent :: EventType
InvoiceUpdatedEvent :: EventType
InvoicePaymentSucceededEvent :: EventType
InvoicePaymentFailedEvent :: EventType
InvoiceItemCreatedEvent :: EventType
InvoiceItemUpdatedEvent :: EventType
InvoiceItemDeletedEvent :: EventType
PlanCreatedEvent :: EventType
PlanUpdatedEvent :: EventType
PlanDeletedEvent :: EventType
CouponCreatedEvent :: EventType
CouponUpdatedEvent :: EventType
CouponDeletedEvent :: EventType
RecipientCreatedEvent :: EventType
RecipientUpdatedEvent :: EventType
RecipientDeletedEvent :: EventType
TransferCreatedEvent :: EventType
TransferUpdatedEvent :: EventType
TransferCanceledEvent :: EventType
TransferPaidEvent :: EventType
TransferFailedEvent :: EventType
PingEvent :: EventType
UnknownEvent :: EventType

-- | Event Types JSON Instance

-- | <a>EventId</a> of an <a>Event</a>
newtype EventId
EventId :: Text -> EventId

-- | EventData
data EventData
TransferEvent :: Transfer -> EventData
AccountEvent :: Account -> EventData
AccountApplicationEvent :: ConnectApp -> EventData
ApplicationFeeEvent :: ApplicationFee -> EventData
InvoiceEvent :: Invoice -> EventData
PlanEvent :: Plan -> EventData
RecipientEvent :: Recipient -> EventData
CouponEvent :: Coupon -> EventData
BalanceEvent :: Balance -> EventData
ChargeEvent :: Charge -> EventData
DisputeEvent :: Dispute -> EventData
CustomerEvent :: Customer -> EventData
CardEvent :: Card -> EventData
SubscriptionEvent :: Subscription -> EventData
DiscountEvent :: Discount -> EventData
InvoiceItemEvent :: InvoiceItem -> EventData
UnknownEventData :: EventData
Ping :: EventData

-- | <a>Event</a> Object
data Event
Event :: Maybe EventId -> UTCTime -> Bool -> EventType -> EventData -> Text -> Int -> Maybe Text -> Event
[eventId] :: Event -> Maybe EventId
[eventCreated] :: Event -> UTCTime
[eventLiveMode] :: Event -> Bool
[eventType] :: Event -> EventType
[eventData] :: Event -> EventData
[eventObject] :: Event -> Text
[eventPendingWebHooks] :: Event -> Int
[eventRequest] :: Event -> Maybe Text

-- | JSON Instance for <a>Event</a>

-- | Connect Application
data ConnectApp
ConnectApp :: Maybe Text -> Text -> Text -> ConnectApp
[connectAppId] :: ConnectApp -> Maybe Text
[connectAppObject] :: ConnectApp -> Text
[connectAppName] :: ConnectApp -> Text

-- | Connect Application JSON instance

-- | <a>TokenId</a> of a <a>Token</a>
newtype TokenId
TokenId :: Text -> TokenId

-- | Type of <a>Token</a>
data TokenType
TokenCard :: TokenType
TokenBankAccount :: TokenType

-- | JSON Instance for <a>TokenType</a>

-- | <a>Token</a> Object
data Token a
Token :: TokenId -> Bool -> UTCTime -> Bool -> Text -> TokenType -> a -> Token a
[tokenId] :: Token a -> TokenId
[tokenLiveMode] :: Token a -> Bool
[tokenCreated] :: Token a -> UTCTime
[tokenUsed] :: Token a -> Bool
[tokenObject] :: Token a -> Text
[tokenType] :: Token a -> TokenType
[tokenData] :: Token a -> a

-- | JSON Instance for <a>Token</a>

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool

-- | JSON Instance for <a>StripeList</a>

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | JSON returned from a <tt>Stripe</tt> deletion request
data StripeDeleteResult
StripeDeleteResult :: Bool -> Maybe Text -> StripeDeleteResult
[deleted] :: StripeDeleteResult -> Bool
[deletedId] :: StripeDeleteResult -> Maybe Text

-- | JSON Instance for <a>StripeDeleteResult</a>

-- | Type of MetaData for use on <tt>Stripe</tt> objects
newtype MetaData
MetaData :: [(Text, Text)] -> MetaData

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | Generic ID for use in constructing API Calls
type ID = Text

-- | Generic URL for use in constructing API Calls
type URL = Text

-- | a cardholder's full name
newtype Name
Name :: Text -> Name
[getName] :: Name -> Text

-- | a plan name
newtype PlanName
PlanName :: Text -> PlanName
[getPlanName] :: PlanName -> Text

-- | Generic Description for use in constructing API Calls
newtype Description
Description :: Text -> Description

-- | Generic <a>Quantity</a> type to be used with <a>Customer</a>,
--   <a>Subscription</a> and <a>InvoiceLineItem</a> API requests
newtype Quantity
Quantity :: Int -> Quantity

-- | Prorate
newtype Prorate
Prorate :: Bool -> Prorate

-- | A flag that if set to true will delay the cancellation of the
--   subscription until the end of the current period.
newtype AtPeriodEnd
AtPeriodEnd :: Bool -> AtPeriodEnd

-- | <a>Email</a> associated with a <a>Customer</a>, <a>Recipient</a> or
--   <a>Charge</a>
newtype Email
Email :: Text -> Email

-- | <a>Email</a> to send receipt to
newtype ReceiptEmail
ReceiptEmail :: Text -> ReceiptEmail

-- | Stripe supports 138 currencies
data Currency

-- | United Arab Emirates Dirham
AED :: Currency

-- | Afghan Afghani
AFN :: Currency

-- | Albanian Lek
ALL :: Currency

-- | Armenian Dram
AMD :: Currency

-- | Netherlands Antillean Gulden
ANG :: Currency

-- | Angolan Kwanza
AOA :: Currency

-- | Argentine Peso
ARS :: Currency

-- | Australian Dollar
AUD :: Currency

-- | Aruban Florin
AWG :: Currency

-- | Azerbaijani Manat
AZN :: Currency

-- | Bosnia &amp; Herzegovina Convertible Mark
BAM :: Currency

-- | Barbadian Dollar
BBD :: Currency

-- | Bangladeshi Taka
BDT :: Currency

-- | Bulgarian Lev
BGN :: Currency

-- | Burundian Franc
BIF :: Currency

-- | Bermudian Dollar
BMD :: Currency

-- | Brunei Dollar
BND :: Currency

-- | Bolivian Boliviano
BOB :: Currency

-- | Brazilian Real
BRL :: Currency

-- | Bahamian Dollar
BSD :: Currency

-- | Botswana Pula
BWP :: Currency

-- | Belize Dollar
BZD :: Currency

-- | Canadian Dollar
CAD :: Currency

-- | Congolese Franc
CDF :: Currency

-- | Swiss Franc
CHF :: Currency

-- | Chilean Peso
CLP :: Currency

-- | Chinese Renminbi Yuan
CNY :: Currency

-- | Colombian Peso
COP :: Currency

-- | Costa Rican Colón
CRC :: Currency

-- | Cape Verdean Escudo
CVE :: Currency

-- | Czech Koruna
CZK :: Currency

-- | Djiboutian Franc
DJF :: Currency

-- | Danish Krone
DKK :: Currency

-- | Dominican Peso
DOP :: Currency

-- | Algerian Dinar
DZD :: Currency

-- | Estonian Kroon
EEK :: Currency

-- | Egyptian Pound
EGP :: Currency

-- | Ethiopian Birr
ETB :: Currency

-- | Euro
EUR :: Currency

-- | Fijian Dollar
FJD :: Currency

-- | Falkland Islands Pound
FKP :: Currency

-- | British Pound
GBP :: Currency

-- | Georgian Lari
GEL :: Currency

-- | Gibraltar Pound
GIP :: Currency

-- | Gambian Dalasi
GMD :: Currency

-- | Guinean Franc
GNF :: Currency

-- | Guatemalan Quetzal
GTQ :: Currency

-- | Guyanese Dollar
GYD :: Currency

-- | Hong Kong Dollar
HKD :: Currency

-- | Honduran Lempira
HNL :: Currency

-- | Croatian Kuna
HRK :: Currency

-- | Haitian Gourde
HTG :: Currency

-- | Hungarian Forint
HUF :: Currency

-- | Indonesian Rupiah
IDR :: Currency

-- | Israeli New Sheqel
ILS :: Currency

-- | Indian Rupee
INR :: Currency

-- | Icelandic Króna
ISK :: Currency

-- | Jamaican Dollar
JMD :: Currency

-- | Japanese Yen
JPY :: Currency

-- | Kenyan Shilling
KES :: Currency

-- | Kyrgyzstani Som
KGS :: Currency

-- | Cambodian Riel
KHR :: Currency

-- | Comorian Franc
KMF :: Currency

-- | South Korean Won
KRW :: Currency

-- | Cayman Islands Dollar
KYD :: Currency

-- | Kazakhstani Tenge
KZT :: Currency

-- | Lao Kip
LAK :: Currency

-- | Lebanese Pound
LBP :: Currency

-- | Sri Lankan Rupee
LKR :: Currency

-- | Liberian Dollar
LRD :: Currency

-- | Lesotho Loti
LSL :: Currency

-- | Lithuanian Litas
LTL :: Currency

-- | Latvian Lats
LVL :: Currency

-- | Moroccan Dirham
MAD :: Currency

-- | Moldovan Leu
MDL :: Currency

-- | Malagasy Ariary
MGA :: Currency

-- | Macedonian Denar
MKD :: Currency

-- | Mongolian Tögrög
MNT :: Currency

-- | Macanese Pataca
MOP :: Currency

-- | Mauritanian Ouguiya
MRO :: Currency

-- | Mauritian Rupee
MUR :: Currency

-- | Maldivian Rufiyaa
MVR :: Currency

-- | Malawian Kwacha
MWK :: Currency

-- | Mexican Peso
MXN :: Currency

-- | Malaysian Ringgit
MYR :: Currency

-- | Mozambican Metical
MZN :: Currency

-- | Namibian Dollar
NAD :: Currency

-- | Nigerian Naira
NGN :: Currency

-- | Nicaraguan Córdoba
NIO :: Currency

-- | Norwegian Krone
NOK :: Currency

-- | Nepalese Rupee
NPR :: Currency

-- | New Zealand Dollar
NZD :: Currency

-- | Panamanian Balboa
PAB :: Currency

-- | Peruvian Nuevo Sol
PEN :: Currency

-- | Papua New Guinean Kina
PGK :: Currency

-- | Philippine Peso
PHP :: Currency

-- | Pakistani Rupee
PKR :: Currency

-- | Polish Złoty
PLN :: Currency

-- | Paraguayan Guaraní
PYG :: Currency

-- | Qatari Riyal
QAR :: Currency

-- | Romanian Leu
RON :: Currency

-- | Serbian Dinar
RSD :: Currency

-- | Russian Ruble
RUB :: Currency

-- | Rwandan Franc
RWF :: Currency

-- | Saudi Riyal
SAR :: Currency

-- | Solomon Islands Dollar
SBD :: Currency

-- | Seychellois Rupee
SCR :: Currency

-- | Swedish Krona
SEK :: Currency

-- | Singapore Dollar
SGD :: Currency

-- | Saint Helenian Pound
SHP :: Currency

-- | Sierra Leonean Leone
SLL :: Currency

-- | Somali Shilling
SOS :: Currency

-- | Surinamese Dollar
SRD :: Currency

-- | São Tomé and Príncipe Dobra
STD :: Currency

-- | Salvadoran Colón
SVC :: Currency

-- | Swazi Lilangeni
SZL :: Currency

-- | Thai Baht
THB :: Currency

-- | Tajikistani Somoni
TJS :: Currency

-- | Tongan Paʻanga
TOP :: Currency

-- | Turkish Lira
TRY :: Currency

-- | Trinidad and Tobago Dollar
TTD :: Currency

-- | New Taiwan Dollar
TWD :: Currency

-- | Tanzanian Shilling
TZS :: Currency

-- | Ukrainian Hryvnia
UAH :: Currency

-- | Ugandan Shilling
UGX :: Currency

-- | United States Dollar
USD :: Currency

-- | Uruguayan Peso
UYU :: Currency

-- | Uzbekistani Som
UZS :: Currency

-- | Vietnamese Đồng
VND :: Currency

-- | Vanuatu Vatu
VUV :: Currency

-- | Samoan Tala
WST :: Currency

-- | Central African Cfa Franc
XAF :: Currency

-- | East Caribbean Dollar
XCD :: Currency

-- | West African Cfa Franc
XOF :: Currency

-- | Cfp Franc
XPF :: Currency

-- | Yemeni Rial
YER :: Currency

-- | South African Rand
ZAR :: Currency

-- | Zambian Kwacha
ZMW :: Currency

-- | Unknown Currency
UnknownCurrency :: Currency

-- | <a>Currency</a> JSON instances

-- | BTC ReceiverObject
data BitcoinReceiver
BitcoinReceiver :: BitcoinReceiverId -> Text -> UTCTime -> Bool -> Bool -> Integer -> Integer -> Integer -> Integer -> Text -> Currency -> Bool -> Text -> Bool -> Maybe Text -> Text -> MetaData -> Maybe Text -> Maybe Transactions -> Maybe PaymentId -> Maybe CustomerId -> BitcoinReceiver
[btcId] :: BitcoinReceiver -> BitcoinReceiverId
[btcObject] :: BitcoinReceiver -> Text
[btcCreated] :: BitcoinReceiver -> UTCTime
[btcLiveMode] :: BitcoinReceiver -> Bool
[btcActive] :: BitcoinReceiver -> Bool
[btcAmount] :: BitcoinReceiver -> Integer
[btcAmountReceived] :: BitcoinReceiver -> Integer
[btcBitcoinAmount] :: BitcoinReceiver -> Integer
[btcBitcoinAmountReceived] :: BitcoinReceiver -> Integer
[btcBitcoinUri] :: BitcoinReceiver -> Text
[btcCurrency] :: BitcoinReceiver -> Currency
[btcFilled] :: BitcoinReceiver -> Bool
[btcInboundAddress] :: BitcoinReceiver -> Text
[btcUncapturedFunds] :: BitcoinReceiver -> Bool
[btcDescription] :: BitcoinReceiver -> Maybe Text
[btcEmail] :: BitcoinReceiver -> Text
[btcMetadata] :: BitcoinReceiver -> MetaData
[btcRefundAddress] :: BitcoinReceiver -> Maybe Text
[btcTransactions] :: BitcoinReceiver -> Maybe Transactions
[btcPayment] :: BitcoinReceiver -> Maybe PaymentId
[btcCustomer] :: BitcoinReceiver -> Maybe CustomerId

-- | FromJSON for BitcoinReceiverId

-- | Bitcoin Transactions
data Transactions
Transactions :: Text -> Integer -> Bool -> Text -> [BitcoinTransaction] -> Transactions
[transactionsObject] :: Transactions -> Text
[transactionsTotalCount] :: Transactions -> Integer
[transactionsHasMore] :: Transactions -> Bool
[transactionsURL] :: Transactions -> Text
[transactions] :: Transactions -> [BitcoinTransaction]

-- | Bitcoin Transactions data

-- | Bitcoin Transaction
data BitcoinTransaction
BitcoinTransaction :: BitcoinTransactionId -> Text -> UTCTime -> Integer -> Integer -> Currency -> BitcoinReceiverId -> BitcoinTransaction
[btcTransactionId] :: BitcoinTransaction -> BitcoinTransactionId
[btcTransactionObject] :: BitcoinTransaction -> Text
[btcTransactionCreated] :: BitcoinTransaction -> UTCTime
[btcTransactionAmount] :: BitcoinTransaction -> Integer
[btcTransactionBitcoinAmount] :: BitcoinTransaction -> Integer
[btcTransactionCurrency] :: BitcoinTransaction -> Currency
[btcTransactionReceiver] :: BitcoinTransaction -> BitcoinReceiverId

-- | FromJSON BitcoinTransaction

-- | BitcoinTransactionId
newtype BitcoinTransactionId
BitcoinTransactionId :: Text -> BitcoinTransactionId

-- | FromJSON BitcoinTransactionId

-- | BTC ReceiverId
newtype BitcoinReceiverId
BitcoinReceiverId :: Text -> BitcoinReceiverId

-- | FromJSON for BitcoinReceiverId

-- | BTC PaymentId
newtype PaymentId
PaymentId :: Text -> PaymentId

-- | FromJSON for PaymentId

-- | Show an amount accounting for zero currencies
--   
--   
--   https://support.stripe.com/questions/which-zero-decimal-currencies-does-stripe-support
showAmount :: Currency -> Int -> String
currencyDivisor :: Currency -> (Int -> Float)
instance GHC.Classes.Eq Web.Stripe.Types.BitcoinReceiver
instance GHC.Show.Show Web.Stripe.Types.BitcoinReceiver
instance GHC.Classes.Eq Web.Stripe.Types.PaymentId
instance GHC.Show.Show Web.Stripe.Types.PaymentId
instance GHC.Classes.Eq Web.Stripe.Types.Transactions
instance GHC.Show.Show Web.Stripe.Types.Transactions
instance GHC.Classes.Eq Web.Stripe.Types.BitcoinTransaction
instance GHC.Show.Show Web.Stripe.Types.BitcoinTransaction
instance GHC.Classes.Eq Web.Stripe.Types.BitcoinReceiverId
instance GHC.Show.Show Web.Stripe.Types.BitcoinReceiverId
instance GHC.Classes.Eq Web.Stripe.Types.BitcoinTransactionId
instance GHC.Show.Show Web.Stripe.Types.BitcoinTransactionId
instance Data.Data.Data Web.Stripe.Types.Event
instance GHC.Classes.Ord Web.Stripe.Types.Event
instance GHC.Classes.Eq Web.Stripe.Types.Event
instance GHC.Show.Show Web.Stripe.Types.Event
instance GHC.Read.Read Web.Stripe.Types.Event
instance Data.Data.Data Web.Stripe.Types.EventData
instance GHC.Classes.Ord Web.Stripe.Types.EventData
instance GHC.Classes.Eq Web.Stripe.Types.EventData
instance GHC.Show.Show Web.Stripe.Types.EventData
instance GHC.Read.Read Web.Stripe.Types.EventData
instance Data.Data.Data Web.Stripe.Types.Charge
instance GHC.Classes.Ord Web.Stripe.Types.Charge
instance GHC.Classes.Eq Web.Stripe.Types.Charge
instance GHC.Show.Show Web.Stripe.Types.Charge
instance GHC.Read.Read Web.Stripe.Types.Charge
instance Data.Data.Data Web.Stripe.Types.ApplicationFee
instance GHC.Classes.Ord Web.Stripe.Types.ApplicationFee
instance GHC.Classes.Eq Web.Stripe.Types.ApplicationFee
instance GHC.Show.Show Web.Stripe.Types.ApplicationFee
instance GHC.Read.Read Web.Stripe.Types.ApplicationFee
instance Data.Data.Data Web.Stripe.Types.Refund
instance GHC.Classes.Ord Web.Stripe.Types.Refund
instance GHC.Classes.Eq Web.Stripe.Types.Refund
instance GHC.Show.Show Web.Stripe.Types.Refund
instance GHC.Read.Read Web.Stripe.Types.Refund
instance Data.Data.Data Web.Stripe.Types.Customer
instance GHC.Classes.Ord Web.Stripe.Types.Customer
instance GHC.Classes.Eq Web.Stripe.Types.Customer
instance GHC.Show.Show Web.Stripe.Types.Customer
instance GHC.Read.Read Web.Stripe.Types.Customer
instance Data.Data.Data Web.Stripe.Types.Subscription
instance GHC.Classes.Ord Web.Stripe.Types.Subscription
instance GHC.Classes.Eq Web.Stripe.Types.Subscription
instance GHC.Show.Show Web.Stripe.Types.Subscription
instance GHC.Read.Read Web.Stripe.Types.Subscription
instance Data.Data.Data Web.Stripe.Types.Invoice
instance GHC.Classes.Ord Web.Stripe.Types.Invoice
instance GHC.Classes.Eq Web.Stripe.Types.Invoice
instance GHC.Show.Show Web.Stripe.Types.Invoice
instance GHC.Read.Read Web.Stripe.Types.Invoice
instance Data.Data.Data Web.Stripe.Types.InvoiceLineItem
instance GHC.Classes.Ord Web.Stripe.Types.InvoiceLineItem
instance GHC.Classes.Eq Web.Stripe.Types.InvoiceLineItem
instance GHC.Show.Show Web.Stripe.Types.InvoiceLineItem
instance GHC.Read.Read Web.Stripe.Types.InvoiceLineItem
instance Data.Data.Data Web.Stripe.Types.Plan
instance GHC.Classes.Ord Web.Stripe.Types.Plan
instance GHC.Classes.Eq Web.Stripe.Types.Plan
instance GHC.Show.Show Web.Stripe.Types.Plan
instance GHC.Read.Read Web.Stripe.Types.Plan
instance Data.Data.Data Web.Stripe.Types.Discount
instance GHC.Classes.Ord Web.Stripe.Types.Discount
instance GHC.Classes.Eq Web.Stripe.Types.Discount
instance GHC.Show.Show Web.Stripe.Types.Discount
instance GHC.Read.Read Web.Stripe.Types.Discount
instance Data.Data.Data Web.Stripe.Types.Coupon
instance GHC.Classes.Ord Web.Stripe.Types.Coupon
instance GHC.Classes.Eq Web.Stripe.Types.Coupon
instance GHC.Show.Show Web.Stripe.Types.Coupon
instance GHC.Read.Read Web.Stripe.Types.Coupon
instance Data.Data.Data Web.Stripe.Types.InvoiceItem
instance GHC.Classes.Ord Web.Stripe.Types.InvoiceItem
instance GHC.Classes.Eq Web.Stripe.Types.InvoiceItem
instance GHC.Show.Show Web.Stripe.Types.InvoiceItem
instance GHC.Read.Read Web.Stripe.Types.InvoiceItem
instance Data.Data.Data Web.Stripe.Types.Dispute
instance GHC.Classes.Ord Web.Stripe.Types.Dispute
instance GHC.Classes.Eq Web.Stripe.Types.Dispute
instance GHC.Show.Show Web.Stripe.Types.Dispute
instance GHC.Read.Read Web.Stripe.Types.Dispute
instance Data.Data.Data Web.Stripe.Types.Transfer
instance GHC.Classes.Ord Web.Stripe.Types.Transfer
instance GHC.Classes.Eq Web.Stripe.Types.Transfer
instance GHC.Show.Show Web.Stripe.Types.Transfer
instance GHC.Read.Read Web.Stripe.Types.Transfer
instance Data.Data.Data Web.Stripe.Types.Recipient
instance GHC.Classes.Ord Web.Stripe.Types.Recipient
instance GHC.Classes.Eq Web.Stripe.Types.Recipient
instance GHC.Show.Show Web.Stripe.Types.Recipient
instance GHC.Read.Read Web.Stripe.Types.Recipient
instance Data.Data.Data Web.Stripe.Types.BankAccount
instance GHC.Classes.Ord Web.Stripe.Types.BankAccount
instance GHC.Classes.Eq Web.Stripe.Types.BankAccount
instance GHC.Show.Show Web.Stripe.Types.BankAccount
instance GHC.Read.Read Web.Stripe.Types.BankAccount
instance Data.Data.Data Web.Stripe.Types.ApplicationFeeRefund
instance GHC.Classes.Ord Web.Stripe.Types.ApplicationFeeRefund
instance GHC.Classes.Eq Web.Stripe.Types.ApplicationFeeRefund
instance GHC.Show.Show Web.Stripe.Types.ApplicationFeeRefund
instance GHC.Read.Read Web.Stripe.Types.ApplicationFeeRefund
instance Data.Data.Data Web.Stripe.Types.Account
instance GHC.Classes.Ord Web.Stripe.Types.Account
instance GHC.Classes.Eq Web.Stripe.Types.Account
instance GHC.Show.Show Web.Stripe.Types.Account
instance GHC.Read.Read Web.Stripe.Types.Account
instance Data.Data.Data Web.Stripe.Types.Balance
instance GHC.Classes.Ord Web.Stripe.Types.Balance
instance GHC.Classes.Eq Web.Stripe.Types.Balance
instance GHC.Show.Show Web.Stripe.Types.Balance
instance GHC.Read.Read Web.Stripe.Types.Balance
instance Data.Data.Data Web.Stripe.Types.BalanceAmount
instance GHC.Classes.Ord Web.Stripe.Types.BalanceAmount
instance GHC.Classes.Eq Web.Stripe.Types.BalanceAmount
instance GHC.Show.Show Web.Stripe.Types.BalanceAmount
instance GHC.Read.Read Web.Stripe.Types.BalanceAmount
instance Data.Data.Data Web.Stripe.Types.BalanceTransaction
instance GHC.Classes.Ord Web.Stripe.Types.BalanceTransaction
instance GHC.Classes.Eq Web.Stripe.Types.BalanceTransaction
instance GHC.Show.Show Web.Stripe.Types.BalanceTransaction
instance GHC.Read.Read Web.Stripe.Types.BalanceTransaction
instance Data.Data.Data Web.Stripe.Types.FeeDetails
instance GHC.Classes.Ord Web.Stripe.Types.FeeDetails
instance GHC.Classes.Eq Web.Stripe.Types.FeeDetails
instance GHC.Show.Show Web.Stripe.Types.FeeDetails
instance GHC.Read.Read Web.Stripe.Types.FeeDetails
instance Data.Data.Data Web.Stripe.Types.Currency
instance GHC.Classes.Ord Web.Stripe.Types.Currency
instance GHC.Classes.Eq Web.Stripe.Types.Currency
instance GHC.Show.Show Web.Stripe.Types.Currency
instance GHC.Read.Read Web.Stripe.Types.Currency
instance Data.Data.Data Web.Stripe.Types.ReceiptEmail
instance GHC.Classes.Ord Web.Stripe.Types.ReceiptEmail
instance GHC.Classes.Eq Web.Stripe.Types.ReceiptEmail
instance GHC.Show.Show Web.Stripe.Types.ReceiptEmail
instance GHC.Read.Read Web.Stripe.Types.ReceiptEmail
instance Data.Data.Data Web.Stripe.Types.Email
instance GHC.Classes.Ord Web.Stripe.Types.Email
instance GHC.Classes.Eq Web.Stripe.Types.Email
instance GHC.Show.Show Web.Stripe.Types.Email
instance GHC.Read.Read Web.Stripe.Types.Email
instance Data.Data.Data Web.Stripe.Types.AtPeriodEnd
instance GHC.Classes.Ord Web.Stripe.Types.AtPeriodEnd
instance GHC.Classes.Eq Web.Stripe.Types.AtPeriodEnd
instance GHC.Show.Show Web.Stripe.Types.AtPeriodEnd
instance GHC.Read.Read Web.Stripe.Types.AtPeriodEnd
instance Data.Data.Data Web.Stripe.Types.Prorate
instance GHC.Classes.Ord Web.Stripe.Types.Prorate
instance GHC.Classes.Eq Web.Stripe.Types.Prorate
instance GHC.Show.Show Web.Stripe.Types.Prorate
instance GHC.Read.Read Web.Stripe.Types.Prorate
instance Data.Data.Data Web.Stripe.Types.Quantity
instance GHC.Classes.Ord Web.Stripe.Types.Quantity
instance GHC.Classes.Eq Web.Stripe.Types.Quantity
instance GHC.Show.Show Web.Stripe.Types.Quantity
instance GHC.Read.Read Web.Stripe.Types.Quantity
instance Data.Data.Data Web.Stripe.Types.Description
instance GHC.Classes.Ord Web.Stripe.Types.Description
instance GHC.Classes.Eq Web.Stripe.Types.Description
instance GHC.Show.Show Web.Stripe.Types.Description
instance GHC.Read.Read Web.Stripe.Types.Description
instance Data.Data.Data Web.Stripe.Types.PlanName
instance GHC.Classes.Ord Web.Stripe.Types.PlanName
instance GHC.Classes.Eq Web.Stripe.Types.PlanName
instance GHC.Show.Show Web.Stripe.Types.PlanName
instance GHC.Read.Read Web.Stripe.Types.PlanName
instance Data.Data.Data Web.Stripe.Types.Card
instance GHC.Classes.Ord Web.Stripe.Types.Card
instance GHC.Classes.Eq Web.Stripe.Types.Card
instance GHC.Show.Show Web.Stripe.Types.Card
instance GHC.Read.Read Web.Stripe.Types.Card
instance Data.Data.Data Web.Stripe.Types.RecipientCard
instance GHC.Classes.Ord Web.Stripe.Types.RecipientCard
instance GHC.Classes.Eq Web.Stripe.Types.RecipientCard
instance GHC.Show.Show Web.Stripe.Types.RecipientCard
instance GHC.Read.Read Web.Stripe.Types.RecipientCard
instance Data.Data.Data Web.Stripe.Types.NewCard
instance GHC.Classes.Ord Web.Stripe.Types.NewCard
instance GHC.Classes.Eq Web.Stripe.Types.NewCard
instance GHC.Show.Show Web.Stripe.Types.NewCard
instance GHC.Read.Read Web.Stripe.Types.NewCard
instance Data.Data.Data Web.Stripe.Types.Name
instance GHC.Classes.Ord Web.Stripe.Types.Name
instance GHC.Classes.Eq Web.Stripe.Types.Name
instance GHC.Show.Show Web.Stripe.Types.Name
instance GHC.Read.Read Web.Stripe.Types.Name
instance Data.Data.Data Web.Stripe.Types.ExpandParams
instance GHC.Classes.Ord Web.Stripe.Types.ExpandParams
instance GHC.Classes.Eq Web.Stripe.Types.ExpandParams
instance GHC.Show.Show Web.Stripe.Types.ExpandParams
instance GHC.Read.Read Web.Stripe.Types.ExpandParams
instance Data.Data.Data Web.Stripe.Types.MetaData
instance GHC.Classes.Ord Web.Stripe.Types.MetaData
instance GHC.Classes.Eq Web.Stripe.Types.MetaData
instance GHC.Show.Show Web.Stripe.Types.MetaData
instance GHC.Read.Read Web.Stripe.Types.MetaData
instance Data.Data.Data Web.Stripe.Types.StripeDeleteResult
instance GHC.Classes.Ord Web.Stripe.Types.StripeDeleteResult
instance GHC.Classes.Eq Web.Stripe.Types.StripeDeleteResult
instance GHC.Show.Show Web.Stripe.Types.StripeDeleteResult
instance GHC.Read.Read Web.Stripe.Types.StripeDeleteResult
instance Data.Data.Data a => Data.Data.Data (Web.Stripe.Types.EndingBefore a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Web.Stripe.Types.EndingBefore a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Web.Stripe.Types.EndingBefore a)
instance GHC.Show.Show a => GHC.Show.Show (Web.Stripe.Types.EndingBefore a)
instance GHC.Read.Read a => GHC.Read.Read (Web.Stripe.Types.EndingBefore a)
instance Data.Data.Data a => Data.Data.Data (Web.Stripe.Types.StartingAfter a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Web.Stripe.Types.StartingAfter a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Web.Stripe.Types.StartingAfter a)
instance GHC.Show.Show a => GHC.Show.Show (Web.Stripe.Types.StartingAfter a)
instance GHC.Read.Read a => GHC.Read.Read (Web.Stripe.Types.StartingAfter a)
instance Data.Data.Data Web.Stripe.Types.Limit
instance GHC.Classes.Ord Web.Stripe.Types.Limit
instance GHC.Classes.Eq Web.Stripe.Types.Limit
instance GHC.Show.Show Web.Stripe.Types.Limit
instance GHC.Read.Read Web.Stripe.Types.Limit
instance Data.Data.Data a => Data.Data.Data (Web.Stripe.Types.StripeList a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Web.Stripe.Types.StripeList a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Web.Stripe.Types.StripeList a)
instance GHC.Show.Show a => GHC.Show.Show (Web.Stripe.Types.StripeList a)
instance GHC.Read.Read a => GHC.Read.Read (Web.Stripe.Types.StripeList a)
instance Data.Data.Data a => Data.Data.Data (Web.Stripe.Types.Token a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Web.Stripe.Types.Token a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Web.Stripe.Types.Token a)
instance GHC.Show.Show a => GHC.Show.Show (Web.Stripe.Types.Token a)
instance GHC.Read.Read a => GHC.Read.Read (Web.Stripe.Types.Token a)
instance Data.Data.Data Web.Stripe.Types.TokenType
instance GHC.Classes.Ord Web.Stripe.Types.TokenType
instance GHC.Classes.Eq Web.Stripe.Types.TokenType
instance GHC.Show.Show Web.Stripe.Types.TokenType
instance GHC.Read.Read Web.Stripe.Types.TokenType
instance Data.Data.Data Web.Stripe.Types.TokenId
instance GHC.Classes.Ord Web.Stripe.Types.TokenId
instance GHC.Classes.Eq Web.Stripe.Types.TokenId
instance GHC.Show.Show Web.Stripe.Types.TokenId
instance GHC.Read.Read Web.Stripe.Types.TokenId
instance Data.Data.Data Web.Stripe.Types.ConnectApp
instance GHC.Classes.Ord Web.Stripe.Types.ConnectApp
instance GHC.Classes.Eq Web.Stripe.Types.ConnectApp
instance GHC.Show.Show Web.Stripe.Types.ConnectApp
instance GHC.Read.Read Web.Stripe.Types.ConnectApp
instance Data.Data.Data Web.Stripe.Types.EventId
instance GHC.Classes.Ord Web.Stripe.Types.EventId
instance GHC.Classes.Eq Web.Stripe.Types.EventId
instance GHC.Show.Show Web.Stripe.Types.EventId
instance GHC.Read.Read Web.Stripe.Types.EventId
instance Data.Data.Data Web.Stripe.Types.EventType
instance GHC.Classes.Ord Web.Stripe.Types.EventType
instance GHC.Classes.Eq Web.Stripe.Types.EventType
instance GHC.Show.Show Web.Stripe.Types.EventType
instance GHC.Read.Read Web.Stripe.Types.EventType
instance Data.Data.Data Web.Stripe.Types.TransactionType
instance GHC.Classes.Ord Web.Stripe.Types.TransactionType
instance GHC.Classes.Eq Web.Stripe.Types.TransactionType
instance GHC.Show.Show Web.Stripe.Types.TransactionType
instance GHC.Read.Read Web.Stripe.Types.TransactionType
instance Data.Data.Data a => Data.Data.Data (Web.Stripe.Types.Source a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Web.Stripe.Types.Source a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Web.Stripe.Types.Source a)
instance GHC.Show.Show a => GHC.Show.Show (Web.Stripe.Types.Source a)
instance GHC.Read.Read a => GHC.Read.Read (Web.Stripe.Types.Source a)
instance Data.Data.Data Web.Stripe.Types.TransactionId
instance GHC.Classes.Ord Web.Stripe.Types.TransactionId
instance GHC.Classes.Eq Web.Stripe.Types.TransactionId
instance GHC.Show.Show Web.Stripe.Types.TransactionId
instance GHC.Read.Read Web.Stripe.Types.TransactionId
instance Data.Data.Data Web.Stripe.Types.AccountId
instance GHC.Classes.Ord Web.Stripe.Types.AccountId
instance GHC.Classes.Eq Web.Stripe.Types.AccountId
instance GHC.Show.Show Web.Stripe.Types.AccountId
instance GHC.Read.Read Web.Stripe.Types.AccountId
instance Data.Data.Data Web.Stripe.Types.FeeId
instance GHC.Classes.Ord Web.Stripe.Types.FeeId
instance GHC.Classes.Eq Web.Stripe.Types.FeeId
instance GHC.Show.Show Web.Stripe.Types.FeeId
instance GHC.Read.Read Web.Stripe.Types.FeeId
instance Data.Data.Data Web.Stripe.Types.ApplicationId
instance GHC.Classes.Ord Web.Stripe.Types.ApplicationId
instance GHC.Classes.Eq Web.Stripe.Types.ApplicationId
instance GHC.Show.Show Web.Stripe.Types.ApplicationId
instance GHC.Read.Read Web.Stripe.Types.ApplicationId
instance Data.Data.Data Web.Stripe.Types.ApplicationFeeAmount
instance GHC.Classes.Ord Web.Stripe.Types.ApplicationFeeAmount
instance GHC.Classes.Eq Web.Stripe.Types.ApplicationFeeAmount
instance GHC.Show.Show Web.Stripe.Types.ApplicationFeeAmount
instance GHC.Read.Read Web.Stripe.Types.ApplicationFeeAmount
instance Data.Data.Data Web.Stripe.Types.ApplicationFeePercent
instance GHC.Classes.Ord Web.Stripe.Types.ApplicationFeePercent
instance GHC.Classes.Eq Web.Stripe.Types.ApplicationFeePercent
instance GHC.Show.Show Web.Stripe.Types.ApplicationFeePercent
instance GHC.Read.Read Web.Stripe.Types.ApplicationFeePercent
instance Data.Data.Data Web.Stripe.Types.ApplicationFeeId
instance GHC.Classes.Ord Web.Stripe.Types.ApplicationFeeId
instance GHC.Classes.Eq Web.Stripe.Types.ApplicationFeeId
instance GHC.Show.Show Web.Stripe.Types.ApplicationFeeId
instance GHC.Read.Read Web.Stripe.Types.ApplicationFeeId
instance Data.Data.Data Web.Stripe.Types.RecipientType
instance GHC.Classes.Ord Web.Stripe.Types.RecipientType
instance GHC.Classes.Eq Web.Stripe.Types.RecipientType
instance Data.Data.Data Web.Stripe.Types.TaxID
instance GHC.Classes.Ord Web.Stripe.Types.TaxID
instance GHC.Classes.Eq Web.Stripe.Types.TaxID
instance GHC.Show.Show Web.Stripe.Types.TaxID
instance GHC.Read.Read Web.Stripe.Types.TaxID
instance Data.Data.Data Web.Stripe.Types.RecipientId
instance GHC.Classes.Ord Web.Stripe.Types.RecipientId
instance GHC.Classes.Eq Web.Stripe.Types.RecipientId
instance GHC.Show.Show Web.Stripe.Types.RecipientId
instance GHC.Read.Read Web.Stripe.Types.RecipientId
instance Data.Data.Data Web.Stripe.Types.LastName
instance GHC.Classes.Ord Web.Stripe.Types.LastName
instance GHC.Classes.Eq Web.Stripe.Types.LastName
instance GHC.Show.Show Web.Stripe.Types.LastName
instance GHC.Read.Read Web.Stripe.Types.LastName
instance Data.Data.Data Web.Stripe.Types.FirstName
instance GHC.Classes.Ord Web.Stripe.Types.FirstName
instance GHC.Classes.Eq Web.Stripe.Types.FirstName
instance GHC.Show.Show Web.Stripe.Types.FirstName
instance GHC.Read.Read Web.Stripe.Types.FirstName
instance Data.Data.Data Web.Stripe.Types.NewBankAccount
instance GHC.Classes.Ord Web.Stripe.Types.NewBankAccount
instance GHC.Classes.Eq Web.Stripe.Types.NewBankAccount
instance GHC.Show.Show Web.Stripe.Types.NewBankAccount
instance GHC.Read.Read Web.Stripe.Types.NewBankAccount
instance Data.Data.Data Web.Stripe.Types.AccountNumber
instance GHC.Classes.Ord Web.Stripe.Types.AccountNumber
instance GHC.Classes.Eq Web.Stripe.Types.AccountNumber
instance GHC.Show.Show Web.Stripe.Types.AccountNumber
instance GHC.Read.Read Web.Stripe.Types.AccountNumber
instance Data.Data.Data Web.Stripe.Types.Country
instance GHC.Classes.Ord Web.Stripe.Types.Country
instance GHC.Classes.Eq Web.Stripe.Types.Country
instance GHC.Show.Show Web.Stripe.Types.Country
instance GHC.Read.Read Web.Stripe.Types.Country
instance Data.Data.Data Web.Stripe.Types.RoutingNumber
instance GHC.Classes.Ord Web.Stripe.Types.RoutingNumber
instance GHC.Classes.Eq Web.Stripe.Types.RoutingNumber
instance GHC.Show.Show Web.Stripe.Types.RoutingNumber
instance GHC.Read.Read Web.Stripe.Types.RoutingNumber
instance Data.Data.Data Web.Stripe.Types.BankAccountStatus
instance GHC.Classes.Ord Web.Stripe.Types.BankAccountStatus
instance GHC.Classes.Eq Web.Stripe.Types.BankAccountStatus
instance GHC.Show.Show Web.Stripe.Types.BankAccountStatus
instance GHC.Read.Read Web.Stripe.Types.BankAccountStatus
instance Data.Data.Data Web.Stripe.Types.BankAccountId
instance GHC.Classes.Ord Web.Stripe.Types.BankAccountId
instance GHC.Classes.Eq Web.Stripe.Types.BankAccountId
instance GHC.Show.Show Web.Stripe.Types.BankAccountId
instance GHC.Read.Read Web.Stripe.Types.BankAccountId
instance Data.Data.Data Web.Stripe.Types.TransferType
instance GHC.Classes.Ord Web.Stripe.Types.TransferType
instance GHC.Classes.Eq Web.Stripe.Types.TransferType
instance GHC.Show.Show Web.Stripe.Types.TransferType
instance GHC.Read.Read Web.Stripe.Types.TransferType
instance Data.Data.Data Web.Stripe.Types.TransferStatus
instance GHC.Classes.Ord Web.Stripe.Types.TransferStatus
instance GHC.Classes.Eq Web.Stripe.Types.TransferStatus
instance GHC.Show.Show Web.Stripe.Types.TransferStatus
instance GHC.Read.Read Web.Stripe.Types.TransferStatus
instance Data.Data.Data Web.Stripe.Types.TransferId
instance GHC.Classes.Ord Web.Stripe.Types.TransferId
instance GHC.Classes.Eq Web.Stripe.Types.TransferId
instance GHC.Show.Show Web.Stripe.Types.TransferId
instance GHC.Read.Read Web.Stripe.Types.TransferId
instance Data.Data.Data Web.Stripe.Types.Evidence
instance GHC.Classes.Ord Web.Stripe.Types.Evidence
instance GHC.Classes.Eq Web.Stripe.Types.Evidence
instance GHC.Show.Show Web.Stripe.Types.Evidence
instance GHC.Read.Read Web.Stripe.Types.Evidence
instance Data.Data.Data Web.Stripe.Types.DisputeReason
instance GHC.Classes.Ord Web.Stripe.Types.DisputeReason
instance GHC.Classes.Eq Web.Stripe.Types.DisputeReason
instance GHC.Show.Show Web.Stripe.Types.DisputeReason
instance GHC.Read.Read Web.Stripe.Types.DisputeReason
instance Data.Data.Data Web.Stripe.Types.DisputeStatus
instance GHC.Classes.Ord Web.Stripe.Types.DisputeStatus
instance GHC.Classes.Eq Web.Stripe.Types.DisputeStatus
instance GHC.Show.Show Web.Stripe.Types.DisputeStatus
instance GHC.Read.Read Web.Stripe.Types.DisputeStatus
instance Data.Data.Data Web.Stripe.Types.Forgiven
instance GHC.Classes.Ord Web.Stripe.Types.Forgiven
instance GHC.Classes.Eq Web.Stripe.Types.Forgiven
instance GHC.Show.Show Web.Stripe.Types.Forgiven
instance GHC.Read.Read Web.Stripe.Types.Forgiven
instance Data.Data.Data Web.Stripe.Types.Closed
instance GHC.Classes.Ord Web.Stripe.Types.Closed
instance GHC.Classes.Eq Web.Stripe.Types.Closed
instance GHC.Show.Show Web.Stripe.Types.Closed
instance GHC.Read.Read Web.Stripe.Types.Closed
instance Data.Data.Data Web.Stripe.Types.Period
instance GHC.Classes.Ord Web.Stripe.Types.Period
instance GHC.Classes.Eq Web.Stripe.Types.Period
instance GHC.Show.Show Web.Stripe.Types.Period
instance GHC.Read.Read Web.Stripe.Types.Period
instance Data.Data.Data Web.Stripe.Types.InvoiceLineItemType
instance GHC.Classes.Ord Web.Stripe.Types.InvoiceLineItemType
instance GHC.Classes.Eq Web.Stripe.Types.InvoiceLineItemType
instance GHC.Show.Show Web.Stripe.Types.InvoiceLineItemType
instance GHC.Read.Read Web.Stripe.Types.InvoiceLineItemType
instance Data.Data.Data Web.Stripe.Types.InvoiceLineItemId
instance GHC.Classes.Ord Web.Stripe.Types.InvoiceLineItemId
instance GHC.Classes.Eq Web.Stripe.Types.InvoiceLineItemId
instance GHC.Show.Show Web.Stripe.Types.InvoiceLineItemId
instance GHC.Read.Read Web.Stripe.Types.InvoiceLineItemId
instance Data.Data.Data Web.Stripe.Types.InvoiceItemId
instance GHC.Classes.Ord Web.Stripe.Types.InvoiceItemId
instance GHC.Classes.Eq Web.Stripe.Types.InvoiceItemId
instance GHC.Show.Show Web.Stripe.Types.InvoiceItemId
instance GHC.Read.Read Web.Stripe.Types.InvoiceItemId
instance Data.Data.Data Web.Stripe.Types.InvoiceId
instance GHC.Classes.Ord Web.Stripe.Types.InvoiceId
instance GHC.Classes.Eq Web.Stripe.Types.InvoiceId
instance GHC.Show.Show Web.Stripe.Types.InvoiceId
instance GHC.Read.Read Web.Stripe.Types.InvoiceId
instance Data.Data.Data Web.Stripe.Types.Amount
instance GHC.Classes.Ord Web.Stripe.Types.Amount
instance GHC.Classes.Eq Web.Stripe.Types.Amount
instance GHC.Show.Show Web.Stripe.Types.Amount
instance GHC.Read.Read Web.Stripe.Types.Amount
instance Data.Data.Data Web.Stripe.Types.TrialPeriodDays
instance GHC.Classes.Ord Web.Stripe.Types.TrialPeriodDays
instance GHC.Classes.Eq Web.Stripe.Types.TrialPeriodDays
instance GHC.Show.Show Web.Stripe.Types.TrialPeriodDays
instance GHC.Read.Read Web.Stripe.Types.TrialPeriodDays
instance Data.Data.Data Web.Stripe.Types.IntervalCount
instance GHC.Classes.Ord Web.Stripe.Types.IntervalCount
instance GHC.Classes.Eq Web.Stripe.Types.IntervalCount
instance GHC.Show.Show Web.Stripe.Types.IntervalCount
instance GHC.Read.Read Web.Stripe.Types.IntervalCount
instance Data.Data.Data Web.Stripe.Types.DurationInMonths
instance GHC.Classes.Ord Web.Stripe.Types.DurationInMonths
instance GHC.Classes.Eq Web.Stripe.Types.DurationInMonths
instance GHC.Show.Show Web.Stripe.Types.DurationInMonths
instance GHC.Read.Read Web.Stripe.Types.DurationInMonths
instance Data.Data.Data Web.Stripe.Types.RedeemBy
instance GHC.Classes.Ord Web.Stripe.Types.RedeemBy
instance GHC.Classes.Eq Web.Stripe.Types.RedeemBy
instance GHC.Show.Show Web.Stripe.Types.RedeemBy
instance GHC.Read.Read Web.Stripe.Types.RedeemBy
instance Data.Data.Data Web.Stripe.Types.PercentOff
instance GHC.Classes.Ord Web.Stripe.Types.PercentOff
instance GHC.Classes.Eq Web.Stripe.Types.PercentOff
instance GHC.Show.Show Web.Stripe.Types.PercentOff
instance GHC.Read.Read Web.Stripe.Types.PercentOff
instance Data.Data.Data Web.Stripe.Types.MaxRedemptions
instance GHC.Classes.Ord Web.Stripe.Types.MaxRedemptions
instance GHC.Classes.Eq Web.Stripe.Types.MaxRedemptions
instance GHC.Show.Show Web.Stripe.Types.MaxRedemptions
instance GHC.Read.Read Web.Stripe.Types.MaxRedemptions
instance Data.Data.Data Web.Stripe.Types.AmountOff
instance GHC.Classes.Ord Web.Stripe.Types.AmountOff
instance GHC.Classes.Eq Web.Stripe.Types.AmountOff
instance GHC.Show.Show Web.Stripe.Types.AmountOff
instance GHC.Read.Read Web.Stripe.Types.AmountOff
instance Data.Data.Data Web.Stripe.Types.CouponId
instance GHC.Classes.Ord Web.Stripe.Types.CouponId
instance GHC.Classes.Eq Web.Stripe.Types.CouponId
instance GHC.Show.Show Web.Stripe.Types.CouponId
instance GHC.Read.Read Web.Stripe.Types.CouponId
instance Data.Data.Data Web.Stripe.Types.Duration
instance GHC.Classes.Ord Web.Stripe.Types.Duration
instance GHC.Classes.Eq Web.Stripe.Types.Duration
instance Data.Data.Data Web.Stripe.Types.Interval
instance GHC.Classes.Ord Web.Stripe.Types.Interval
instance GHC.Classes.Eq Web.Stripe.Types.Interval
instance Data.Data.Data Web.Stripe.Types.TrialEnd
instance GHC.Classes.Ord Web.Stripe.Types.TrialEnd
instance GHC.Classes.Eq Web.Stripe.Types.TrialEnd
instance GHC.Show.Show Web.Stripe.Types.TrialEnd
instance GHC.Read.Read Web.Stripe.Types.TrialEnd
instance GHC.Classes.Eq Web.Stripe.Types.TrialPeriod
instance GHC.Show.Show Web.Stripe.Types.TrialPeriod
instance Data.Data.Data Web.Stripe.Types.PlanId
instance GHC.Classes.Ord Web.Stripe.Types.PlanId
instance GHC.Classes.Eq Web.Stripe.Types.PlanId
instance GHC.Show.Show Web.Stripe.Types.PlanId
instance GHC.Read.Read Web.Stripe.Types.PlanId
instance Data.Data.Data Web.Stripe.Types.TaxPercent
instance GHC.Classes.Ord Web.Stripe.Types.TaxPercent
instance GHC.Classes.Eq Web.Stripe.Types.TaxPercent
instance GHC.Show.Show Web.Stripe.Types.TaxPercent
instance GHC.Read.Read Web.Stripe.Types.TaxPercent
instance Data.Data.Data Web.Stripe.Types.SubscriptionStatus
instance GHC.Classes.Ord Web.Stripe.Types.SubscriptionStatus
instance GHC.Classes.Eq Web.Stripe.Types.SubscriptionStatus
instance GHC.Show.Show Web.Stripe.Types.SubscriptionStatus
instance GHC.Read.Read Web.Stripe.Types.SubscriptionStatus
instance Data.Data.Data Web.Stripe.Types.SubscriptionId
instance GHC.Classes.Ord Web.Stripe.Types.SubscriptionId
instance GHC.Classes.Eq Web.Stripe.Types.SubscriptionId
instance GHC.Show.Show Web.Stripe.Types.SubscriptionId
instance GHC.Read.Read Web.Stripe.Types.SubscriptionId
instance Data.Data.Data Web.Stripe.Types.DefaultCard
instance GHC.Classes.Ord Web.Stripe.Types.DefaultCard
instance GHC.Classes.Eq Web.Stripe.Types.DefaultCard
instance GHC.Show.Show Web.Stripe.Types.DefaultCard
instance GHC.Read.Read Web.Stripe.Types.DefaultCard
instance Data.Data.Data Web.Stripe.Types.Brand
instance GHC.Classes.Ord Web.Stripe.Types.Brand
instance GHC.Classes.Eq Web.Stripe.Types.Brand
instance GHC.Show.Show Web.Stripe.Types.Brand
instance GHC.Read.Read Web.Stripe.Types.Brand
instance Data.Data.Data Web.Stripe.Types.IsVerified
instance GHC.Classes.Ord Web.Stripe.Types.IsVerified
instance GHC.Classes.Eq Web.Stripe.Types.IsVerified
instance GHC.Show.Show Web.Stripe.Types.IsVerified
instance GHC.Read.Read Web.Stripe.Types.IsVerified
instance Data.Data.Data Web.Stripe.Types.AddressZip
instance GHC.Classes.Ord Web.Stripe.Types.AddressZip
instance GHC.Classes.Eq Web.Stripe.Types.AddressZip
instance GHC.Show.Show Web.Stripe.Types.AddressZip
instance GHC.Read.Read Web.Stripe.Types.AddressZip
instance Data.Data.Data Web.Stripe.Types.AddressState
instance GHC.Classes.Ord Web.Stripe.Types.AddressState
instance GHC.Classes.Eq Web.Stripe.Types.AddressState
instance GHC.Show.Show Web.Stripe.Types.AddressState
instance GHC.Read.Read Web.Stripe.Types.AddressState
instance Data.Data.Data Web.Stripe.Types.AddressLine2
instance GHC.Classes.Ord Web.Stripe.Types.AddressLine2
instance GHC.Classes.Eq Web.Stripe.Types.AddressLine2
instance GHC.Show.Show Web.Stripe.Types.AddressLine2
instance GHC.Read.Read Web.Stripe.Types.AddressLine2
instance Data.Data.Data Web.Stripe.Types.AddressLine1
instance GHC.Classes.Ord Web.Stripe.Types.AddressLine1
instance GHC.Classes.Eq Web.Stripe.Types.AddressLine1
instance GHC.Show.Show Web.Stripe.Types.AddressLine1
instance GHC.Read.Read Web.Stripe.Types.AddressLine1
instance Data.Data.Data Web.Stripe.Types.AddressCountry
instance GHC.Classes.Ord Web.Stripe.Types.AddressCountry
instance GHC.Classes.Eq Web.Stripe.Types.AddressCountry
instance GHC.Show.Show Web.Stripe.Types.AddressCountry
instance GHC.Read.Read Web.Stripe.Types.AddressCountry
instance Data.Data.Data Web.Stripe.Types.AddressCity
instance GHC.Classes.Ord Web.Stripe.Types.AddressCity
instance GHC.Classes.Eq Web.Stripe.Types.AddressCity
instance GHC.Show.Show Web.Stripe.Types.AddressCity
instance GHC.Read.Read Web.Stripe.Types.AddressCity
instance Data.Data.Data Web.Stripe.Types.CVC
instance GHC.Classes.Ord Web.Stripe.Types.CVC
instance GHC.Classes.Eq Web.Stripe.Types.CVC
instance GHC.Show.Show Web.Stripe.Types.CVC
instance GHC.Read.Read Web.Stripe.Types.CVC
instance Data.Data.Data Web.Stripe.Types.ExpYear
instance GHC.Classes.Ord Web.Stripe.Types.ExpYear
instance GHC.Classes.Eq Web.Stripe.Types.ExpYear
instance GHC.Show.Show Web.Stripe.Types.ExpYear
instance GHC.Read.Read Web.Stripe.Types.ExpYear
instance Data.Data.Data Web.Stripe.Types.ExpMonth
instance GHC.Classes.Ord Web.Stripe.Types.ExpMonth
instance GHC.Classes.Eq Web.Stripe.Types.ExpMonth
instance GHC.Show.Show Web.Stripe.Types.ExpMonth
instance GHC.Read.Read Web.Stripe.Types.ExpMonth
instance Data.Data.Data Web.Stripe.Types.CardNumber
instance GHC.Classes.Ord Web.Stripe.Types.CardNumber
instance GHC.Classes.Eq Web.Stripe.Types.CardNumber
instance GHC.Show.Show Web.Stripe.Types.CardNumber
instance GHC.Read.Read Web.Stripe.Types.CardNumber
instance Data.Data.Data Web.Stripe.Types.RecipientCardId
instance GHC.Show.Show Web.Stripe.Types.RecipientCardId
instance GHC.Read.Read Web.Stripe.Types.RecipientCardId
instance GHC.Classes.Ord Web.Stripe.Types.RecipientCardId
instance GHC.Classes.Eq Web.Stripe.Types.RecipientCardId
instance Data.Data.Data Web.Stripe.Types.CardId
instance GHC.Show.Show Web.Stripe.Types.CardId
instance GHC.Read.Read Web.Stripe.Types.CardId
instance GHC.Classes.Ord Web.Stripe.Types.CardId
instance GHC.Classes.Eq Web.Stripe.Types.CardId
instance Data.Data.Data Web.Stripe.Types.AccountBalance
instance GHC.Show.Show Web.Stripe.Types.AccountBalance
instance GHC.Read.Read Web.Stripe.Types.AccountBalance
instance GHC.Classes.Ord Web.Stripe.Types.AccountBalance
instance GHC.Classes.Eq Web.Stripe.Types.AccountBalance
instance Data.Data.Data Web.Stripe.Types.CustomerId
instance GHC.Classes.Ord Web.Stripe.Types.CustomerId
instance GHC.Classes.Eq Web.Stripe.Types.CustomerId
instance GHC.Show.Show Web.Stripe.Types.CustomerId
instance GHC.Read.Read Web.Stripe.Types.CustomerId
instance Data.Data.Data Web.Stripe.Types.RefundReason
instance GHC.Classes.Ord Web.Stripe.Types.RefundReason
instance GHC.Classes.Eq Web.Stripe.Types.RefundReason
instance GHC.Show.Show Web.Stripe.Types.RefundReason
instance GHC.Read.Read Web.Stripe.Types.RefundReason
instance Data.Data.Data Web.Stripe.Types.RefundApplicationFee
instance GHC.Classes.Ord Web.Stripe.Types.RefundApplicationFee
instance GHC.Classes.Eq Web.Stripe.Types.RefundApplicationFee
instance GHC.Show.Show Web.Stripe.Types.RefundApplicationFee
instance GHC.Read.Read Web.Stripe.Types.RefundApplicationFee
instance Data.Data.Data Web.Stripe.Types.RefundId
instance GHC.Classes.Ord Web.Stripe.Types.RefundId
instance GHC.Classes.Eq Web.Stripe.Types.RefundId
instance GHC.Show.Show Web.Stripe.Types.RefundId
instance GHC.Read.Read Web.Stripe.Types.RefundId
instance Data.Data.Data Web.Stripe.Types.Capture
instance GHC.Classes.Ord Web.Stripe.Types.Capture
instance GHC.Classes.Eq Web.Stripe.Types.Capture
instance GHC.Show.Show Web.Stripe.Types.Capture
instance GHC.Read.Read Web.Stripe.Types.Capture
instance Data.Data.Data Web.Stripe.Types.StatementDescription
instance GHC.Classes.Ord Web.Stripe.Types.StatementDescription
instance GHC.Classes.Eq Web.Stripe.Types.StatementDescription
instance GHC.Show.Show Web.Stripe.Types.StatementDescription
instance GHC.Read.Read Web.Stripe.Types.StatementDescription
instance Data.Data.Data Web.Stripe.Types.ChargeId
instance GHC.Classes.Ord Web.Stripe.Types.ChargeId
instance GHC.Classes.Eq Web.Stripe.Types.ChargeId
instance GHC.Show.Show Web.Stripe.Types.ChargeId
instance GHC.Read.Read Web.Stripe.Types.ChargeId
instance Data.Data.Data Web.Stripe.Types.Date
instance GHC.Classes.Ord Web.Stripe.Types.Date
instance GHC.Classes.Eq Web.Stripe.Types.Date
instance GHC.Show.Show Web.Stripe.Types.Date
instance GHC.Read.Read Web.Stripe.Types.Date
instance Data.Data.Data Web.Stripe.Types.Created
instance GHC.Classes.Ord Web.Stripe.Types.Created
instance GHC.Classes.Eq Web.Stripe.Types.Created
instance GHC.Show.Show Web.Stripe.Types.Created
instance GHC.Read.Read Web.Stripe.Types.Created
instance Data.Data.Data Web.Stripe.Types.AvailableOn
instance GHC.Classes.Ord Web.Stripe.Types.AvailableOn
instance GHC.Classes.Eq Web.Stripe.Types.AvailableOn
instance GHC.Show.Show Web.Stripe.Types.AvailableOn
instance GHC.Read.Read Web.Stripe.Types.AvailableOn
instance Data.Data.Data a => Data.Data.Data (Web.Stripe.Types.TimeRange a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Web.Stripe.Types.TimeRange a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Web.Stripe.Types.TimeRange a)
instance GHC.Show.Show a => GHC.Show.Show (Web.Stripe.Types.TimeRange a)
instance GHC.Read.Read a => GHC.Read.Read (Web.Stripe.Types.TimeRange a)
instance (Data.Data.Data id, Data.Data.Data (Web.Stripe.Types.ExpandsTo id)) => Data.Data.Data (Web.Stripe.Types.Expandable id)
instance (GHC.Show.Show id, GHC.Show.Show (Web.Stripe.Types.ExpandsTo id)) => GHC.Show.Show (Web.Stripe.Types.Expandable id)
instance (GHC.Read.Read id, GHC.Read.Read (Web.Stripe.Types.ExpandsTo id)) => GHC.Read.Read (Web.Stripe.Types.Expandable id)
instance (GHC.Classes.Eq id, GHC.Classes.Eq (Web.Stripe.Types.ExpandsTo id)) => GHC.Classes.Eq (Web.Stripe.Types.Expandable id)
instance (GHC.Classes.Ord id, GHC.Classes.Ord (Web.Stripe.Types.ExpandsTo id)) => GHC.Classes.Ord (Web.Stripe.Types.Expandable id)
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.BitcoinReceiver
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.PaymentId
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Transactions
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.BitcoinTransaction
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.BitcoinReceiverId
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.BitcoinTransactionId
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Event
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Charge
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.ApplicationFee
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Refund
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Customer
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Subscription
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Invoice
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.InvoiceLineItem
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Plan
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Discount
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Coupon
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.InvoiceItem
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Dispute
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Transfer
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Recipient
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.BankAccount
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.ApplicationFeeRefund
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Account
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Balance
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.BalanceAmount
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.BalanceTransaction
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.FeeDetails
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Currency
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Description
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.PlanName
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Card
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.RecipientCard
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Name
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.MetaData
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.StripeDeleteResult
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Web.Stripe.Types.StripeList a)
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Web.Stripe.Types.Token a)
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.TokenType
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.ConnectApp
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.EventType
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.TransactionType
instance Data.Aeson.Types.ToJSON.ToJSON Web.Stripe.Types.TransactionType
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.TransactionId
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.AccountId
instance GHC.Show.Show Web.Stripe.Types.RecipientType
instance GHC.Read.Read Web.Stripe.Types.RecipientType
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.RecipientType
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.RecipientId
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.BankAccountStatus
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.TransferType
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.TransferStatus
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.DisputeReason
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.DisputeStatus
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Period
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.InvoiceLineItemType
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.InvoiceId
instance GHC.Show.Show Web.Stripe.Types.Duration
instance GHC.Read.Read Web.Stripe.Types.Duration
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Duration
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Interval
instance GHC.Show.Show Web.Stripe.Types.Interval
instance GHC.Read.Read Web.Stripe.Types.Interval
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.SubscriptionStatus
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.SubscriptionId
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.Brand
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.RecipientCardId
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.CardId
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.CustomerId
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.StatementDescription
instance Data.Aeson.Types.FromJSON.FromJSON Web.Stripe.Types.ChargeId
instance (Data.Aeson.Types.FromJSON.FromJSON id, Data.Aeson.Types.FromJSON.FromJSON (Web.Stripe.Types.ExpandsTo id)) => Data.Aeson.Types.FromJSON.FromJSON (Web.Stripe.Types.Expandable id)


module Web.Stripe.StripeRequest

-- | HTTP Method
--   
--   The other methods are not required by the Stripe API
data Method
DELETE :: Method
GET :: Method
POST :: Method

-- | a wrapper for fields which can either be an id or an expanded object
data Expandable id

-- | an id such as <a>CardId</a>, <a>AccountId</a>, <a>CustomerId</a>, etc
Id :: id -> Expandable id

-- | expanded object such as <a>Card</a>, <a>Account</a>, <a>Customer</a>,
--   etc
Expanded :: (ExpandsTo id) -> Expandable id

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | used to set a specific key/value pair when the type is not enough
newtype Param k v
Param :: (k, v) -> Param k v

-- | HTTP Params
type Params = [(ByteString, ByteString)]

-- | Stripe Request holding <a>Method</a>, URL and <a>Params</a> for a
--   Request. Also includes the function needed to decode the response.
data StripeRequest a
StripeRequest :: Method -> Text -> Params -> StripeRequest a

-- | Method of StripeRequest (i.e. <a>GET</a>, <tt>PUT</tt>, <a>POST</a>,
--   <tt>PUT</tt>)
[method] :: StripeRequest a -> Method

-- | Endpoint of StripeRequest
[endpoint] :: StripeRequest a -> Text

-- | Query Parameters of StripeRequest
[queryParams] :: StripeRequest a -> Params

-- | return type of stripe request

-- | indicate if a request allows an optional parameter
class (ToStripeParam param) => StripeHasParam request param

-- | convert a parameter to a key/value
class ToStripeParam param
toStripeParam :: ToStripeParam param => param -> [(ByteString, ByteString)] -> [(ByteString, ByteString)]

-- | add an optional parameter to a <a>StripeRequest</a>
(-&-) :: StripeHasParam request param => StripeRequest request -> param -> StripeRequest request

-- | HTTP Params
--   
--   helper function for building a <a>StripeRequest</a>
mkStripeRequest :: Method -> Text -> Params -> StripeRequest a
instance GHC.Show.Show Web.Stripe.StripeRequest.Method
instance GHC.Read.Read Web.Stripe.StripeRequest.Method
instance GHC.Classes.Ord Web.Stripe.StripeRequest.Method
instance GHC.Classes.Eq Web.Stripe.StripeRequest.Method
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Amount
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.AmountOff
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.AccountBalance
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.AddressCity
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.AddressCountry
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.AddressLine1
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.AddressLine2
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.AddressState
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.AddressZip
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.ApplicationFeeId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.ApplicationFeeAmount
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.ApplicationFeePercent
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.AvailableOn
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.AtPeriodEnd
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.BankAccountId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Capture
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.CardId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.CardNumber
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.ChargeId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Closed
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Created
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Currency
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.CustomerId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.CouponId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.CVC
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Date
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.DefaultCard
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Duration
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.DurationInMonths
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Email
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.EventId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Evidence
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.ExpMonth
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.ExpYear
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Forgiven
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Interval
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.IntervalCount
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.InvoiceId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.InvoiceItemId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.InvoiceLineItemId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.IsVerified
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.MaxRedemptions
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Name
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.NewBankAccount
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.NewCard
instance Web.Stripe.StripeRequest.ToStripeParam (Web.Stripe.StripeRequest.Param Data.Text.Internal.Text Data.Text.Internal.Text)
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.PercentOff
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.PlanId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.PlanName
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Prorate
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.Quantity
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.RecipientId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.RedeemBy
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.RefundId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.ReceiptEmail
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.RecipientType
instance Web.Stripe.StripeRequest.ToStripeParam a => Web.Stripe.StripeRequest.ToStripeParam (Web.Stripe.Types.Source a)
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.SubscriptionId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.TaxID
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.TaxPercent
instance Web.Stripe.StripeRequest.ToStripeParam a => Web.Stripe.StripeRequest.ToStripeParam (Web.Stripe.Types.TimeRange a)
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.TokenId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.TrialEnd
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.TransactionId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.TransferId
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.TransferStatus
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.TrialPeriodDays
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.RefundApplicationFee
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.RefundReason
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.StatementDescription
instance Web.Stripe.StripeRequest.ToStripeParam Web.Stripe.Types.TransactionType
instance Web.Stripe.StripeRequest.ToStripeParam param => Web.Stripe.StripeRequest.ToStripeParam (Web.Stripe.Types.StartingAfter param)
instance Web.Stripe.StripeRequest.ToStripeParam param => Web.Stripe.StripeRequest.ToStripeParam (Web.Stripe.Types.EndingBefore param)


-- | <a>https://stripe.com/docs/api#transfers</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Transfer
--   import Web.Stripe.Recipient
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config $ getRecipient (RecipientId "recipient_id")
--     case result of
--       (Left stripeError) -&gt; print stripeError
--       (Right (Recipient { recipientId = recipientid })) -&gt; do
--         result &lt;- stripe config $ createTransfer recipientid (Amount 100) USD
--         case result of
--          Left  stripeError -&gt; print stripeError
--          Right transfer    -&gt; print transfer
--   </pre>
module Web.Stripe.Transfer
data CreateTransfer

-- | Create a <a>Transfer</a>
createTransfer :: RecipientId -> Amount -> Currency -> StripeRequest CreateTransfer
data GetTransfer

-- | Retrieve a <a>Transfer</a>
getTransfer :: TransferId -> StripeRequest GetTransfer
data UpdateTransfer

-- | Update a <a>Transfer</a>
updateTransfer :: TransferId -> StripeRequest UpdateTransfer
data CancelTransfer

-- | Cancel a <a>Transfer</a>
cancelTransfer :: TransferId -> StripeRequest CancelTransfer
data GetTransfers

-- | Retrieve StripeList of <tt>Transfers</tt>
getTransfers :: StripeRequest GetTransfers

-- | Amount representing a monetary value. Stripe represents pennies as
--   whole numbers i.e. 100 = $1
newtype Amount
Amount :: Int -> Amount
[getAmount] :: Amount -> Int

-- | <a>BankAccountId</a> for <a>BankAccount</a>
newtype BankAccountId
BankAccountId :: Text -> BankAccountId

-- | <a>Card</a> Object
data Card
Card :: CardId -> Text -> Text -> Brand -> Text -> ExpMonth -> ExpYear -> Text -> Maybe Text -> Maybe Name -> Maybe AddressLine1 -> Maybe AddressLine2 -> Maybe AddressCity -> Maybe AddressState -> Maybe AddressZip -> Maybe AddressCountry -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe (Expandable CustomerId) -> MetaData -> Card
[cardId] :: Card -> CardId
[cardObject] :: Card -> Text
[cardLastFour] :: Card -> Text
[cardBrand] :: Card -> Brand
[cardFunding] :: Card -> Text
[cardExpMonth] :: Card -> ExpMonth
[cardExpYear] :: Card -> ExpYear
[cardFingerprint] :: Card -> Text
[cardCountry] :: Card -> Maybe Text
[cardName] :: Card -> Maybe Name
[cardAddressLine1] :: Card -> Maybe AddressLine1
[cardAddressLine2] :: Card -> Maybe AddressLine2
[cardAddressCity] :: Card -> Maybe AddressCity
[cardAddressState] :: Card -> Maybe AddressState
[cardAddressZip] :: Card -> Maybe AddressZip
[cardAddressCountry] :: Card -> Maybe AddressCountry
[cardCVCCheck] :: Card -> Maybe Text
[cardAddressLine1Check] :: Card -> Maybe Text
[cardAddressZipCheck] :: Card -> Maybe Text
[cardCustomerId] :: Card -> Maybe (Expandable CustomerId)
[cardMetaData] :: Card -> MetaData

-- | CardId for a <a>Customer</a>
newtype CardId
CardId :: Text -> CardId

-- | <a>Created</a>
newtype Created
Created :: UTCTime -> Created

-- | Stripe supports 138 currencies
data Currency

-- | United Arab Emirates Dirham
AED :: Currency

-- | Afghan Afghani
AFN :: Currency

-- | Albanian Lek
ALL :: Currency

-- | Armenian Dram
AMD :: Currency

-- | Netherlands Antillean Gulden
ANG :: Currency

-- | Angolan Kwanza
AOA :: Currency

-- | Argentine Peso
ARS :: Currency

-- | Australian Dollar
AUD :: Currency

-- | Aruban Florin
AWG :: Currency

-- | Azerbaijani Manat
AZN :: Currency

-- | Bosnia &amp; Herzegovina Convertible Mark
BAM :: Currency

-- | Barbadian Dollar
BBD :: Currency

-- | Bangladeshi Taka
BDT :: Currency

-- | Bulgarian Lev
BGN :: Currency

-- | Burundian Franc
BIF :: Currency

-- | Bermudian Dollar
BMD :: Currency

-- | Brunei Dollar
BND :: Currency

-- | Bolivian Boliviano
BOB :: Currency

-- | Brazilian Real
BRL :: Currency

-- | Bahamian Dollar
BSD :: Currency

-- | Botswana Pula
BWP :: Currency

-- | Belize Dollar
BZD :: Currency

-- | Canadian Dollar
CAD :: Currency

-- | Congolese Franc
CDF :: Currency

-- | Swiss Franc
CHF :: Currency

-- | Chilean Peso
CLP :: Currency

-- | Chinese Renminbi Yuan
CNY :: Currency

-- | Colombian Peso
COP :: Currency

-- | Costa Rican Colón
CRC :: Currency

-- | Cape Verdean Escudo
CVE :: Currency

-- | Czech Koruna
CZK :: Currency

-- | Djiboutian Franc
DJF :: Currency

-- | Danish Krone
DKK :: Currency

-- | Dominican Peso
DOP :: Currency

-- | Algerian Dinar
DZD :: Currency

-- | Estonian Kroon
EEK :: Currency

-- | Egyptian Pound
EGP :: Currency

-- | Ethiopian Birr
ETB :: Currency

-- | Euro
EUR :: Currency

-- | Fijian Dollar
FJD :: Currency

-- | Falkland Islands Pound
FKP :: Currency

-- | British Pound
GBP :: Currency

-- | Georgian Lari
GEL :: Currency

-- | Gibraltar Pound
GIP :: Currency

-- | Gambian Dalasi
GMD :: Currency

-- | Guinean Franc
GNF :: Currency

-- | Guatemalan Quetzal
GTQ :: Currency

-- | Guyanese Dollar
GYD :: Currency

-- | Hong Kong Dollar
HKD :: Currency

-- | Honduran Lempira
HNL :: Currency

-- | Croatian Kuna
HRK :: Currency

-- | Haitian Gourde
HTG :: Currency

-- | Hungarian Forint
HUF :: Currency

-- | Indonesian Rupiah
IDR :: Currency

-- | Israeli New Sheqel
ILS :: Currency

-- | Indian Rupee
INR :: Currency

-- | Icelandic Króna
ISK :: Currency

-- | Jamaican Dollar
JMD :: Currency

-- | Japanese Yen
JPY :: Currency

-- | Kenyan Shilling
KES :: Currency

-- | Kyrgyzstani Som
KGS :: Currency

-- | Cambodian Riel
KHR :: Currency

-- | Comorian Franc
KMF :: Currency

-- | South Korean Won
KRW :: Currency

-- | Cayman Islands Dollar
KYD :: Currency

-- | Kazakhstani Tenge
KZT :: Currency

-- | Lao Kip
LAK :: Currency

-- | Lebanese Pound
LBP :: Currency

-- | Sri Lankan Rupee
LKR :: Currency

-- | Liberian Dollar
LRD :: Currency

-- | Lesotho Loti
LSL :: Currency

-- | Lithuanian Litas
LTL :: Currency

-- | Latvian Lats
LVL :: Currency

-- | Moroccan Dirham
MAD :: Currency

-- | Moldovan Leu
MDL :: Currency

-- | Malagasy Ariary
MGA :: Currency

-- | Macedonian Denar
MKD :: Currency

-- | Mongolian Tögrög
MNT :: Currency

-- | Macanese Pataca
MOP :: Currency

-- | Mauritanian Ouguiya
MRO :: Currency

-- | Mauritian Rupee
MUR :: Currency

-- | Maldivian Rufiyaa
MVR :: Currency

-- | Malawian Kwacha
MWK :: Currency

-- | Mexican Peso
MXN :: Currency

-- | Malaysian Ringgit
MYR :: Currency

-- | Mozambican Metical
MZN :: Currency

-- | Namibian Dollar
NAD :: Currency

-- | Nigerian Naira
NGN :: Currency

-- | Nicaraguan Córdoba
NIO :: Currency

-- | Norwegian Krone
NOK :: Currency

-- | Nepalese Rupee
NPR :: Currency

-- | New Zealand Dollar
NZD :: Currency

-- | Panamanian Balboa
PAB :: Currency

-- | Peruvian Nuevo Sol
PEN :: Currency

-- | Papua New Guinean Kina
PGK :: Currency

-- | Philippine Peso
PHP :: Currency

-- | Pakistani Rupee
PKR :: Currency

-- | Polish Złoty
PLN :: Currency

-- | Paraguayan Guaraní
PYG :: Currency

-- | Qatari Riyal
QAR :: Currency

-- | Romanian Leu
RON :: Currency

-- | Serbian Dinar
RSD :: Currency

-- | Russian Ruble
RUB :: Currency

-- | Rwandan Franc
RWF :: Currency

-- | Saudi Riyal
SAR :: Currency

-- | Solomon Islands Dollar
SBD :: Currency

-- | Seychellois Rupee
SCR :: Currency

-- | Swedish Krona
SEK :: Currency

-- | Singapore Dollar
SGD :: Currency

-- | Saint Helenian Pound
SHP :: Currency

-- | Sierra Leonean Leone
SLL :: Currency

-- | Somali Shilling
SOS :: Currency

-- | Surinamese Dollar
SRD :: Currency

-- | São Tomé and Príncipe Dobra
STD :: Currency

-- | Salvadoran Colón
SVC :: Currency

-- | Swazi Lilangeni
SZL :: Currency

-- | Thai Baht
THB :: Currency

-- | Tajikistani Somoni
TJS :: Currency

-- | Tongan Paʻanga
TOP :: Currency

-- | Turkish Lira
TRY :: Currency

-- | Trinidad and Tobago Dollar
TTD :: Currency

-- | New Taiwan Dollar
TWD :: Currency

-- | Tanzanian Shilling
TZS :: Currency

-- | Ukrainian Hryvnia
UAH :: Currency

-- | Ugandan Shilling
UGX :: Currency

-- | United States Dollar
USD :: Currency

-- | Uruguayan Peso
UYU :: Currency

-- | Uzbekistani Som
UZS :: Currency

-- | Vietnamese Đồng
VND :: Currency

-- | Vanuatu Vatu
VUV :: Currency

-- | Samoan Tala
WST :: Currency

-- | Central African Cfa Franc
XAF :: Currency

-- | East Caribbean Dollar
XCD :: Currency

-- | West African Cfa Franc
XOF :: Currency

-- | Cfp Franc
XPF :: Currency

-- | Yemeni Rial
YER :: Currency

-- | South African Rand
ZAR :: Currency

-- | Zambian Kwacha
ZMW :: Currency

-- | Unknown Currency
UnknownCurrency :: Currency

-- | <a>Date</a>
newtype Date
Date :: UTCTime -> Date

-- | Generic Description for use in constructing API Calls
newtype Description
Description :: Text -> Description

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | Recipient Object
data Recipient
Recipient :: RecipientId -> Text -> UTCTime -> Bool -> RecipientType -> Maybe Description -> Maybe Email -> Name -> Bool -> Maybe BankAccount -> StripeList RecipientCard -> Maybe (Expandable RecipientCardId) -> Recipient
[recipientId] :: Recipient -> RecipientId
[recipientObject] :: Recipient -> Text
[recipientCreated] :: Recipient -> UTCTime
[recipientLiveMode] :: Recipient -> Bool
[recipientType] :: Recipient -> RecipientType
[recipientDescription] :: Recipient -> Maybe Description
[recipientEmail] :: Recipient -> Maybe Email
[recipientName] :: Recipient -> Name
[recipientVerified] :: Recipient -> Bool
[recipientActiveAccount] :: Recipient -> Maybe BankAccount
[recipientCards] :: Recipient -> StripeList RecipientCard
[recipientDefaultCard] :: Recipient -> Maybe (Expandable RecipientCardId)
DeletedRecipient :: Maybe Bool -> RecipientId -> Recipient
[deletedRecipient] :: Recipient -> Maybe Bool
[deletedRecipientId] :: Recipient -> RecipientId

-- | <a>RecipientId</a> for a <a>Recipient</a>
newtype RecipientId
RecipientId :: Text -> RecipientId

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a

-- | <a>StatementDescription</a> to be added to a <a>Charge</a>
newtype StatementDescription
StatementDescription :: Text -> StatementDescription

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool

-- | <a>Transfer</a> Object
data Transfer
Transfer :: TransferId -> Text -> UTCTime -> UTCTime -> Bool -> Int -> Currency -> TransferStatus -> TransferType -> Expandable TransactionId -> Maybe Description -> Maybe BankAccount -> Maybe Text -> Maybe Text -> Maybe StatementDescription -> Maybe (Expandable RecipientId) -> MetaData -> Transfer
[transferId] :: Transfer -> TransferId
[transferObject] :: Transfer -> Text
[transferCreated] :: Transfer -> UTCTime
[transferDate] :: Transfer -> UTCTime
[transferLiveMode] :: Transfer -> Bool
[transferAmount] :: Transfer -> Int
[transferCurrency] :: Transfer -> Currency
[transferStatus] :: Transfer -> TransferStatus
[transferType] :: Transfer -> TransferType
[transferBalanceTransaction] :: Transfer -> Expandable TransactionId
[transferDescription] :: Transfer -> Maybe Description
[transferBankAccount] :: Transfer -> Maybe BankAccount
[transferFailureMessage] :: Transfer -> Maybe Text
[transferFailureCode] :: Transfer -> Maybe Text
[transferStatementDescription] :: Transfer -> Maybe StatementDescription
[transferRecipient] :: Transfer -> Maybe (Expandable RecipientId)
[transferMetaData] :: Transfer -> MetaData

-- | <a>TransferId</a>
newtype TransferId
TransferId :: Text -> TransferId

-- | Status of a <a>Transfer</a>
data TransferStatus
TransferPaid :: TransferStatus
TransferPending :: TransferStatus
TransferCanceled :: TransferStatus
TransferFailed :: TransferStatus

-- | Type of a <a>Transfer</a>
data TransferType
CardTransfer :: TransferType
BankAccountTransfer :: TransferType

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.GetTransfers Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.GetTransfers Web.Stripe.Types.Created
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.GetTransfers Web.Stripe.Types.Date
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.GetTransfers (Web.Stripe.Types.EndingBefore Web.Stripe.Types.TransferId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.GetTransfers Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.GetTransfers Web.Stripe.Types.RecipientId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.GetTransfers (Web.Stripe.Types.StartingAfter Web.Stripe.Types.TransferId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.GetTransfers Web.Stripe.Types.TransferStatus
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.UpdateTransfer Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.UpdateTransfer Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.GetTransfer Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.CreateTransfer Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.CreateTransfer Web.Stripe.Types.BankAccountId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.CreateTransfer Web.Stripe.Types.CardId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.CreateTransfer Web.Stripe.Types.StatementDescription
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Transfer.CreateTransfer Web.Stripe.Types.MetaData


-- | <a>https://stripe.com/docs/api#tokens</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Token
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--         credit = CardNumber "4242424242424242"
--         em  = ExpMonth 12
--         ey  = ExpYear 2015
--         cvc = CVC "123"
--         cardinfo = (mkNewCard credit em ey) { newCardCVC = Just cvc }
--     result &lt;- stripe config $ createCardToken (Just cardinfo)
--     case result of
--       Right token -&gt; print token
--       Left stripeError -&gt; print stripeError
--   </pre>
module Web.Stripe.Token
data CreateCardToken

-- | Create a <a>Token</a> by specifiying Credit <a>Card</a> information
createCardToken :: Maybe NewCard -> StripeRequest CreateCardToken
data CreateBankAccountToken

-- | Create a <a>Token</a> for a specific <a>BankAccount</a>
createBankAccountToken :: Maybe NewBankAccount -> StripeRequest CreateBankAccountToken
data GetCardToken

-- | Retrieve a <a>Token</a> by <a>TokenId</a>
getCardToken :: TokenId -> StripeRequest GetCardToken
data GetBankAccountToken

-- | Retrieve a <a>Token</a> by <a>TokenId</a>
getBankAccountToken :: TokenId -> StripeRequest GetBankAccountToken

-- | <a>Account</a> Object
data Account
Account :: AccountId -> Email -> Maybe Description -> Maybe Text -> Text -> Bool -> Bool -> Bool -> [Currency] -> Currency -> Text -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Account
[accountId] :: Account -> AccountId
[accountEmail] :: Account -> Email
[accountStatementDescriptor] :: Account -> Maybe Description
[accountDisplayName] :: Account -> Maybe Text
[accountTimeZone] :: Account -> Text
[accountDetailsSubmitted] :: Account -> Bool
[accountChargeEnabled] :: Account -> Bool
[accountTransferEnabled] :: Account -> Bool
[accountCurrenciesSupported] :: Account -> [Currency]
[accountDefaultCurrency] :: Account -> Currency
[accountCountry] :: Account -> Text
[accountObject] :: Account -> Text
[accountBusinessName] :: Account -> Maybe Text
[accountBusinessURL] :: Account -> Maybe Text
[accountBusinessLogo] :: Account -> Maybe Text
[accountSupportPhone] :: Account -> Maybe Text

-- | Account Number of a Bank Account
newtype AccountNumber
AccountNumber :: Text -> AccountNumber

-- | <a>BankAccount</a> Object
data BankAccount
BankAccount :: BankAccountId -> Text -> Text -> Country -> Currency -> Maybe BankAccountStatus -> Maybe Text -> Text -> BankAccount
[bankAccountId] :: BankAccount -> BankAccountId
[bankAccountObject] :: BankAccount -> Text
[bankAccountLast4] :: BankAccount -> Text
[bankAccountCountry] :: BankAccount -> Country
[bankAccountCurrency] :: BankAccount -> Currency
[bankAccountStatus] :: BankAccount -> Maybe BankAccountStatus
[bankAccountFingerprint] :: BankAccount -> Maybe Text
[bankAccountName] :: BankAccount -> Text

-- | <a>Card</a> Object
data Card
Card :: CardId -> Text -> Text -> Brand -> Text -> ExpMonth -> ExpYear -> Text -> Maybe Text -> Maybe Name -> Maybe AddressLine1 -> Maybe AddressLine2 -> Maybe AddressCity -> Maybe AddressState -> Maybe AddressZip -> Maybe AddressCountry -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe (Expandable CustomerId) -> MetaData -> Card
[cardId] :: Card -> CardId
[cardObject] :: Card -> Text
[cardLastFour] :: Card -> Text
[cardBrand] :: Card -> Brand
[cardFunding] :: Card -> Text
[cardExpMonth] :: Card -> ExpMonth
[cardExpYear] :: Card -> ExpYear
[cardFingerprint] :: Card -> Text
[cardCountry] :: Card -> Maybe Text
[cardName] :: Card -> Maybe Name
[cardAddressLine1] :: Card -> Maybe AddressLine1
[cardAddressLine2] :: Card -> Maybe AddressLine2
[cardAddressCity] :: Card -> Maybe AddressCity
[cardAddressState] :: Card -> Maybe AddressState
[cardAddressZip] :: Card -> Maybe AddressZip
[cardAddressCountry] :: Card -> Maybe AddressCountry
[cardCVCCheck] :: Card -> Maybe Text
[cardAddressLine1Check] :: Card -> Maybe Text
[cardAddressZipCheck] :: Card -> Maybe Text
[cardCustomerId] :: Card -> Maybe (Expandable CustomerId)
[cardMetaData] :: Card -> MetaData

-- | Number associated with a <a>Card</a>
newtype CardNumber
CardNumber :: Text -> CardNumber

-- | Country
newtype Country
Country :: Text -> Country

-- | <a>CustomerId</a> for a <a>Customer</a>
newtype CustomerId
CustomerId :: Text -> CustomerId

-- | CVC for a <a>Card</a>
newtype CVC
CVC :: Text -> CVC

-- | Expiration Month for a <a>Card</a>
newtype ExpMonth
ExpMonth :: Int -> ExpMonth

-- | Expiration Year for a <a>Card</a>
newtype ExpYear
ExpYear :: Int -> ExpYear

-- | create a new <a>BankAccount</a>
data NewBankAccount
NewBankAccount :: Country -> RoutingNumber -> AccountNumber -> NewBankAccount
[newBankAccountCountry] :: NewBankAccount -> Country
[newBankAccountRoutingNumber] :: NewBankAccount -> RoutingNumber
[newBankAccountAccountNumber] :: NewBankAccount -> AccountNumber

-- | create a <a>NewCard</a> with only the required fields
mkNewCard :: CardNumber -> ExpMonth -> ExpYear -> NewCard

-- | <a>NewCard</a> contains the data needed to create a new <a>Card</a>
data NewCard
NewCard :: CardNumber -> ExpMonth -> ExpYear -> Maybe CVC -> Maybe Name -> Maybe AddressLine1 -> Maybe AddressLine2 -> Maybe AddressCity -> Maybe AddressZip -> Maybe AddressState -> Maybe AddressCountry -> NewCard
[newCardCardNumber] :: NewCard -> CardNumber
[newCardExpMonth] :: NewCard -> ExpMonth
[newCardExpYear] :: NewCard -> ExpYear
[newCardCVC] :: NewCard -> Maybe CVC
[newCardName] :: NewCard -> Maybe Name
[newCardAddressLine1] :: NewCard -> Maybe AddressLine1
[newCardAddressLine2] :: NewCard -> Maybe AddressLine2
[newCardAddressCity] :: NewCard -> Maybe AddressCity
[newCardAddressZip] :: NewCard -> Maybe AddressZip
[newCardAddressState] :: NewCard -> Maybe AddressState
[newCardAddressCountry] :: NewCard -> Maybe AddressCountry

-- | Routing Number for Bank Account
newtype RoutingNumber
RoutingNumber :: Text -> RoutingNumber

-- | <a>Token</a> Object
data Token a
Token :: TokenId -> Bool -> UTCTime -> Bool -> Text -> TokenType -> a -> Token a
[tokenId] :: Token a -> TokenId
[tokenLiveMode] :: Token a -> Bool
[tokenCreated] :: Token a -> UTCTime
[tokenUsed] :: Token a -> Bool
[tokenObject] :: Token a -> Text
[tokenType] :: Token a -> TokenType
[tokenData] :: Token a -> a

-- | <a>TokenId</a> of a <a>Token</a>
newtype TokenId
TokenId :: Text -> TokenId

-- | Type of <a>Token</a>
data TokenType
TokenCard :: TokenType
TokenBankAccount :: TokenType
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Token.CreateCardToken Web.Stripe.Types.CustomerId


-- | <a>https://stripe.com/docs/api#subscriptions</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Subscription
--   import Web.Stripe.Customer
--   import Web.Stripe.Plan
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config $ createCustomer
--     case result of
--       (Left stripeError) -&gt; print stripeError
--       (Right (Customer { customerId = cid })) -&gt; do
--         result &lt;- stripe config $ createPlan (PlanId "free plan")
--                                              (Amount 0)
--                                              USD
--                                              Month
--                                              (PlanName "sample plan")
--         case result of
--           (Left stripeError) -&gt; print stripeError
--           (Right (Plan { planId = pid })) -&gt; do
--              result &lt;- stripe config $ createSubscription cid pid
--              case result of
--                (Left stripeError)   -&gt; print stripeError
--                (Right subscription) -&gt; print subscription
--   </pre>
module Web.Stripe.Subscription
data CreateSubscription

-- | Create a <a>Subscription</a> by <a>CustomerId</a> and <a>PlanId</a>
createSubscription :: CustomerId -> PlanId -> StripeRequest CreateSubscription
data GetSubscription

-- | Retrieve a <a>Subscription</a> by <a>CustomerId</a> and
--   <a>SubscriptionId</a>
getSubscription :: CustomerId -> SubscriptionId -> StripeRequest GetSubscription
data UpdateSubscription

-- | Update a <a>Subscription</a> by <a>CustomerId</a> and
--   <a>SubscriptionId</a>
updateSubscription :: CustomerId -> SubscriptionId -> StripeRequest UpdateSubscription
data CancelSubscription

-- | Delete a <a>Subscription</a> by <a>CustomerId</a> and
--   <a>SubscriptionId</a>
cancelSubscription :: CustomerId -> SubscriptionId -> StripeRequest CancelSubscription
data GetSubscriptions

-- | Retrieve all active <a>Subscription</a>s
getSubscriptions :: StripeRequest GetSubscriptions
data GetSubscriptionsByCustomerId

-- | Retrieve a customer's <a>Subscription</a>s
getSubscriptionsByCustomerId :: CustomerId -> StripeRequest GetSubscriptionsByCustomerId

-- | ApplicationFeePercent
newtype ApplicationFeePercent
ApplicationFeePercent :: Double -> ApplicationFeePercent

-- | A flag that if set to true will delay the cancellation of the
--   subscription until the end of the current period.
newtype AtPeriodEnd
AtPeriodEnd :: Bool -> AtPeriodEnd

-- | <a>CustomerId</a> for a <a>Customer</a>
newtype CustomerId
CustomerId :: Text -> CustomerId

-- | <a>CouponId</a> for a <a>Coupon</a>
newtype CouponId
CouponId :: Text -> CouponId

-- | <a>Coupon</a> Object
data Coupon
Coupon :: CouponId -> UTCTime -> Maybe Int -> Maybe Int -> Maybe Currency -> Bool -> Duration -> Maybe UTCTime -> Maybe Int -> Maybe Int -> Maybe Int -> Bool -> MetaData -> Coupon
[couponId] :: Coupon -> CouponId
[couponCreated] :: Coupon -> UTCTime
[couponPercentOff] :: Coupon -> Maybe Int
[couponAmountOff] :: Coupon -> Maybe Int
[couponCurrency] :: Coupon -> Maybe Currency
[couponLiveMode] :: Coupon -> Bool
[couponDuration] :: Coupon -> Duration
[couponRedeemBy] :: Coupon -> Maybe UTCTime
[couponMaxRedemptions] :: Coupon -> Maybe Int
[couponTimesRedeemed] :: Coupon -> Maybe Int
[couponDurationInMonths] :: Coupon -> Maybe Int
[couponValid] :: Coupon -> Bool
[couponMetaData] :: Coupon -> MetaData

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | Type of MetaData for use on <tt>Stripe</tt> objects
newtype MetaData
MetaData :: [(Text, Text)] -> MetaData

-- | <a>PlanId</a> for a <a>Plan</a>
newtype PlanId
PlanId :: Text -> PlanId

-- | Prorate
newtype Prorate
Prorate :: Bool -> Prorate

-- | Generic <a>Quantity</a> type to be used with <a>Customer</a>,
--   <a>Subscription</a> and <a>InvoiceLineItem</a> API requests
newtype Quantity
Quantity :: Int -> Quantity

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool

-- | Subscription Object
data Subscription
Subscription :: SubscriptionId -> Plan -> Text -> UTCTime -> SubscriptionStatus -> Expandable CustomerId -> Bool -> UTCTime -> UTCTime -> Maybe UTCTime -> Maybe UTCTime -> Maybe UTCTime -> Maybe UTCTime -> Quantity -> Maybe Double -> Maybe Discount -> MetaData -> Maybe Double -> Subscription
[subscriptionId] :: Subscription -> SubscriptionId
[subscriptionPlan] :: Subscription -> Plan
[subscriptionObject] :: Subscription -> Text
[subscriptionStart] :: Subscription -> UTCTime
[subscriptionStatus] :: Subscription -> SubscriptionStatus
[subscriptionCustomerId] :: Subscription -> Expandable CustomerId
[subscriptionCancelAtPeriodEnd] :: Subscription -> Bool
[subscriptionCurrentPeriodStart] :: Subscription -> UTCTime
[subscriptionCurrentPeriodEnd] :: Subscription -> UTCTime
[subscriptionEndedAt] :: Subscription -> Maybe UTCTime
[subscriptionTrialStart] :: Subscription -> Maybe UTCTime
[subscriptionTrialEnd] :: Subscription -> Maybe UTCTime
[subscriptionCanceledAt] :: Subscription -> Maybe UTCTime
[subscriptionQuantity] :: Subscription -> Quantity
[subscriptionApplicationFeePercent] :: Subscription -> Maybe Double
[subscriptionDiscount] :: Subscription -> Maybe Discount
[subscriptionMetaData] :: Subscription -> MetaData
[subscriptionTaxPercent] :: Subscription -> Maybe Double

-- | <a>SubscriptionId</a> for a <a>Subscription</a>
newtype SubscriptionId
SubscriptionId :: Text -> SubscriptionId
[getSubscriptionId] :: SubscriptionId -> Text

-- | Status of a <a>Subscription</a>
data SubscriptionStatus
Trialing :: SubscriptionStatus
Active :: SubscriptionStatus
PastDue :: SubscriptionStatus
Canceled :: SubscriptionStatus
UnPaid :: SubscriptionStatus

-- | <a>TaxPercent</a> for a <a>Subscription</a>
newtype TaxPercent
TaxPercent :: Double -> TaxPercent

-- | <a>TrialEnd</a> for a Plan
newtype TrialEnd
TrialEnd :: UTCTime -> TrialEnd
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.GetSubscriptionsByCustomerId Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.GetSubscriptionsByCustomerId (Web.Stripe.Types.EndingBefore Web.Stripe.Types.SubscriptionId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.GetSubscriptionsByCustomerId Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.GetSubscriptionsByCustomerId (Web.Stripe.Types.StartingAfter Web.Stripe.Types.SubscriptionId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.GetSubscriptions Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.GetSubscriptions (Web.Stripe.Types.EndingBefore Web.Stripe.Types.SubscriptionId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.GetSubscriptions Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.GetSubscriptions (Web.Stripe.Types.StartingAfter Web.Stripe.Types.SubscriptionId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.CancelSubscription Web.Stripe.Types.AtPeriodEnd
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.UpdateSubscription Web.Stripe.Types.PlanId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.UpdateSubscription Web.Stripe.Types.CouponId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.UpdateSubscription Web.Stripe.Types.Prorate
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.UpdateSubscription Web.Stripe.Types.TrialEnd
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.UpdateSubscription Web.Stripe.Types.CardId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.UpdateSubscription Web.Stripe.Types.Quantity
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.UpdateSubscription Web.Stripe.Types.ApplicationFeePercent
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.UpdateSubscription Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.UpdateSubscription Web.Stripe.Types.TaxPercent
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.GetSubscription Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.CreateSubscription Web.Stripe.Types.CouponId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.CreateSubscription Web.Stripe.Types.Prorate
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.CreateSubscription Web.Stripe.Types.TrialEnd
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.CreateSubscription Web.Stripe.Types.CardId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.CreateSubscription Web.Stripe.Types.Quantity
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.CreateSubscription Web.Stripe.Types.ApplicationFeePercent
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.CreateSubscription Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Subscription.CreateSubscription Web.Stripe.Types.TaxPercent


-- | <a>https://stripe.com/docs/api#account</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Account
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config getAccountDetails
--     case result of
--       Right account    -&gt; print account
--       Left stripeError -&gt; print stripeError
--   </pre>
module Web.Stripe.Account

-- | Retrieve the object that represents your Stripe account
data GetAccountDetails
getAccountDetails :: StripeRequest GetAccountDetails

-- | <a>Account</a> Object
data Account
Account :: AccountId -> Email -> Maybe Description -> Maybe Text -> Text -> Bool -> Bool -> Bool -> [Currency] -> Currency -> Text -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Account
[accountId] :: Account -> AccountId
[accountEmail] :: Account -> Email
[accountStatementDescriptor] :: Account -> Maybe Description
[accountDisplayName] :: Account -> Maybe Text
[accountTimeZone] :: Account -> Text
[accountDetailsSubmitted] :: Account -> Bool
[accountChargeEnabled] :: Account -> Bool
[accountTransferEnabled] :: Account -> Bool
[accountCurrenciesSupported] :: Account -> [Currency]
[accountDefaultCurrency] :: Account -> Currency
[accountCountry] :: Account -> Text
[accountObject] :: Account -> Text
[accountBusinessName] :: Account -> Maybe Text
[accountBusinessURL] :: Account -> Maybe Text
[accountBusinessLogo] :: Account -> Maybe Text
[accountSupportPhone] :: Account -> Maybe Text

-- | <a>AccountId</a> of an <a>Account</a>
newtype AccountId
AccountId :: Text -> AccountId


-- | <a>https://stripe.com/docs/api#refunds</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Customer
--   import Web.Stripe.Charge
--   import Web.Stripe.Refund
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--         credit = CardNumber "4242424242424242"
--         em  = ExpMonth 12
--         ey  = ExpYear 2015
--         cvc = CVC "123"
--         cardinfo = (mkNewCard credit em ey) { newCardCVC = Just cvc }
--     result &lt;- stripe config $ createCustomer -&amp;- cardinfo
--     case result of
--       (Left stripeError) -&gt; print stripeError
--       (Right (Customer { customerId = cid })) -&gt; do
--         result &lt;- stripe config $ createCharge (Amount 100) USD -&amp;- cid
--         case result of
--           (Left stripeError) -&gt; print stripeError
--           (Right (Charge { chargeId   = chid })) -&gt; do
--             result &lt;- stripe config $ createRefund chid
--             case result of
--               (Left stripeError) -&gt; print stripeError
--               (Right refund)     -&gt; print refund
--   </pre>
module Web.Stripe.Refund
data CreateRefund

-- | create a <a>Refund</a>
createRefund :: ChargeId -> StripeRequest CreateRefund
data GetRefund

-- | Retrieve a <a>Refund</a> by <a>ChargeId</a> and <a>RefundId</a>
getRefund :: ChargeId -> RefundId -> StripeRequest GetRefund
data GetRefunds

-- | Retrieve a lot of Refunds by <a>ChargeId</a>
getRefunds :: ChargeId -> StripeRequest GetRefunds
data UpdateRefund

-- | Update a <a>Refund</a> by <a>ChargeId</a> and <a>RefundId</a>
updateRefund :: ChargeId -> RefundId -> StripeRequest UpdateRefund

-- | Amount representing a monetary value. Stripe represents pennies as
--   whole numbers i.e. 100 = $1
newtype Amount
Amount :: Int -> Amount
[getAmount] :: Amount -> Int

-- | <a>Charge</a> object in <tt>Stripe</tt> API
data Charge
Charge :: ChargeId -> Text -> UTCTime -> Bool -> Bool -> Amount -> Currency -> Bool -> Maybe Card -> Bool -> StripeList Refund -> Maybe (Expandable TransactionId) -> Maybe Text -> Maybe Text -> Int -> Maybe (Expandable CustomerId) -> Maybe (Expandable InvoiceId) -> Maybe Description -> Maybe Dispute -> MetaData -> Maybe StatementDescription -> Maybe Text -> Maybe Text -> Charge
[chargeId] :: Charge -> ChargeId
[chargeObject] :: Charge -> Text
[chargeCreated] :: Charge -> UTCTime
[chargeLiveMode] :: Charge -> Bool
[chargePaid] :: Charge -> Bool
[chargeAmount] :: Charge -> Amount
[chargeCurrency] :: Charge -> Currency
[chargeRefunded] :: Charge -> Bool
[chargeCreditCard] :: Charge -> Maybe Card
[chargeCaptured] :: Charge -> Bool
[chargeRefunds] :: Charge -> StripeList Refund
[chargeBalanceTransaction] :: Charge -> Maybe (Expandable TransactionId)
[chargeFailureMessage] :: Charge -> Maybe Text
[chargeFailureCode] :: Charge -> Maybe Text
[chargeAmountRefunded] :: Charge -> Int
[chargeCustomerId] :: Charge -> Maybe (Expandable CustomerId)
[chargeInvoice] :: Charge -> Maybe (Expandable InvoiceId)
[chargeDescription] :: Charge -> Maybe Description
[chargeDispute] :: Charge -> Maybe Dispute
[chargeMetaData] :: Charge -> MetaData
[chargeStatementDescription] :: Charge -> Maybe StatementDescription
[chargeReceiptEmail] :: Charge -> Maybe Text
[chargeReceiptNumber] :: Charge -> Maybe Text

-- | <a>ChargeId</a> associated with a <a>Charge</a>
newtype ChargeId
ChargeId :: Text -> ChargeId

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | <a>Refund</a> Object
data Refund
Refund :: RefundId -> Int -> Currency -> UTCTime -> Text -> ChargeId -> Expandable TransactionId -> MetaData -> Refund
[refundId] :: Refund -> RefundId
[refundAmount] :: Refund -> Int
[refundCurrency] :: Refund -> Currency
[refundCreated] :: Refund -> UTCTime
[refundObject] :: Refund -> Text
[refundCharge] :: Refund -> ChargeId
[refundBalanceTransaction] :: Refund -> Expandable TransactionId
[refundMetaData] :: Refund -> MetaData

-- | <a>RefundApplicationFee</a>
newtype RefundApplicationFee
RefundApplicationFee :: Bool -> RefundApplicationFee
[getRefundApplicationFee] :: RefundApplicationFee -> Bool

-- | <a>RefundReason</a>
data RefundReason
RefundDuplicate :: RefundReason
RefundFraudulent :: RefundReason
RefundRequestedByCustomer :: RefundReason

-- | <a>RefundId</a> for <a>Refund</a>
newtype RefundId
RefundId :: Text -> RefundId

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Refund.GetRefunds Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Refund.GetRefunds (Web.Stripe.Types.EndingBefore Web.Stripe.Types.RefundId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Refund.GetRefunds Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Refund.GetRefunds (Web.Stripe.Types.StartingAfter Web.Stripe.Types.RefundId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Refund.UpdateRefund Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Refund.GetRefund Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Refund.CreateRefund Web.Stripe.Types.Amount
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Refund.CreateRefund Web.Stripe.Types.RefundApplicationFee
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Refund.CreateRefund Web.Stripe.Types.RefundReason
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Refund.CreateRefund Web.Stripe.Types.MetaData


-- | <a>https://stripe.com/docs/api#recipients</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Recipient
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config $
--         createRecipient (Name "simon marlow")
--                         Individual
--     case result of
--       Right recipient  -&gt; print recipient
--       Left stripeError -&gt; print stripeError
--   </pre>
module Web.Stripe.Recipient
data CreateRecipient

-- | Base Request for issues create <a>Recipient</a> requests
createRecipient :: Name -> RecipientType -> StripeRequest CreateRecipient
data GetRecipient

-- | Retrieve a <a>Recipient</a>
getRecipient :: RecipientId -> StripeRequest GetRecipient
data UpdateRecipient

-- | Update <a>Recipient</a>
updateRecipient :: RecipientId -> StripeRequest UpdateRecipient
data DeleteRecipient

-- | Delete a <a>Recipient</a>
deleteRecipient :: RecipientId -> StripeRequest DeleteRecipient
data GetRecipients

-- | Retrieve multiple <a>Recipient</a>s
getRecipients :: StripeRequest GetRecipients

-- | Account Number of a Bank Account
newtype AccountNumber
AccountNumber :: Text -> AccountNumber

-- | City address for a <a>Card</a>
newtype AddressCity
AddressCity :: Text -> AddressCity

-- | Country address for a <a>Card</a>
newtype AddressCountry
AddressCountry :: Text -> AddressCountry

-- | Address Line One for a <a>Card</a>
newtype AddressLine1
AddressLine1 :: Text -> AddressLine1

-- | Address Line Two for a <a>Card</a>
newtype AddressLine2
AddressLine2 :: Text -> AddressLine2

-- | Address State for a <a>Card</a>
newtype AddressState
AddressState :: Text -> AddressState

-- | Address Zip Code for a <a>Card</a>
newtype AddressZip
AddressZip :: Text -> AddressZip

-- | <a>BankAccount</a> Object
data BankAccount
BankAccount :: BankAccountId -> Text -> Text -> Country -> Currency -> Maybe BankAccountStatus -> Maybe Text -> Text -> BankAccount
[bankAccountId] :: BankAccount -> BankAccountId
[bankAccountObject] :: BankAccount -> Text
[bankAccountLast4] :: BankAccount -> Text
[bankAccountCountry] :: BankAccount -> Country
[bankAccountCurrency] :: BankAccount -> Currency
[bankAccountStatus] :: BankAccount -> Maybe BankAccountStatus
[bankAccountFingerprint] :: BankAccount -> Maybe Text
[bankAccountName] :: BankAccount -> Text

-- | <a>BankAccountId</a> for <a>BankAccount</a>
newtype BankAccountId
BankAccountId :: Text -> BankAccountId

-- | <a>BankAccountStatus</a> Object
data BankAccountStatus
New :: BankAccountStatus
Validated :: BankAccountStatus
Verified :: BankAccountStatus
Errored :: BankAccountStatus

-- | Number associated with a <a>Card</a>
newtype CardNumber
CardNumber :: Text -> CardNumber

-- | Country
newtype Country
Country :: Text -> Country

-- | CVC for a <a>Card</a>
newtype CVC
CVC :: Text -> CVC

-- | set the <a>DefaultCard</a>
data DefaultCard
DefaultCard :: CardId -> DefaultCard
[getDefaultCard] :: DefaultCard -> CardId

-- | Generic Description for use in constructing API Calls
newtype Description
Description :: Text -> Description

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | Expiration Month for a <a>Card</a>
newtype ExpMonth
ExpMonth :: Int -> ExpMonth

-- | Expiration Year for a <a>Card</a>
newtype ExpYear
ExpYear :: Int -> ExpYear

-- | <a>Email</a> associated with a <a>Customer</a>, <a>Recipient</a> or
--   <a>Charge</a>
newtype Email
Email :: Text -> Email

-- | <a>IsVerified</a> <tt>Recipients</tt>
newtype IsVerified
IsVerified :: Bool -> IsVerified
[getVerified] :: IsVerified -> Bool

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | Type of MetaData for use on <tt>Stripe</tt> objects
newtype MetaData
MetaData :: [(Text, Text)] -> MetaData

-- | a cardholder's full name
newtype Name
Name :: Text -> Name
[getName] :: Name -> Text

-- | create a new <a>BankAccount</a>
data NewBankAccount
NewBankAccount :: Country -> RoutingNumber -> AccountNumber -> NewBankAccount
[newBankAccountCountry] :: NewBankAccount -> Country
[newBankAccountRoutingNumber] :: NewBankAccount -> RoutingNumber
[newBankAccountAccountNumber] :: NewBankAccount -> AccountNumber

-- | <a>NewCard</a> contains the data needed to create a new <a>Card</a>
data NewCard
NewCard :: CardNumber -> ExpMonth -> ExpYear -> Maybe CVC -> Maybe Name -> Maybe AddressLine1 -> Maybe AddressLine2 -> Maybe AddressCity -> Maybe AddressZip -> Maybe AddressState -> Maybe AddressCountry -> NewCard
[newCardCardNumber] :: NewCard -> CardNumber
[newCardExpMonth] :: NewCard -> ExpMonth
[newCardExpYear] :: NewCard -> ExpYear
[newCardCVC] :: NewCard -> Maybe CVC
[newCardName] :: NewCard -> Maybe Name
[newCardAddressLine1] :: NewCard -> Maybe AddressLine1
[newCardAddressLine2] :: NewCard -> Maybe AddressLine2
[newCardAddressCity] :: NewCard -> Maybe AddressCity
[newCardAddressZip] :: NewCard -> Maybe AddressZip
[newCardAddressState] :: NewCard -> Maybe AddressState
[newCardAddressCountry] :: NewCard -> Maybe AddressCountry

-- | Recipient Object
data Recipient
Recipient :: RecipientId -> Text -> UTCTime -> Bool -> RecipientType -> Maybe Description -> Maybe Email -> Name -> Bool -> Maybe BankAccount -> StripeList RecipientCard -> Maybe (Expandable RecipientCardId) -> Recipient
[recipientId] :: Recipient -> RecipientId
[recipientObject] :: Recipient -> Text
[recipientCreated] :: Recipient -> UTCTime
[recipientLiveMode] :: Recipient -> Bool
[recipientType] :: Recipient -> RecipientType
[recipientDescription] :: Recipient -> Maybe Description
[recipientEmail] :: Recipient -> Maybe Email
[recipientName] :: Recipient -> Name
[recipientVerified] :: Recipient -> Bool
[recipientActiveAccount] :: Recipient -> Maybe BankAccount
[recipientCards] :: Recipient -> StripeList RecipientCard
[recipientDefaultCard] :: Recipient -> Maybe (Expandable RecipientCardId)
DeletedRecipient :: Maybe Bool -> RecipientId -> Recipient
[deletedRecipient] :: Recipient -> Maybe Bool
[deletedRecipientId] :: Recipient -> RecipientId

-- | <a>RecipientId</a> for a <a>Recipient</a>
newtype RecipientId
RecipientId :: Text -> RecipientId

-- | Type of <a>Recipient</a>
data RecipientType
Individual :: RecipientType
Corporation :: RecipientType

-- | Routing Number for Bank Account
newtype RoutingNumber
RoutingNumber :: Text -> RoutingNumber

-- | JSON returned from a <tt>Stripe</tt> deletion request
data StripeDeleteResult
StripeDeleteResult :: Bool -> Maybe Text -> StripeDeleteResult
[deleted] :: StripeDeleteResult -> Bool
[deletedId] :: StripeDeleteResult -> Maybe Text

-- | <a>TaxID</a>
newtype TaxID
TaxID :: Text -> TaxID
[getTaxID] :: TaxID -> Text

-- | <a>TokenId</a> of a <a>Token</a>
newtype TokenId
TokenId :: Text -> TokenId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.GetRecipients Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.GetRecipients (Web.Stripe.Types.EndingBefore Web.Stripe.Types.RecipientId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.GetRecipients Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.GetRecipients (Web.Stripe.Types.StartingAfter Web.Stripe.Types.RecipientId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.GetRecipients Web.Stripe.Types.IsVerified
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.UpdateRecipient Web.Stripe.Types.Name
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.UpdateRecipient Web.Stripe.Types.TaxID
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.UpdateRecipient Web.Stripe.Types.NewBankAccount
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.UpdateRecipient Web.Stripe.Types.TokenId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.UpdateRecipient Web.Stripe.Types.NewCard
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.UpdateRecipient Web.Stripe.Types.DefaultCard
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.UpdateRecipient Web.Stripe.Types.CardId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.UpdateRecipient Web.Stripe.Types.Email
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.UpdateRecipient Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.UpdateRecipient Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.GetRecipient Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.CreateRecipient Web.Stripe.Types.TaxID
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.CreateRecipient Web.Stripe.Types.NewBankAccount
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.CreateRecipient Web.Stripe.Types.TokenId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.CreateRecipient Web.Stripe.Types.NewCard
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.CreateRecipient Web.Stripe.Types.CardId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.CreateRecipient Web.Stripe.Types.Email
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.CreateRecipient Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Recipient.CreateRecipient Web.Stripe.Types.MetaData


-- | <a>https://stripe.com/docs/api#plans</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Plan
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config $ do
--         createPlan (PlanId "free plan")
--                    (Amount 0)
--                    USD
--                    Month
--                    (PlanName "a sample free plan")
--     case result of
--       Right plan       -&gt; print plan
--       Left stripeError -&gt; print stripeError
--   </pre>
module Web.Stripe.Plan
data CreatePlan

-- | Create a <a>Plan</a>
createPlan :: PlanId -> Amount -> Currency -> Interval -> PlanName -> StripeRequest CreatePlan
data GetPlan

-- | Retrieve a <a>Plan</a>
getPlan :: PlanId -> StripeRequest GetPlan
data UpdatePlan

-- | Update a <a>Plan</a>
updatePlan :: PlanId -> StripeRequest UpdatePlan
data DeletePlan

-- | Delete a <a>Plan</a>
deletePlan :: PlanId -> StripeRequest DeletePlan
data GetPlans

-- | Retrieve all <a>Plan</a>s
getPlans :: StripeRequest GetPlans

-- | Amount representing a monetary value. Stripe represents pennies as
--   whole numbers i.e. 100 = $1
newtype Amount
Amount :: Int -> Amount
[getAmount] :: Amount -> Int

-- | Stripe supports 138 currencies
data Currency

-- | United Arab Emirates Dirham
AED :: Currency

-- | Afghan Afghani
AFN :: Currency

-- | Albanian Lek
ALL :: Currency

-- | Armenian Dram
AMD :: Currency

-- | Netherlands Antillean Gulden
ANG :: Currency

-- | Angolan Kwanza
AOA :: Currency

-- | Argentine Peso
ARS :: Currency

-- | Australian Dollar
AUD :: Currency

-- | Aruban Florin
AWG :: Currency

-- | Azerbaijani Manat
AZN :: Currency

-- | Bosnia &amp; Herzegovina Convertible Mark
BAM :: Currency

-- | Barbadian Dollar
BBD :: Currency

-- | Bangladeshi Taka
BDT :: Currency

-- | Bulgarian Lev
BGN :: Currency

-- | Burundian Franc
BIF :: Currency

-- | Bermudian Dollar
BMD :: Currency

-- | Brunei Dollar
BND :: Currency

-- | Bolivian Boliviano
BOB :: Currency

-- | Brazilian Real
BRL :: Currency

-- | Bahamian Dollar
BSD :: Currency

-- | Botswana Pula
BWP :: Currency

-- | Belize Dollar
BZD :: Currency

-- | Canadian Dollar
CAD :: Currency

-- | Congolese Franc
CDF :: Currency

-- | Swiss Franc
CHF :: Currency

-- | Chilean Peso
CLP :: Currency

-- | Chinese Renminbi Yuan
CNY :: Currency

-- | Colombian Peso
COP :: Currency

-- | Costa Rican Colón
CRC :: Currency

-- | Cape Verdean Escudo
CVE :: Currency

-- | Czech Koruna
CZK :: Currency

-- | Djiboutian Franc
DJF :: Currency

-- | Danish Krone
DKK :: Currency

-- | Dominican Peso
DOP :: Currency

-- | Algerian Dinar
DZD :: Currency

-- | Estonian Kroon
EEK :: Currency

-- | Egyptian Pound
EGP :: Currency

-- | Ethiopian Birr
ETB :: Currency

-- | Euro
EUR :: Currency

-- | Fijian Dollar
FJD :: Currency

-- | Falkland Islands Pound
FKP :: Currency

-- | British Pound
GBP :: Currency

-- | Georgian Lari
GEL :: Currency

-- | Gibraltar Pound
GIP :: Currency

-- | Gambian Dalasi
GMD :: Currency

-- | Guinean Franc
GNF :: Currency

-- | Guatemalan Quetzal
GTQ :: Currency

-- | Guyanese Dollar
GYD :: Currency

-- | Hong Kong Dollar
HKD :: Currency

-- | Honduran Lempira
HNL :: Currency

-- | Croatian Kuna
HRK :: Currency

-- | Haitian Gourde
HTG :: Currency

-- | Hungarian Forint
HUF :: Currency

-- | Indonesian Rupiah
IDR :: Currency

-- | Israeli New Sheqel
ILS :: Currency

-- | Indian Rupee
INR :: Currency

-- | Icelandic Króna
ISK :: Currency

-- | Jamaican Dollar
JMD :: Currency

-- | Japanese Yen
JPY :: Currency

-- | Kenyan Shilling
KES :: Currency

-- | Kyrgyzstani Som
KGS :: Currency

-- | Cambodian Riel
KHR :: Currency

-- | Comorian Franc
KMF :: Currency

-- | South Korean Won
KRW :: Currency

-- | Cayman Islands Dollar
KYD :: Currency

-- | Kazakhstani Tenge
KZT :: Currency

-- | Lao Kip
LAK :: Currency

-- | Lebanese Pound
LBP :: Currency

-- | Sri Lankan Rupee
LKR :: Currency

-- | Liberian Dollar
LRD :: Currency

-- | Lesotho Loti
LSL :: Currency

-- | Lithuanian Litas
LTL :: Currency

-- | Latvian Lats
LVL :: Currency

-- | Moroccan Dirham
MAD :: Currency

-- | Moldovan Leu
MDL :: Currency

-- | Malagasy Ariary
MGA :: Currency

-- | Macedonian Denar
MKD :: Currency

-- | Mongolian Tögrög
MNT :: Currency

-- | Macanese Pataca
MOP :: Currency

-- | Mauritanian Ouguiya
MRO :: Currency

-- | Mauritian Rupee
MUR :: Currency

-- | Maldivian Rufiyaa
MVR :: Currency

-- | Malawian Kwacha
MWK :: Currency

-- | Mexican Peso
MXN :: Currency

-- | Malaysian Ringgit
MYR :: Currency

-- | Mozambican Metical
MZN :: Currency

-- | Namibian Dollar
NAD :: Currency

-- | Nigerian Naira
NGN :: Currency

-- | Nicaraguan Córdoba
NIO :: Currency

-- | Norwegian Krone
NOK :: Currency

-- | Nepalese Rupee
NPR :: Currency

-- | New Zealand Dollar
NZD :: Currency

-- | Panamanian Balboa
PAB :: Currency

-- | Peruvian Nuevo Sol
PEN :: Currency

-- | Papua New Guinean Kina
PGK :: Currency

-- | Philippine Peso
PHP :: Currency

-- | Pakistani Rupee
PKR :: Currency

-- | Polish Złoty
PLN :: Currency

-- | Paraguayan Guaraní
PYG :: Currency

-- | Qatari Riyal
QAR :: Currency

-- | Romanian Leu
RON :: Currency

-- | Serbian Dinar
RSD :: Currency

-- | Russian Ruble
RUB :: Currency

-- | Rwandan Franc
RWF :: Currency

-- | Saudi Riyal
SAR :: Currency

-- | Solomon Islands Dollar
SBD :: Currency

-- | Seychellois Rupee
SCR :: Currency

-- | Swedish Krona
SEK :: Currency

-- | Singapore Dollar
SGD :: Currency

-- | Saint Helenian Pound
SHP :: Currency

-- | Sierra Leonean Leone
SLL :: Currency

-- | Somali Shilling
SOS :: Currency

-- | Surinamese Dollar
SRD :: Currency

-- | São Tomé and Príncipe Dobra
STD :: Currency

-- | Salvadoran Colón
SVC :: Currency

-- | Swazi Lilangeni
SZL :: Currency

-- | Thai Baht
THB :: Currency

-- | Tajikistani Somoni
TJS :: Currency

-- | Tongan Paʻanga
TOP :: Currency

-- | Turkish Lira
TRY :: Currency

-- | Trinidad and Tobago Dollar
TTD :: Currency

-- | New Taiwan Dollar
TWD :: Currency

-- | Tanzanian Shilling
TZS :: Currency

-- | Ukrainian Hryvnia
UAH :: Currency

-- | Ugandan Shilling
UGX :: Currency

-- | United States Dollar
USD :: Currency

-- | Uruguayan Peso
UYU :: Currency

-- | Uzbekistani Som
UZS :: Currency

-- | Vietnamese Đồng
VND :: Currency

-- | Vanuatu Vatu
VUV :: Currency

-- | Samoan Tala
WST :: Currency

-- | Central African Cfa Franc
XAF :: Currency

-- | East Caribbean Dollar
XCD :: Currency

-- | West African Cfa Franc
XOF :: Currency

-- | Cfp Franc
XPF :: Currency

-- | Yemeni Rial
YER :: Currency

-- | South African Rand
ZAR :: Currency

-- | Zambian Kwacha
ZMW :: Currency

-- | Unknown Currency
UnknownCurrency :: Currency

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | Interval for <a>Plan</a>s
data Interval
Day :: Interval
Week :: Interval
Month :: Interval
Year :: Interval

-- | <a>IntervalCount</a> for a <a>Coupon</a>
newtype IntervalCount
IntervalCount :: Int -> IntervalCount

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | Type of MetaData for use on <tt>Stripe</tt> objects
newtype MetaData
MetaData :: [(Text, Text)] -> MetaData

-- | Plan object
data Plan
Plan :: Interval -> Text -> UTCTime -> Int -> Currency -> PlanId -> Text -> Bool -> Maybe Int -> Maybe Int -> MetaData -> Maybe StatementDescription -> Plan
[planInterval] :: Plan -> Interval
[planName] :: Plan -> Text
[planCreated] :: Plan -> UTCTime
[planAmount] :: Plan -> Int
[planCurrency] :: Plan -> Currency
[planId] :: Plan -> PlanId
[planObject] :: Plan -> Text
[planLiveMode] :: Plan -> Bool
[planIntervalCount] :: Plan -> Maybe Int
[planTrialPeriodDays] :: Plan -> Maybe Int
[planMetaData] :: Plan -> MetaData
[planDescription] :: Plan -> Maybe StatementDescription

-- | <a>PlanId</a> for a <a>Plan</a>
newtype PlanId
PlanId :: Text -> PlanId

-- | a plan name
newtype PlanName
PlanName :: Text -> PlanName
[getPlanName] :: PlanName -> Text

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a

-- | <a>StatementDescription</a> to be added to a <a>Charge</a>
newtype StatementDescription
StatementDescription :: Text -> StatementDescription

-- | JSON returned from a <tt>Stripe</tt> deletion request
data StripeDeleteResult
StripeDeleteResult :: Bool -> Maybe Text -> StripeDeleteResult
[deleted] :: StripeDeleteResult -> Bool
[deletedId] :: StripeDeleteResult -> Maybe Text

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool

-- | <a>TrialPeriodDays</a> for a <a>Coupon</a>
newtype TrialPeriodDays
TrialPeriodDays :: Int -> TrialPeriodDays
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Plan.GetPlans (Web.Stripe.Types.EndingBefore Web.Stripe.Types.PlanId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Plan.GetPlans Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Plan.GetPlans (Web.Stripe.Types.StartingAfter Web.Stripe.Types.PlanId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Plan.UpdatePlan Web.Stripe.Types.PlanName
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Plan.UpdatePlan Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Plan.UpdatePlan Web.Stripe.Types.StatementDescription
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Plan.CreatePlan Web.Stripe.Types.IntervalCount
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Plan.CreatePlan Web.Stripe.Types.TrialPeriodDays
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Plan.CreatePlan Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Plan.CreatePlan Web.Stripe.Types.StatementDescription


-- | <a>https://stripe.com/docs/api#invoiceitems</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Customer
--   import Web.Stripe.InvoiceItem
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config $ createCustomer
--     case result of
--       (Left stripeError) -&gt; print stripeError
--       (Right (Customer { customerId = cid })) -&gt;
--         do result &lt;- stripe config $
--              createInvoiceItem cid (Amount 100) USD
--                -&amp;- (Description "description")
--            case result of
--              Left stripeError  -&gt; print stripeError
--              Right invoiceitem -&gt; print invoiceitem
--   </pre>
module Web.Stripe.InvoiceItem
data CreateInvoiceItem

-- | Create an invoice for a Customer
createInvoiceItem :: CustomerId -> Amount -> Currency -> StripeRequest CreateInvoiceItem
data GetInvoiceItem

-- | Retrieve an <a>InvoiceItem</a> by <a>InvoiceItemId</a>
getInvoiceItem :: InvoiceItemId -> StripeRequest GetInvoiceItem
data UpdateInvoiceItem

-- | Update an <a>InvoiceItem</a> by <a>InvoiceItemId</a>
updateInvoiceItem :: InvoiceItemId -> StripeRequest UpdateInvoiceItem
data DeleteInvoiceItem

-- | Delete an <a>InvoiceItem</a> by <a>InvoiceItemId</a>
deleteInvoiceItem :: InvoiceItemId -> StripeRequest DeleteInvoiceItem
data GetInvoiceItems

-- | List <a>InvoiceItem</a>s
getInvoiceItems :: StripeRequest GetInvoiceItems

-- | <a>InvoiceItemId</a> for <a>InvoiceItem</a>
newtype InvoiceItemId
InvoiceItemId :: Text -> InvoiceItemId

-- | <a>InvoiceItem</a> object
data InvoiceItem
InvoiceItem :: Text -> InvoiceItemId -> UTCTime -> Int -> Bool -> Bool -> Currency -> Expandable CustomerId -> Maybe Description -> Maybe (Expandable InvoiceId) -> Maybe Quantity -> Maybe SubscriptionId -> MetaData -> InvoiceItem
[invoiceItemObject] :: InvoiceItem -> Text
[invoiceItemId] :: InvoiceItem -> InvoiceItemId
[invoiceItemDate] :: InvoiceItem -> UTCTime
[invoiceItemAmount] :: InvoiceItem -> Int
[invoiceItemLiveMode] :: InvoiceItem -> Bool
[invoiceItemProration] :: InvoiceItem -> Bool
[invoiceItemCurrency] :: InvoiceItem -> Currency
[invoiceItemCustomer] :: InvoiceItem -> Expandable CustomerId
[invoiceItemDescription] :: InvoiceItem -> Maybe Description
[invoiceItemInvoice] :: InvoiceItem -> Maybe (Expandable InvoiceId)
[invoiceItemQuantity] :: InvoiceItem -> Maybe Quantity
[invoiceItemSubscription] :: InvoiceItem -> Maybe SubscriptionId
[invoiceItemMetaData] :: InvoiceItem -> MetaData

-- | <a>Created</a>
newtype Created
Created :: UTCTime -> Created

-- | <a>CustomerId</a> for a <a>Customer</a>
newtype CustomerId
CustomerId :: Text -> CustomerId

-- | Stripe supports 138 currencies
data Currency

-- | United Arab Emirates Dirham
AED :: Currency

-- | Afghan Afghani
AFN :: Currency

-- | Albanian Lek
ALL :: Currency

-- | Armenian Dram
AMD :: Currency

-- | Netherlands Antillean Gulden
ANG :: Currency

-- | Angolan Kwanza
AOA :: Currency

-- | Argentine Peso
ARS :: Currency

-- | Australian Dollar
AUD :: Currency

-- | Aruban Florin
AWG :: Currency

-- | Azerbaijani Manat
AZN :: Currency

-- | Bosnia &amp; Herzegovina Convertible Mark
BAM :: Currency

-- | Barbadian Dollar
BBD :: Currency

-- | Bangladeshi Taka
BDT :: Currency

-- | Bulgarian Lev
BGN :: Currency

-- | Burundian Franc
BIF :: Currency

-- | Bermudian Dollar
BMD :: Currency

-- | Brunei Dollar
BND :: Currency

-- | Bolivian Boliviano
BOB :: Currency

-- | Brazilian Real
BRL :: Currency

-- | Bahamian Dollar
BSD :: Currency

-- | Botswana Pula
BWP :: Currency

-- | Belize Dollar
BZD :: Currency

-- | Canadian Dollar
CAD :: Currency

-- | Congolese Franc
CDF :: Currency

-- | Swiss Franc
CHF :: Currency

-- | Chilean Peso
CLP :: Currency

-- | Chinese Renminbi Yuan
CNY :: Currency

-- | Colombian Peso
COP :: Currency

-- | Costa Rican Colón
CRC :: Currency

-- | Cape Verdean Escudo
CVE :: Currency

-- | Czech Koruna
CZK :: Currency

-- | Djiboutian Franc
DJF :: Currency

-- | Danish Krone
DKK :: Currency

-- | Dominican Peso
DOP :: Currency

-- | Algerian Dinar
DZD :: Currency

-- | Estonian Kroon
EEK :: Currency

-- | Egyptian Pound
EGP :: Currency

-- | Ethiopian Birr
ETB :: Currency

-- | Euro
EUR :: Currency

-- | Fijian Dollar
FJD :: Currency

-- | Falkland Islands Pound
FKP :: Currency

-- | British Pound
GBP :: Currency

-- | Georgian Lari
GEL :: Currency

-- | Gibraltar Pound
GIP :: Currency

-- | Gambian Dalasi
GMD :: Currency

-- | Guinean Franc
GNF :: Currency

-- | Guatemalan Quetzal
GTQ :: Currency

-- | Guyanese Dollar
GYD :: Currency

-- | Hong Kong Dollar
HKD :: Currency

-- | Honduran Lempira
HNL :: Currency

-- | Croatian Kuna
HRK :: Currency

-- | Haitian Gourde
HTG :: Currency

-- | Hungarian Forint
HUF :: Currency

-- | Indonesian Rupiah
IDR :: Currency

-- | Israeli New Sheqel
ILS :: Currency

-- | Indian Rupee
INR :: Currency

-- | Icelandic Króna
ISK :: Currency

-- | Jamaican Dollar
JMD :: Currency

-- | Japanese Yen
JPY :: Currency

-- | Kenyan Shilling
KES :: Currency

-- | Kyrgyzstani Som
KGS :: Currency

-- | Cambodian Riel
KHR :: Currency

-- | Comorian Franc
KMF :: Currency

-- | South Korean Won
KRW :: Currency

-- | Cayman Islands Dollar
KYD :: Currency

-- | Kazakhstani Tenge
KZT :: Currency

-- | Lao Kip
LAK :: Currency

-- | Lebanese Pound
LBP :: Currency

-- | Sri Lankan Rupee
LKR :: Currency

-- | Liberian Dollar
LRD :: Currency

-- | Lesotho Loti
LSL :: Currency

-- | Lithuanian Litas
LTL :: Currency

-- | Latvian Lats
LVL :: Currency

-- | Moroccan Dirham
MAD :: Currency

-- | Moldovan Leu
MDL :: Currency

-- | Malagasy Ariary
MGA :: Currency

-- | Macedonian Denar
MKD :: Currency

-- | Mongolian Tögrög
MNT :: Currency

-- | Macanese Pataca
MOP :: Currency

-- | Mauritanian Ouguiya
MRO :: Currency

-- | Mauritian Rupee
MUR :: Currency

-- | Maldivian Rufiyaa
MVR :: Currency

-- | Malawian Kwacha
MWK :: Currency

-- | Mexican Peso
MXN :: Currency

-- | Malaysian Ringgit
MYR :: Currency

-- | Mozambican Metical
MZN :: Currency

-- | Namibian Dollar
NAD :: Currency

-- | Nigerian Naira
NGN :: Currency

-- | Nicaraguan Córdoba
NIO :: Currency

-- | Norwegian Krone
NOK :: Currency

-- | Nepalese Rupee
NPR :: Currency

-- | New Zealand Dollar
NZD :: Currency

-- | Panamanian Balboa
PAB :: Currency

-- | Peruvian Nuevo Sol
PEN :: Currency

-- | Papua New Guinean Kina
PGK :: Currency

-- | Philippine Peso
PHP :: Currency

-- | Pakistani Rupee
PKR :: Currency

-- | Polish Złoty
PLN :: Currency

-- | Paraguayan Guaraní
PYG :: Currency

-- | Qatari Riyal
QAR :: Currency

-- | Romanian Leu
RON :: Currency

-- | Serbian Dinar
RSD :: Currency

-- | Russian Ruble
RUB :: Currency

-- | Rwandan Franc
RWF :: Currency

-- | Saudi Riyal
SAR :: Currency

-- | Solomon Islands Dollar
SBD :: Currency

-- | Seychellois Rupee
SCR :: Currency

-- | Swedish Krona
SEK :: Currency

-- | Singapore Dollar
SGD :: Currency

-- | Saint Helenian Pound
SHP :: Currency

-- | Sierra Leonean Leone
SLL :: Currency

-- | Somali Shilling
SOS :: Currency

-- | Surinamese Dollar
SRD :: Currency

-- | São Tomé and Príncipe Dobra
STD :: Currency

-- | Salvadoran Colón
SVC :: Currency

-- | Swazi Lilangeni
SZL :: Currency

-- | Thai Baht
THB :: Currency

-- | Tajikistani Somoni
TJS :: Currency

-- | Tongan Paʻanga
TOP :: Currency

-- | Turkish Lira
TRY :: Currency

-- | Trinidad and Tobago Dollar
TTD :: Currency

-- | New Taiwan Dollar
TWD :: Currency

-- | Tanzanian Shilling
TZS :: Currency

-- | Ukrainian Hryvnia
UAH :: Currency

-- | Ugandan Shilling
UGX :: Currency

-- | United States Dollar
USD :: Currency

-- | Uruguayan Peso
UYU :: Currency

-- | Uzbekistani Som
UZS :: Currency

-- | Vietnamese Đồng
VND :: Currency

-- | Vanuatu Vatu
VUV :: Currency

-- | Samoan Tala
WST :: Currency

-- | Central African Cfa Franc
XAF :: Currency

-- | East Caribbean Dollar
XCD :: Currency

-- | West African Cfa Franc
XOF :: Currency

-- | Cfp Franc
XPF :: Currency

-- | Yemeni Rial
YER :: Currency

-- | South African Rand
ZAR :: Currency

-- | Zambian Kwacha
ZMW :: Currency

-- | Unknown Currency
UnknownCurrency :: Currency

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | <a>Invoice</a> for a <a>Coupon</a>
newtype InvoiceId
InvoiceId :: Text -> InvoiceId

-- | <a>Invoice</a> Object
data Invoice
Invoice :: UTCTime -> Maybe InvoiceId -> UTCTime -> UTCTime -> StripeList InvoiceLineItem -> Int -> Int -> Expandable CustomerId -> Text -> Bool -> Bool -> Bool -> Bool -> Bool -> Int -> Int -> Currency -> Int -> Maybe Int -> Maybe UTCTime -> Maybe UTCTime -> Maybe (Expandable ChargeId) -> Maybe Discount -> Maybe FeeId -> Maybe SubscriptionId -> Maybe StatementDescription -> Maybe Description -> MetaData -> Invoice
[invoiceDate] :: Invoice -> UTCTime

-- | If upcoming no ID will exist
[invoiceId] :: Invoice -> Maybe InvoiceId
[invoicePeriodStart] :: Invoice -> UTCTime
[invoicePeriodEnd] :: Invoice -> UTCTime
[invoiceLineItems] :: Invoice -> StripeList InvoiceLineItem
[invoiceSubTotal] :: Invoice -> Int
[invoiceTotal] :: Invoice -> Int
[invoiceCustomer] :: Invoice -> Expandable CustomerId
[invoiceObject] :: Invoice -> Text
[invoiceAttempted] :: Invoice -> Bool
[invoiceClosed] :: Invoice -> Bool
[invoiceForgiven] :: Invoice -> Bool
[invoicePaid] :: Invoice -> Bool
[invoiceLiveMode] :: Invoice -> Bool
[invoiceAttemptCount] :: Invoice -> Int
[invoiceAmountDue] :: Invoice -> Int
[invoiceCurrency] :: Invoice -> Currency
[invoiceStartingBalance] :: Invoice -> Int
[invoiceEndingBalance] :: Invoice -> Maybe Int
[invoiceNextPaymentAttempt] :: Invoice -> Maybe UTCTime
[invoiceWebHooksDeliveredAt] :: Invoice -> Maybe UTCTime
[invoiceCharge] :: Invoice -> Maybe (Expandable ChargeId)
[invoiceDiscount] :: Invoice -> Maybe Discount
[invoiceApplicateFee] :: Invoice -> Maybe FeeId
[invoiceSubscription] :: Invoice -> Maybe SubscriptionId
[invoiceStatementDescription] :: Invoice -> Maybe StatementDescription
[invoiceDescription] :: Invoice -> Maybe Description
[invoiceMetaData] :: Invoice -> MetaData

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | <a>SubscriptionId</a> for a <a>Subscription</a>
newtype SubscriptionId
SubscriptionId :: Text -> SubscriptionId
[getSubscriptionId] :: SubscriptionId -> Text

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a

-- | JSON returned from a <tt>Stripe</tt> deletion request
data StripeDeleteResult
StripeDeleteResult :: Bool -> Maybe Text -> StripeDeleteResult
[deleted] :: StripeDeleteResult -> Bool
[deletedId] :: StripeDeleteResult -> Maybe Text

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool

-- | Generic Description for use in constructing API Calls
newtype Description
Description :: Text -> Description

-- | Amount representing a monetary value. Stripe represents pennies as
--   whole numbers i.e. 100 = $1
newtype Amount
Amount :: Int -> Amount
[getAmount] :: Amount -> Int
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.GetInvoiceItems Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.GetInvoiceItems Web.Stripe.Types.Created
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.GetInvoiceItems Web.Stripe.Types.CustomerId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.GetInvoiceItems (Web.Stripe.Types.EndingBefore Web.Stripe.Types.InvoiceItemId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.GetInvoiceItems Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.GetInvoiceItems (Web.Stripe.Types.StartingAfter Web.Stripe.Types.InvoiceItemId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.UpdateInvoiceItem Web.Stripe.Types.Amount
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.UpdateInvoiceItem Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.UpdateInvoiceItem Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.GetInvoiceItem Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.CreateInvoiceItem Web.Stripe.Types.InvoiceId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.CreateInvoiceItem Web.Stripe.Types.SubscriptionId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.CreateInvoiceItem Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.InvoiceItem.CreateInvoiceItem Web.Stripe.Types.MetaData


-- | <a>https://stripe.com/docs/api#invoices</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Customer
--   import Web.Stripe.Invoice
--   import Web.Stripe.InvoiceItem
--   import Web.Stripe.Plan
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (SecretKey "secret_key")
--     result &lt;- stripe config createCustomer
--     case result of
--       (Left stripeError) -&gt; print stripeError
--       (Right (Customer { customerId = cid })) -&gt;
--         do result &lt;- stripe config $
--              createPlan (PlanId "planid") (Amount 20) USD Day (PlanName "testplan")
--            case result of
--              (Left stripeError) -&gt; print stripeError
--              (Right (Plan {})) -&gt;
--                do result &lt;- stripe config $
--                     createInvoiceItem cid (Amount 100) USD
--                   case result of
--                     (Left stripeError)  -&gt; print stripeError
--                     (Right invoiceItem) -&gt;
--                        do result &lt;- stripe config $ createInvoice cid
--                           case result of
--                             (Left  stripeError) -&gt; print stripeError
--                             (Right invoice)     -&gt; print invoice
--   </pre>
module Web.Stripe.Invoice
data CreateInvoice

-- | The <a>Invoice</a> to be created for a <tt>Customer</tt>
createInvoice :: CustomerId -> StripeRequest CreateInvoice
data GetInvoice

-- | Retrieve an <a>Invoice</a> by <a>InvoiceId</a>
getInvoice :: InvoiceId -> StripeRequest GetInvoice
data GetInvoiceLineItems

-- | Retrieve an <a>InvoiceLineItem</a>s by <a>InvoiceId</a>
getInvoiceLineItems :: InvoiceId -> StripeRequest GetInvoiceLineItems
data GetUpcomingInvoice

-- | Retrieve an upcoming <a>Invoice</a> for a <tt>Customer</tt> by
--   <a>CustomerId</a>
getUpcomingInvoice :: CustomerId -> StripeRequest GetUpcomingInvoice
data UpdateInvoice

-- | Update <a>Invoice</a> by <a>InvoiceId</a>
updateInvoice :: InvoiceId -> StripeRequest UpdateInvoice
data PayInvoice

-- | Pay <a>Invoice</a> by <a>InvoiceId</a>
payInvoice :: InvoiceId -> StripeRequest PayInvoice
data GetInvoices

-- | Retrieve a <a>StripeList</a> of <a>Invoice</a>s
getInvoices :: StripeRequest GetInvoices

-- | <a>PlanId</a> for a <a>Plan</a>
newtype ApplicationFeeId
ApplicationFeeId :: Text -> ApplicationFeeId

-- | <a>Closed</a> - invoice closed or not
newtype Closed
Closed :: Bool -> Closed
[getClosed] :: Closed -> Bool

-- | <a>CustomerId</a> for a <a>Customer</a>
newtype CustomerId
CustomerId :: Text -> CustomerId

-- | Generic Description for use in constructing API Calls
newtype Description
Description :: Text -> Description

-- | <a>Discount</a> for <a>Coupon</a>
data Discount
Discount :: Coupon -> UTCTime -> Maybe UTCTime -> Expandable CustomerId -> Text -> Maybe SubscriptionId -> Discount
[discountCoupon] :: Discount -> Coupon
[discountStart] :: Discount -> UTCTime
[discountEnd] :: Discount -> Maybe UTCTime
[discountCustomer] :: Discount -> Expandable CustomerId
[discountObject] :: Discount -> Text
[discountSubscription] :: Discount -> Maybe SubscriptionId

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | <a>Forgiven</a> - invoice forgiven or not
newtype Forgiven
Forgiven :: Bool -> Forgiven
[getForgiven] :: Forgiven -> Bool

-- | <a>Invoice</a> Object
data Invoice
Invoice :: UTCTime -> Maybe InvoiceId -> UTCTime -> UTCTime -> StripeList InvoiceLineItem -> Int -> Int -> Expandable CustomerId -> Text -> Bool -> Bool -> Bool -> Bool -> Bool -> Int -> Int -> Currency -> Int -> Maybe Int -> Maybe UTCTime -> Maybe UTCTime -> Maybe (Expandable ChargeId) -> Maybe Discount -> Maybe FeeId -> Maybe SubscriptionId -> Maybe StatementDescription -> Maybe Description -> MetaData -> Invoice
[invoiceDate] :: Invoice -> UTCTime

-- | If upcoming no ID will exist
[invoiceId] :: Invoice -> Maybe InvoiceId
[invoicePeriodStart] :: Invoice -> UTCTime
[invoicePeriodEnd] :: Invoice -> UTCTime
[invoiceLineItems] :: Invoice -> StripeList InvoiceLineItem
[invoiceSubTotal] :: Invoice -> Int
[invoiceTotal] :: Invoice -> Int
[invoiceCustomer] :: Invoice -> Expandable CustomerId
[invoiceObject] :: Invoice -> Text
[invoiceAttempted] :: Invoice -> Bool
[invoiceClosed] :: Invoice -> Bool
[invoiceForgiven] :: Invoice -> Bool
[invoicePaid] :: Invoice -> Bool
[invoiceLiveMode] :: Invoice -> Bool
[invoiceAttemptCount] :: Invoice -> Int
[invoiceAmountDue] :: Invoice -> Int
[invoiceCurrency] :: Invoice -> Currency
[invoiceStartingBalance] :: Invoice -> Int
[invoiceEndingBalance] :: Invoice -> Maybe Int
[invoiceNextPaymentAttempt] :: Invoice -> Maybe UTCTime
[invoiceWebHooksDeliveredAt] :: Invoice -> Maybe UTCTime
[invoiceCharge] :: Invoice -> Maybe (Expandable ChargeId)
[invoiceDiscount] :: Invoice -> Maybe Discount
[invoiceApplicateFee] :: Invoice -> Maybe FeeId
[invoiceSubscription] :: Invoice -> Maybe SubscriptionId
[invoiceStatementDescription] :: Invoice -> Maybe StatementDescription
[invoiceDescription] :: Invoice -> Maybe Description
[invoiceMetaData] :: Invoice -> MetaData

-- | <a>Invoice</a> for a <a>Coupon</a>
newtype InvoiceId
InvoiceId :: Text -> InvoiceId

-- | <a>InvoiceLineItem</a> Object
data InvoiceLineItem
InvoiceLineItem :: InvoiceLineItemId -> Text -> InvoiceLineItemType -> Bool -> Int -> Currency -> Bool -> Period -> Maybe Quantity -> Maybe Plan -> Maybe Description -> MetaData -> InvoiceLineItem
[invoiceLineItemId] :: InvoiceLineItem -> InvoiceLineItemId
[invoiceLineItemObject] :: InvoiceLineItem -> Text
[invoiceLineItemType] :: InvoiceLineItem -> InvoiceLineItemType
[invoiceLineItemLiveMode] :: InvoiceLineItem -> Bool
[invoiceLineItemAmount] :: InvoiceLineItem -> Int
[invoiceLineItemCurrency] :: InvoiceLineItem -> Currency
[invoiceLineItemProration] :: InvoiceLineItem -> Bool
[invoiceLineItemPeriod] :: InvoiceLineItem -> Period
[invoiceLineItemQuantity] :: InvoiceLineItem -> Maybe Quantity
[invoiceLineItemPlan] :: InvoiceLineItem -> Maybe Plan
[invoiceLineItemDescription] :: InvoiceLineItem -> Maybe Description
[invoiceLineItemMetaData] :: InvoiceLineItem -> MetaData

-- | <a>InvoiceLineItemId</a> for an <a>InvoiceLineItem</a>
newtype InvoiceLineItemId
InvoiceLineItemId :: Text -> InvoiceLineItemId

-- | Type of <a>InvoiceItem</a>
data InvoiceLineItemType
InvoiceItemType :: InvoiceLineItemType
SubscriptionItemType :: InvoiceLineItemType

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | Type of MetaData for use on <tt>Stripe</tt> objects
newtype MetaData
MetaData :: [(Text, Text)] -> MetaData

-- | Period for an <a>InvoiceLineItem</a>
data Period
Period :: UTCTime -> UTCTime -> Period
[start] :: Period -> UTCTime
[end] :: Period -> UTCTime

-- | <a>StatementDescription</a> to be added to a <a>Charge</a>
newtype StatementDescription
StatementDescription :: Text -> StatementDescription

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool

-- | <a>SubscriptionId</a> for a <a>Subscription</a>
newtype SubscriptionId
SubscriptionId :: Text -> SubscriptionId
[getSubscriptionId] :: SubscriptionId -> Text
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.UpdateInvoice Web.Stripe.Types.ApplicationFeeId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.UpdateInvoice Web.Stripe.Types.Closed
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.UpdateInvoice Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.UpdateInvoice Web.Stripe.Types.Forgiven
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.UpdateInvoice Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.UpdateInvoice Web.Stripe.Types.StatementDescription
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.GetUpcomingInvoice Web.Stripe.Types.SubscriptionId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.GetInvoiceLineItems Web.Stripe.Types.CustomerId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.GetInvoiceLineItems (Web.Stripe.Types.EndingBefore Web.Stripe.Types.InvoiceLineItemId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.GetInvoiceLineItems Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.GetInvoiceLineItems (Web.Stripe.Types.StartingAfter Web.Stripe.Types.InvoiceLineItemId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.GetInvoiceLineItems Web.Stripe.Types.SubscriptionId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.GetInvoices Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.GetInvoices (Web.Stripe.Types.EndingBefore Web.Stripe.Types.InvoiceId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.GetInvoices Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.GetInvoices (Web.Stripe.Types.StartingAfter Web.Stripe.Types.InvoiceId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.GetInvoice Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.CreateInvoice Web.Stripe.Types.ApplicationFeeId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.CreateInvoice Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.CreateInvoice Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.CreateInvoice Web.Stripe.Types.StatementDescription
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Invoice.CreateInvoice Web.Stripe.Types.SubscriptionId


-- | <a>https://stripe.com/docs/api#events</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Event
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config $ getEvents
--     case result of
--       Right events     -&gt; print events
--       Left stripeError -&gt; print stripeError
--   </pre>
module Web.Stripe.Event
data GetEvent

-- | <a>Event</a> to retrieve by <a>EventId</a>
getEvent :: EventId -> StripeRequest GetEvent
data GetEvents

-- | <a>StripeList</a> of <a>Event</a>s to retrieve
getEvents :: StripeRequest GetEvents

-- | <a>Created</a>
newtype Created
Created :: UTCTime -> Created

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | <a>EventId</a> of an <a>Event</a>
newtype EventId
EventId :: Text -> EventId

-- | <a>Event</a> Object
data Event
Event :: Maybe EventId -> UTCTime -> Bool -> EventType -> EventData -> Text -> Int -> Maybe Text -> Event
[eventId] :: Event -> Maybe EventId
[eventCreated] :: Event -> UTCTime
[eventLiveMode] :: Event -> Bool
[eventType] :: Event -> EventType
[eventData] :: Event -> EventData
[eventObject] :: Event -> Text
[eventPendingWebHooks] :: Event -> Int
[eventRequest] :: Event -> Maybe Text

-- | EventData
data EventData
TransferEvent :: Transfer -> EventData
AccountEvent :: Account -> EventData
AccountApplicationEvent :: ConnectApp -> EventData
ApplicationFeeEvent :: ApplicationFee -> EventData
InvoiceEvent :: Invoice -> EventData
PlanEvent :: Plan -> EventData
RecipientEvent :: Recipient -> EventData
CouponEvent :: Coupon -> EventData
BalanceEvent :: Balance -> EventData
ChargeEvent :: Charge -> EventData
DisputeEvent :: Dispute -> EventData
CustomerEvent :: Customer -> EventData
CardEvent :: Card -> EventData
SubscriptionEvent :: Subscription -> EventData
DiscountEvent :: Discount -> EventData
InvoiceItemEvent :: InvoiceItem -> EventData
UnknownEventData :: EventData
Ping :: EventData

-- | <a>Event</a> Types
data EventType
AccountUpdatedEvent :: EventType
AccountApplicationDeauthorizedEvent :: EventType
ApplicationFeeCreatedEvent :: EventType
ApplicationFeeRefundedEvent :: EventType
BalanceAvailableEvent :: EventType
ChargeSucceededEvent :: EventType
ChargeFailedEvent :: EventType
ChargeRefundedEvent :: EventType
ChargeCapturedEvent :: EventType
ChargeUpdatedEvent :: EventType
ChargeDisputeCreatedEvent :: EventType
ChargeDisputeUpdatedEvent :: EventType
ChargeDisputeClosedEvent :: EventType
ChargeDisputeFundsWithdrawnEvent :: EventType
ChargeDisputeFundsReinstatedEvent :: EventType
CustomerCreatedEvent :: EventType
CustomerUpdatedEvent :: EventType
CustomerDeletedEvent :: EventType
CustomerCardCreatedEvent :: EventType
CustomerCardUpdatedEvent :: EventType
CustomerCardDeletedEvent :: EventType
CustomerSubscriptionCreatedEvent :: EventType
CustomerSubscriptionUpdatedEvent :: EventType
CustomerSubscriptionDeletedEvent :: EventType
CustomerSubscriptionTrialWillEndEvent :: EventType
CustomerDiscountCreatedEvent :: EventType
CustomerDiscountUpdatedEvent :: EventType
CustomerDiscountDeletedEvent :: EventType
InvoiceCreatedEvent :: EventType
InvoiceUpdatedEvent :: EventType
InvoicePaymentSucceededEvent :: EventType
InvoicePaymentFailedEvent :: EventType
InvoiceItemCreatedEvent :: EventType
InvoiceItemUpdatedEvent :: EventType
InvoiceItemDeletedEvent :: EventType
PlanCreatedEvent :: EventType
PlanUpdatedEvent :: EventType
PlanDeletedEvent :: EventType
CouponCreatedEvent :: EventType
CouponUpdatedEvent :: EventType
CouponDeletedEvent :: EventType
RecipientCreatedEvent :: EventType
RecipientUpdatedEvent :: EventType
RecipientDeletedEvent :: EventType
TransferCreatedEvent :: EventType
TransferUpdatedEvent :: EventType
TransferCanceledEvent :: EventType
TransferPaidEvent :: EventType
TransferFailedEvent :: EventType
PingEvent :: EventType
UnknownEvent :: EventType

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Event.GetEvents Web.Stripe.Types.Created
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Event.GetEvents (Web.Stripe.Types.EndingBefore Web.Stripe.Types.EventId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Event.GetEvents Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Event.GetEvents (Web.Stripe.Types.StartingAfter Web.Stripe.Types.EventId)


-- | <a>https://stripe.com/docs/api#diputes</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Charge
--   import Web.Stripe.Dispute
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config $ getCharge (ChargeId "charge_id")
--     case result of
--       (Left stripeError) -&gt; print stripeError
--       (Right (Charge { chargeDispute = dispute })) -&gt;
--         case dispute of
--          (Just dispute) -&gt; print dispute
--          Nothing        -&gt; print "no dispute on this charge"
--   </pre>
module Web.Stripe.Dispute
data UpdateDispute

-- | <a>Dispute</a> to be updated
updateDispute :: ChargeId -> StripeRequest UpdateDispute
data CloseDispute

-- | <a>Dispute</a> to be closed
closeDispute :: ChargeId -> StripeRequest CloseDispute

-- | <a>ChargeId</a> associated with a <a>Charge</a>
newtype ChargeId
ChargeId :: Text -> ChargeId

-- | <a>Dispute</a> Object
data Dispute
Dispute :: Expandable ChargeId -> Int -> UTCTime -> DisputeStatus -> Bool -> Currency -> Text -> DisputeReason -> Bool -> [BalanceTransaction] -> UTCTime -> Maybe Evidence -> MetaData -> Dispute
[disputeChargeId] :: Dispute -> Expandable ChargeId
[disputeAmount] :: Dispute -> Int
[disputeCreated] :: Dispute -> UTCTime
[disputeStatus] :: Dispute -> DisputeStatus
[disputeLiveMode] :: Dispute -> Bool
[disputeCurrency] :: Dispute -> Currency
[disputeObject] :: Dispute -> Text
[disputeReason] :: Dispute -> DisputeReason
[disputeIsChargeRefundable] :: Dispute -> Bool
[disputeBalanceTransactions] :: Dispute -> [BalanceTransaction]
[disputeEvidenceDueBy] :: Dispute -> UTCTime
[disputeEvidence] :: Dispute -> Maybe Evidence
[disputeMetaData] :: Dispute -> MetaData

-- | Reason of a <a>Dispute</a>
data DisputeReason
Duplicate :: DisputeReason
Fraudulent :: DisputeReason
SubscriptionCanceled :: DisputeReason
ProductUnacceptable :: DisputeReason
ProductNotReceived :: DisputeReason
Unrecognized :: DisputeReason
CreditNotProcessed :: DisputeReason
General :: DisputeReason

-- | Status of a <a>Dispute</a>
data DisputeStatus
WarningNeedsResponse :: DisputeStatus
WarningUnderReview :: DisputeStatus
NeedsResponse :: DisputeStatus
UnderReview :: DisputeStatus
ChargeRefunded :: DisputeStatus
Won :: DisputeStatus
Lost :: DisputeStatus

-- | <a>Evidence</a> associated with a <a>Dispute</a>
newtype Evidence
Evidence :: Text -> Evidence

-- | Type of MetaData for use on <tt>Stripe</tt> objects
newtype MetaData
MetaData :: [(Text, Text)] -> MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Dispute.UpdateDispute Web.Stripe.Types.Evidence
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Dispute.UpdateDispute Web.Stripe.Types.MetaData


-- | <a>https://stripe.com/docs/api#discounts</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Discount
--   import Web.Stripe.Customer
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config $ deleteCustomerDiscount (CustomerId "customer_id")
--     case result of
--       Right deleteResult -&gt; print deleteResult
--       Left  stripeError  -&gt; print stripeError
--   </pre>
module Web.Stripe.Discount
data DeleteCustomerDiscount

-- | Delete <tt>Customer</tt> <a>Discount</a> by <a>CustomerId</a>
deleteCustomerDiscount :: CustomerId -> StripeRequest DeleteCustomerDiscount
data DeleteSubscriptionDiscount

-- | Delete <tt>Subscription</tt> <a>Discount</a> by <a>CustomerId</a> and
--   <a>SubscriptionId</a>
deleteSubscriptionDiscount :: CustomerId -> SubscriptionId -> StripeRequest DeleteSubscriptionDiscount

-- | JSON returned from a <tt>Stripe</tt> deletion request
data StripeDeleteResult
StripeDeleteResult :: Bool -> Maybe Text -> StripeDeleteResult
[deleted] :: StripeDeleteResult -> Bool
[deletedId] :: StripeDeleteResult -> Maybe Text

-- | <a>CustomerId</a> for a <a>Customer</a>
newtype CustomerId
CustomerId :: Text -> CustomerId

-- | <a>SubscriptionId</a> for a <a>Subscription</a>
newtype SubscriptionId
SubscriptionId :: Text -> SubscriptionId
[getSubscriptionId] :: SubscriptionId -> Text

-- | <a>Discount</a> for <a>Coupon</a>
data Discount
Discount :: Coupon -> UTCTime -> Maybe UTCTime -> Expandable CustomerId -> Text -> Maybe SubscriptionId -> Discount
[discountCoupon] :: Discount -> Coupon
[discountStart] :: Discount -> UTCTime
[discountEnd] :: Discount -> Maybe UTCTime
[discountCustomer] :: Discount -> Expandable CustomerId
[discountObject] :: Discount -> Text
[discountSubscription] :: Discount -> Maybe SubscriptionId


-- | <a>https://stripe.com/docs/api#customers</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Customer
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config createCustomer
--     case result of
--       Right customer    -&gt; print customer
--       Left  stripeError -&gt; print stripeError
--   </pre>
module Web.Stripe.Customer
data CreateCustomer

-- | Create a customer
createCustomer :: StripeRequest CreateCustomer
data GetCustomer

-- | Retrieve a customer
getCustomer :: CustomerId -> StripeRequest GetCustomer
data UpdateCustomer

-- | Update a <a>Customer</a>
updateCustomer :: CustomerId -> StripeRequest UpdateCustomer

-- | Deletes the specified <a>Customer</a>
data DeleteCustomer
deleteCustomer :: CustomerId -> StripeRequest DeleteCustomer
data GetCustomers

-- | Retrieve up to 100 customers at a time
getCustomers :: StripeRequest GetCustomers

-- | AccountBalance for a <a>Customer</a>
newtype AccountBalance
AccountBalance :: Int -> AccountBalance

-- | CardId for a <a>Customer</a>
newtype CardId
CardId :: Text -> CardId

-- | Number associated with a <a>Card</a>
newtype CardNumber
CardNumber :: Text -> CardNumber

-- | <a>CouponId</a> for a <a>Coupon</a>
newtype CouponId
CouponId :: Text -> CouponId

-- | <a>Created</a>
newtype Created
Created :: UTCTime -> Created

-- | <a>Customer</a> object
data Customer
Customer :: Text -> UTCTime -> CustomerId -> Bool -> Maybe Description -> Maybe Email -> Bool -> StripeList Subscription -> Maybe Discount -> Int -> StripeList Card -> Maybe Currency -> Maybe (Expandable CardId) -> MetaData -> Customer
[customerObject] :: Customer -> Text
[customerCreated] :: Customer -> UTCTime
[customerId] :: Customer -> CustomerId
[customerLiveMode] :: Customer -> Bool
[customerDescription] :: Customer -> Maybe Description
[customerEmail] :: Customer -> Maybe Email
[customerDelinquent] :: Customer -> Bool
[customerSubscriptions] :: Customer -> StripeList Subscription
[customerDiscount] :: Customer -> Maybe Discount
[customerAccountBalance] :: Customer -> Int
[customerCards] :: Customer -> StripeList Card
[customerCurrency] :: Customer -> Maybe Currency
[customerDefaultCard] :: Customer -> Maybe (Expandable CardId)
[customerMetaData] :: Customer -> MetaData
DeletedCustomer :: Maybe Bool -> CustomerId -> Customer
[deletedCustomer] :: Customer -> Maybe Bool
[deletedCustomerId] :: Customer -> CustomerId

-- | <a>CustomerId</a> for a <a>Customer</a>
newtype CustomerId
CustomerId :: Text -> CustomerId

-- | CVC for a <a>Card</a>
newtype CVC
CVC :: Text -> CVC

-- | Generic Description for use in constructing API Calls
newtype Description
Description :: Text -> Description

-- | <a>Email</a> associated with a <a>Customer</a>, <a>Recipient</a> or
--   <a>Charge</a>
newtype Email
Email :: Text -> Email

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | Expiration Month for a <a>Card</a>
newtype ExpMonth
ExpMonth :: Int -> ExpMonth

-- | Expiration Year for a <a>Card</a>
newtype ExpYear
ExpYear :: Int -> ExpYear

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | Type of MetaData for use on <tt>Stripe</tt> objects
newtype MetaData
MetaData :: [(Text, Text)] -> MetaData

-- | create a <a>NewCard</a> with only the required fields
mkNewCard :: CardNumber -> ExpMonth -> ExpYear -> NewCard

-- | <a>NewCard</a> contains the data needed to create a new <a>Card</a>
data NewCard
NewCard :: CardNumber -> ExpMonth -> ExpYear -> Maybe CVC -> Maybe Name -> Maybe AddressLine1 -> Maybe AddressLine2 -> Maybe AddressCity -> Maybe AddressZip -> Maybe AddressState -> Maybe AddressCountry -> NewCard
[newCardCardNumber] :: NewCard -> CardNumber
[newCardExpMonth] :: NewCard -> ExpMonth
[newCardExpYear] :: NewCard -> ExpYear
[newCardCVC] :: NewCard -> Maybe CVC
[newCardName] :: NewCard -> Maybe Name
[newCardAddressLine1] :: NewCard -> Maybe AddressLine1
[newCardAddressLine2] :: NewCard -> Maybe AddressLine2
[newCardAddressCity] :: NewCard -> Maybe AddressCity
[newCardAddressZip] :: NewCard -> Maybe AddressZip
[newCardAddressState] :: NewCard -> Maybe AddressState
[newCardAddressCountry] :: NewCard -> Maybe AddressCountry

-- | <a>PlanId</a> for a <a>Plan</a>
newtype PlanId
PlanId :: Text -> PlanId

-- | Generic <a>Quantity</a> type to be used with <a>Customer</a>,
--   <a>Subscription</a> and <a>InvoiceLineItem</a> API requests
newtype Quantity
Quantity :: Int -> Quantity

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a

-- | JSON returned from a <tt>Stripe</tt> deletion request
data StripeDeleteResult
StripeDeleteResult :: Bool -> Maybe Text -> StripeDeleteResult
[deleted] :: StripeDeleteResult -> Bool
[deletedId] :: StripeDeleteResult -> Maybe Text

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool

-- | <a>TokenId</a> of a <a>Token</a>
newtype TokenId
TokenId :: Text -> TokenId

-- | <a>TrialEnd</a> for a Plan
newtype TrialEnd
TrialEnd :: UTCTime -> TrialEnd
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.GetCustomers Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.GetCustomers Web.Stripe.Types.Created
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.GetCustomers (Web.Stripe.Types.EndingBefore Web.Stripe.Types.CustomerId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.GetCustomers Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.GetCustomers (Web.Stripe.Types.StartingAfter Web.Stripe.Types.CustomerId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.UpdateCustomer Web.Stripe.Types.AccountBalance
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.UpdateCustomer Web.Stripe.Types.TokenId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.UpdateCustomer Web.Stripe.Types.NewCard
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.UpdateCustomer Web.Stripe.Types.CouponId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.UpdateCustomer Web.Stripe.Types.DefaultCard
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.UpdateCustomer Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.UpdateCustomer Web.Stripe.Types.Email
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.UpdateCustomer Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.GetCustomer Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.CreateCustomer Web.Stripe.Types.AccountBalance
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.CreateCustomer Web.Stripe.Types.NewCard
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.CreateCustomer Web.Stripe.Types.TokenId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.CreateCustomer Web.Stripe.Types.CouponId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.CreateCustomer Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.CreateCustomer Web.Stripe.Types.Email
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.CreateCustomer Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.CreateCustomer Web.Stripe.Types.PlanId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.CreateCustomer Web.Stripe.Types.Quantity
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Customer.CreateCustomer Web.Stripe.Types.TrialEnd


-- | <a>https://stripe.com/docs/api#coupons</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Coupon
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config $
--                createCoupon (Just $ CouponId "$1 Off!") Once
--                 -&amp;- (AmountOff 1)
--                 -&amp;- USD
--     case result of
--       Right coupon      -&gt; print coupon
--       Left  stripeError -&gt; print stripeError
--   </pre>
module Web.Stripe.Coupon
data CreateCoupon

-- | Create <a>Coupon</a>
createCoupon :: Maybe CouponId -> Duration -> StripeRequest CreateCoupon
data GetCoupon

-- | Retrieve <a>Coupon</a>
getCoupon :: CouponId -> StripeRequest GetCoupon
data UpdateCoupon

-- | Update <a>Coupon</a>
updateCoupon :: CouponId -> StripeRequest UpdateCoupon
data DeleteCoupon

-- | Delete <a>Coupon</a>
deleteCoupon :: CouponId -> StripeRequest DeleteCoupon
data GetCoupons

-- | Retrieve a list of <a>Coupon</a>s
getCoupons :: StripeRequest GetCoupons

-- | <a>AmountOff</a> for a <a>Coupon</a>
newtype AmountOff
AmountOff :: Int -> AmountOff

-- | <a>Coupon</a> Object
data Coupon
Coupon :: CouponId -> UTCTime -> Maybe Int -> Maybe Int -> Maybe Currency -> Bool -> Duration -> Maybe UTCTime -> Maybe Int -> Maybe Int -> Maybe Int -> Bool -> MetaData -> Coupon
[couponId] :: Coupon -> CouponId
[couponCreated] :: Coupon -> UTCTime
[couponPercentOff] :: Coupon -> Maybe Int
[couponAmountOff] :: Coupon -> Maybe Int
[couponCurrency] :: Coupon -> Maybe Currency
[couponLiveMode] :: Coupon -> Bool
[couponDuration] :: Coupon -> Duration
[couponRedeemBy] :: Coupon -> Maybe UTCTime
[couponMaxRedemptions] :: Coupon -> Maybe Int
[couponTimesRedeemed] :: Coupon -> Maybe Int
[couponDurationInMonths] :: Coupon -> Maybe Int
[couponValid] :: Coupon -> Bool
[couponMetaData] :: Coupon -> MetaData

-- | <a>CouponId</a> for a <a>Coupon</a>
newtype CouponId
CouponId :: Text -> CouponId

-- | Stripe supports 138 currencies
data Currency

-- | United Arab Emirates Dirham
AED :: Currency

-- | Afghan Afghani
AFN :: Currency

-- | Albanian Lek
ALL :: Currency

-- | Armenian Dram
AMD :: Currency

-- | Netherlands Antillean Gulden
ANG :: Currency

-- | Angolan Kwanza
AOA :: Currency

-- | Argentine Peso
ARS :: Currency

-- | Australian Dollar
AUD :: Currency

-- | Aruban Florin
AWG :: Currency

-- | Azerbaijani Manat
AZN :: Currency

-- | Bosnia &amp; Herzegovina Convertible Mark
BAM :: Currency

-- | Barbadian Dollar
BBD :: Currency

-- | Bangladeshi Taka
BDT :: Currency

-- | Bulgarian Lev
BGN :: Currency

-- | Burundian Franc
BIF :: Currency

-- | Bermudian Dollar
BMD :: Currency

-- | Brunei Dollar
BND :: Currency

-- | Bolivian Boliviano
BOB :: Currency

-- | Brazilian Real
BRL :: Currency

-- | Bahamian Dollar
BSD :: Currency

-- | Botswana Pula
BWP :: Currency

-- | Belize Dollar
BZD :: Currency

-- | Canadian Dollar
CAD :: Currency

-- | Congolese Franc
CDF :: Currency

-- | Swiss Franc
CHF :: Currency

-- | Chilean Peso
CLP :: Currency

-- | Chinese Renminbi Yuan
CNY :: Currency

-- | Colombian Peso
COP :: Currency

-- | Costa Rican Colón
CRC :: Currency

-- | Cape Verdean Escudo
CVE :: Currency

-- | Czech Koruna
CZK :: Currency

-- | Djiboutian Franc
DJF :: Currency

-- | Danish Krone
DKK :: Currency

-- | Dominican Peso
DOP :: Currency

-- | Algerian Dinar
DZD :: Currency

-- | Estonian Kroon
EEK :: Currency

-- | Egyptian Pound
EGP :: Currency

-- | Ethiopian Birr
ETB :: Currency

-- | Euro
EUR :: Currency

-- | Fijian Dollar
FJD :: Currency

-- | Falkland Islands Pound
FKP :: Currency

-- | British Pound
GBP :: Currency

-- | Georgian Lari
GEL :: Currency

-- | Gibraltar Pound
GIP :: Currency

-- | Gambian Dalasi
GMD :: Currency

-- | Guinean Franc
GNF :: Currency

-- | Guatemalan Quetzal
GTQ :: Currency

-- | Guyanese Dollar
GYD :: Currency

-- | Hong Kong Dollar
HKD :: Currency

-- | Honduran Lempira
HNL :: Currency

-- | Croatian Kuna
HRK :: Currency

-- | Haitian Gourde
HTG :: Currency

-- | Hungarian Forint
HUF :: Currency

-- | Indonesian Rupiah
IDR :: Currency

-- | Israeli New Sheqel
ILS :: Currency

-- | Indian Rupee
INR :: Currency

-- | Icelandic Króna
ISK :: Currency

-- | Jamaican Dollar
JMD :: Currency

-- | Japanese Yen
JPY :: Currency

-- | Kenyan Shilling
KES :: Currency

-- | Kyrgyzstani Som
KGS :: Currency

-- | Cambodian Riel
KHR :: Currency

-- | Comorian Franc
KMF :: Currency

-- | South Korean Won
KRW :: Currency

-- | Cayman Islands Dollar
KYD :: Currency

-- | Kazakhstani Tenge
KZT :: Currency

-- | Lao Kip
LAK :: Currency

-- | Lebanese Pound
LBP :: Currency

-- | Sri Lankan Rupee
LKR :: Currency

-- | Liberian Dollar
LRD :: Currency

-- | Lesotho Loti
LSL :: Currency

-- | Lithuanian Litas
LTL :: Currency

-- | Latvian Lats
LVL :: Currency

-- | Moroccan Dirham
MAD :: Currency

-- | Moldovan Leu
MDL :: Currency

-- | Malagasy Ariary
MGA :: Currency

-- | Macedonian Denar
MKD :: Currency

-- | Mongolian Tögrög
MNT :: Currency

-- | Macanese Pataca
MOP :: Currency

-- | Mauritanian Ouguiya
MRO :: Currency

-- | Mauritian Rupee
MUR :: Currency

-- | Maldivian Rufiyaa
MVR :: Currency

-- | Malawian Kwacha
MWK :: Currency

-- | Mexican Peso
MXN :: Currency

-- | Malaysian Ringgit
MYR :: Currency

-- | Mozambican Metical
MZN :: Currency

-- | Namibian Dollar
NAD :: Currency

-- | Nigerian Naira
NGN :: Currency

-- | Nicaraguan Córdoba
NIO :: Currency

-- | Norwegian Krone
NOK :: Currency

-- | Nepalese Rupee
NPR :: Currency

-- | New Zealand Dollar
NZD :: Currency

-- | Panamanian Balboa
PAB :: Currency

-- | Peruvian Nuevo Sol
PEN :: Currency

-- | Papua New Guinean Kina
PGK :: Currency

-- | Philippine Peso
PHP :: Currency

-- | Pakistani Rupee
PKR :: Currency

-- | Polish Złoty
PLN :: Currency

-- | Paraguayan Guaraní
PYG :: Currency

-- | Qatari Riyal
QAR :: Currency

-- | Romanian Leu
RON :: Currency

-- | Serbian Dinar
RSD :: Currency

-- | Russian Ruble
RUB :: Currency

-- | Rwandan Franc
RWF :: Currency

-- | Saudi Riyal
SAR :: Currency

-- | Solomon Islands Dollar
SBD :: Currency

-- | Seychellois Rupee
SCR :: Currency

-- | Swedish Krona
SEK :: Currency

-- | Singapore Dollar
SGD :: Currency

-- | Saint Helenian Pound
SHP :: Currency

-- | Sierra Leonean Leone
SLL :: Currency

-- | Somali Shilling
SOS :: Currency

-- | Surinamese Dollar
SRD :: Currency

-- | São Tomé and Príncipe Dobra
STD :: Currency

-- | Salvadoran Colón
SVC :: Currency

-- | Swazi Lilangeni
SZL :: Currency

-- | Thai Baht
THB :: Currency

-- | Tajikistani Somoni
TJS :: Currency

-- | Tongan Paʻanga
TOP :: Currency

-- | Turkish Lira
TRY :: Currency

-- | Trinidad and Tobago Dollar
TTD :: Currency

-- | New Taiwan Dollar
TWD :: Currency

-- | Tanzanian Shilling
TZS :: Currency

-- | Ukrainian Hryvnia
UAH :: Currency

-- | Ugandan Shilling
UGX :: Currency

-- | United States Dollar
USD :: Currency

-- | Uruguayan Peso
UYU :: Currency

-- | Uzbekistani Som
UZS :: Currency

-- | Vietnamese Đồng
VND :: Currency

-- | Vanuatu Vatu
VUV :: Currency

-- | Samoan Tala
WST :: Currency

-- | Central African Cfa Franc
XAF :: Currency

-- | East Caribbean Dollar
XCD :: Currency

-- | West African Cfa Franc
XOF :: Currency

-- | Cfp Franc
XPF :: Currency

-- | Yemeni Rial
YER :: Currency

-- | South African Rand
ZAR :: Currency

-- | Zambian Kwacha
ZMW :: Currency

-- | Unknown Currency
UnknownCurrency :: Currency

-- | <a>Coupon</a> Duration
data Duration
Forever :: Duration
Once :: Duration
Repeating :: Duration

-- | <a>DurationInMonths</a> for a <a>Coupon</a>
newtype DurationInMonths
DurationInMonths :: Int -> DurationInMonths

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | <a>MaxRedemptions</a> for a <a>Coupon</a>
newtype MaxRedemptions
MaxRedemptions :: Int -> MaxRedemptions

-- | Type of MetaData for use on <tt>Stripe</tt> objects
newtype MetaData
MetaData :: [(Text, Text)] -> MetaData

-- | <a>PercentOff</a> for a <a>Coupon</a>
newtype PercentOff
PercentOff :: Int -> PercentOff

-- | <a>RedeemBy</a> date for a <a>Coupon</a>
newtype RedeemBy
RedeemBy :: UTCTime -> RedeemBy

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a

-- | JSON returned from a <tt>Stripe</tt> deletion request
data StripeDeleteResult
StripeDeleteResult :: Bool -> Maybe Text -> StripeDeleteResult
[deleted] :: StripeDeleteResult -> Bool
[deletedId] :: StripeDeleteResult -> Maybe Text

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Coupon.GetCoupons (Web.Stripe.Types.EndingBefore Web.Stripe.Types.CouponId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Coupon.GetCoupons Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Coupon.GetCoupons (Web.Stripe.Types.StartingAfter Web.Stripe.Types.CouponId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Coupon.UpdateCoupon Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Coupon.CreateCoupon Web.Stripe.Types.AmountOff
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Coupon.CreateCoupon Web.Stripe.Types.Currency
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Coupon.CreateCoupon Web.Stripe.Types.DurationInMonths
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Coupon.CreateCoupon Web.Stripe.Types.MaxRedemptions
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Coupon.CreateCoupon Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Coupon.CreateCoupon Web.Stripe.Types.PercentOff
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Coupon.CreateCoupon Web.Stripe.Types.RedeemBy


module Web.Stripe.Client

-- | handleStream
--   
--   This function is used by the backends such as
--   <tt>stripe-http-client</tt> to decode the results of an API request.
handleStream :: (Value -> Result a) -> Int -> Result Value -> Either StripeError a

-- | lift a parser error to be a StripeError
parseFail :: String -> Either StripeError a

-- | check the HTTP status code and see if it is one we can deal with or
--   not
attemptDecode :: Int -> Bool

-- | <a>StripeError</a> to return when we don't know what to do with the
--   received HTTP status code.
unknownCode :: Either StripeError a

-- | Stripe config
data StripeConfig
StripeConfig :: StripeKey -> StripeConfig
[secretKey] :: StripeConfig -> StripeKey

-- | Stripe secret key
newtype StripeKey
StripeKey :: ByteString -> StripeKey
[getStripeKey] :: StripeKey -> ByteString

-- | API Version
data APIVersion

-- | Stripe API Version for this package release
V20141007 :: APIVersion
instance Data.Data.Data Web.Stripe.Client.APIVersion
instance GHC.Classes.Ord Web.Stripe.Client.APIVersion
instance GHC.Classes.Eq Web.Stripe.Client.APIVersion
instance Data.Data.Data Web.Stripe.Client.StripeConfig
instance GHC.Classes.Ord Web.Stripe.Client.StripeConfig
instance GHC.Classes.Eq Web.Stripe.Client.StripeConfig
instance GHC.Show.Show Web.Stripe.Client.StripeConfig
instance GHC.Read.Read Web.Stripe.Client.StripeConfig
instance Data.Data.Data Web.Stripe.Client.StripeKey
instance GHC.Classes.Ord Web.Stripe.Client.StripeKey
instance GHC.Classes.Eq Web.Stripe.Client.StripeKey
instance GHC.Show.Show Web.Stripe.Client.StripeKey
instance GHC.Read.Read Web.Stripe.Client.StripeKey
instance GHC.Show.Show Web.Stripe.Client.APIVersion
instance GHC.Read.Read Web.Stripe.Client.APIVersion


-- | <a>https://stripe.com/docs/api#charges</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Customer
--   import Web.Stripe.Charge
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--         credit = CardNumber "4242424242424242"
--         em  = ExpMonth 12
--         ey  = ExpYear 2015
--         cvc = CVC "123"
--         cardinfo = (newCard credit em ey) { newCardCVC = Just cvc }
--     result &lt;- stripe config createCustomer
--                                -&amp;- cardinfo
--     case result of
--       (Left stripeError) -&gt; print stripeError
--       (Customer { customerId = cid }) -&gt;
--         do result &lt;- stripe config $ createCharge (Amount 100) USD
--                                        -&amp;- cid
--            case result of
--              Left  stripeError -&gt; print stripeError
--              Right charge      -&gt; print charge
--   </pre>
module Web.Stripe.Charge
data CreateCharge

-- | Create a <a>Charge</a>
createCharge :: Amount -> Currency -> StripeRequest CreateCharge
data GetCharge

-- | Retrieve a <a>Charge</a> by <a>ChargeId</a>
getCharge :: ChargeId -> StripeRequest GetCharge
data GetCharges

-- | Retrieve all <a>Charge</a>s
getCharges :: StripeRequest GetCharges
data UpdateCharge

-- | A <a>Charge</a> to be updated
updateCharge :: ChargeId -> StripeRequest UpdateCharge
data CaptureCharge

-- | a <a>Charge</a> to be captured
captureCharge :: ChargeId -> StripeRequest CaptureCharge

-- | Amount representing a monetary value. Stripe represents pennies as
--   whole numbers i.e. 100 = $1
newtype Amount
Amount :: Int -> Amount
[getAmount] :: Amount -> Int

-- | ApplicationFeeAmount
newtype ApplicationFeeAmount
ApplicationFeeAmount :: Integer -> ApplicationFeeAmount

-- | Number associated with a <a>Card</a>
newtype CardNumber
CardNumber :: Text -> CardNumber

-- | Capture for <a>Charge</a>
newtype Capture
Capture :: Bool -> Capture
[getCapture] :: Capture -> Bool

-- | <a>Charge</a> object in <tt>Stripe</tt> API
data Charge
Charge :: ChargeId -> Text -> UTCTime -> Bool -> Bool -> Amount -> Currency -> Bool -> Maybe Card -> Bool -> StripeList Refund -> Maybe (Expandable TransactionId) -> Maybe Text -> Maybe Text -> Int -> Maybe (Expandable CustomerId) -> Maybe (Expandable InvoiceId) -> Maybe Description -> Maybe Dispute -> MetaData -> Maybe StatementDescription -> Maybe Text -> Maybe Text -> Charge
[chargeId] :: Charge -> ChargeId
[chargeObject] :: Charge -> Text
[chargeCreated] :: Charge -> UTCTime
[chargeLiveMode] :: Charge -> Bool
[chargePaid] :: Charge -> Bool
[chargeAmount] :: Charge -> Amount
[chargeCurrency] :: Charge -> Currency
[chargeRefunded] :: Charge -> Bool
[chargeCreditCard] :: Charge -> Maybe Card
[chargeCaptured] :: Charge -> Bool
[chargeRefunds] :: Charge -> StripeList Refund
[chargeBalanceTransaction] :: Charge -> Maybe (Expandable TransactionId)
[chargeFailureMessage] :: Charge -> Maybe Text
[chargeFailureCode] :: Charge -> Maybe Text
[chargeAmountRefunded] :: Charge -> Int
[chargeCustomerId] :: Charge -> Maybe (Expandable CustomerId)
[chargeInvoice] :: Charge -> Maybe (Expandable InvoiceId)
[chargeDescription] :: Charge -> Maybe Description
[chargeDispute] :: Charge -> Maybe Dispute
[chargeMetaData] :: Charge -> MetaData
[chargeStatementDescription] :: Charge -> Maybe StatementDescription
[chargeReceiptEmail] :: Charge -> Maybe Text
[chargeReceiptNumber] :: Charge -> Maybe Text

-- | <a>ChargeId</a> associated with a <a>Charge</a>
newtype ChargeId
ChargeId :: Text -> ChargeId

-- | <a>Created</a>
newtype Created
Created :: UTCTime -> Created

-- | Stripe supports 138 currencies
data Currency

-- | United Arab Emirates Dirham
AED :: Currency

-- | Afghan Afghani
AFN :: Currency

-- | Albanian Lek
ALL :: Currency

-- | Armenian Dram
AMD :: Currency

-- | Netherlands Antillean Gulden
ANG :: Currency

-- | Angolan Kwanza
AOA :: Currency

-- | Argentine Peso
ARS :: Currency

-- | Australian Dollar
AUD :: Currency

-- | Aruban Florin
AWG :: Currency

-- | Azerbaijani Manat
AZN :: Currency

-- | Bosnia &amp; Herzegovina Convertible Mark
BAM :: Currency

-- | Barbadian Dollar
BBD :: Currency

-- | Bangladeshi Taka
BDT :: Currency

-- | Bulgarian Lev
BGN :: Currency

-- | Burundian Franc
BIF :: Currency

-- | Bermudian Dollar
BMD :: Currency

-- | Brunei Dollar
BND :: Currency

-- | Bolivian Boliviano
BOB :: Currency

-- | Brazilian Real
BRL :: Currency

-- | Bahamian Dollar
BSD :: Currency

-- | Botswana Pula
BWP :: Currency

-- | Belize Dollar
BZD :: Currency

-- | Canadian Dollar
CAD :: Currency

-- | Congolese Franc
CDF :: Currency

-- | Swiss Franc
CHF :: Currency

-- | Chilean Peso
CLP :: Currency

-- | Chinese Renminbi Yuan
CNY :: Currency

-- | Colombian Peso
COP :: Currency

-- | Costa Rican Colón
CRC :: Currency

-- | Cape Verdean Escudo
CVE :: Currency

-- | Czech Koruna
CZK :: Currency

-- | Djiboutian Franc
DJF :: Currency

-- | Danish Krone
DKK :: Currency

-- | Dominican Peso
DOP :: Currency

-- | Algerian Dinar
DZD :: Currency

-- | Estonian Kroon
EEK :: Currency

-- | Egyptian Pound
EGP :: Currency

-- | Ethiopian Birr
ETB :: Currency

-- | Euro
EUR :: Currency

-- | Fijian Dollar
FJD :: Currency

-- | Falkland Islands Pound
FKP :: Currency

-- | British Pound
GBP :: Currency

-- | Georgian Lari
GEL :: Currency

-- | Gibraltar Pound
GIP :: Currency

-- | Gambian Dalasi
GMD :: Currency

-- | Guinean Franc
GNF :: Currency

-- | Guatemalan Quetzal
GTQ :: Currency

-- | Guyanese Dollar
GYD :: Currency

-- | Hong Kong Dollar
HKD :: Currency

-- | Honduran Lempira
HNL :: Currency

-- | Croatian Kuna
HRK :: Currency

-- | Haitian Gourde
HTG :: Currency

-- | Hungarian Forint
HUF :: Currency

-- | Indonesian Rupiah
IDR :: Currency

-- | Israeli New Sheqel
ILS :: Currency

-- | Indian Rupee
INR :: Currency

-- | Icelandic Króna
ISK :: Currency

-- | Jamaican Dollar
JMD :: Currency

-- | Japanese Yen
JPY :: Currency

-- | Kenyan Shilling
KES :: Currency

-- | Kyrgyzstani Som
KGS :: Currency

-- | Cambodian Riel
KHR :: Currency

-- | Comorian Franc
KMF :: Currency

-- | South Korean Won
KRW :: Currency

-- | Cayman Islands Dollar
KYD :: Currency

-- | Kazakhstani Tenge
KZT :: Currency

-- | Lao Kip
LAK :: Currency

-- | Lebanese Pound
LBP :: Currency

-- | Sri Lankan Rupee
LKR :: Currency

-- | Liberian Dollar
LRD :: Currency

-- | Lesotho Loti
LSL :: Currency

-- | Lithuanian Litas
LTL :: Currency

-- | Latvian Lats
LVL :: Currency

-- | Moroccan Dirham
MAD :: Currency

-- | Moldovan Leu
MDL :: Currency

-- | Malagasy Ariary
MGA :: Currency

-- | Macedonian Denar
MKD :: Currency

-- | Mongolian Tögrög
MNT :: Currency

-- | Macanese Pataca
MOP :: Currency

-- | Mauritanian Ouguiya
MRO :: Currency

-- | Mauritian Rupee
MUR :: Currency

-- | Maldivian Rufiyaa
MVR :: Currency

-- | Malawian Kwacha
MWK :: Currency

-- | Mexican Peso
MXN :: Currency

-- | Malaysian Ringgit
MYR :: Currency

-- | Mozambican Metical
MZN :: Currency

-- | Namibian Dollar
NAD :: Currency

-- | Nigerian Naira
NGN :: Currency

-- | Nicaraguan Córdoba
NIO :: Currency

-- | Norwegian Krone
NOK :: Currency

-- | Nepalese Rupee
NPR :: Currency

-- | New Zealand Dollar
NZD :: Currency

-- | Panamanian Balboa
PAB :: Currency

-- | Peruvian Nuevo Sol
PEN :: Currency

-- | Papua New Guinean Kina
PGK :: Currency

-- | Philippine Peso
PHP :: Currency

-- | Pakistani Rupee
PKR :: Currency

-- | Polish Złoty
PLN :: Currency

-- | Paraguayan Guaraní
PYG :: Currency

-- | Qatari Riyal
QAR :: Currency

-- | Romanian Leu
RON :: Currency

-- | Serbian Dinar
RSD :: Currency

-- | Russian Ruble
RUB :: Currency

-- | Rwandan Franc
RWF :: Currency

-- | Saudi Riyal
SAR :: Currency

-- | Solomon Islands Dollar
SBD :: Currency

-- | Seychellois Rupee
SCR :: Currency

-- | Swedish Krona
SEK :: Currency

-- | Singapore Dollar
SGD :: Currency

-- | Saint Helenian Pound
SHP :: Currency

-- | Sierra Leonean Leone
SLL :: Currency

-- | Somali Shilling
SOS :: Currency

-- | Surinamese Dollar
SRD :: Currency

-- | São Tomé and Príncipe Dobra
STD :: Currency

-- | Salvadoran Colón
SVC :: Currency

-- | Swazi Lilangeni
SZL :: Currency

-- | Thai Baht
THB :: Currency

-- | Tajikistani Somoni
TJS :: Currency

-- | Tongan Paʻanga
TOP :: Currency

-- | Turkish Lira
TRY :: Currency

-- | Trinidad and Tobago Dollar
TTD :: Currency

-- | New Taiwan Dollar
TWD :: Currency

-- | Tanzanian Shilling
TZS :: Currency

-- | Ukrainian Hryvnia
UAH :: Currency

-- | Ugandan Shilling
UGX :: Currency

-- | United States Dollar
USD :: Currency

-- | Uruguayan Peso
UYU :: Currency

-- | Uzbekistani Som
UZS :: Currency

-- | Vietnamese Đồng
VND :: Currency

-- | Vanuatu Vatu
VUV :: Currency

-- | Samoan Tala
WST :: Currency

-- | Central African Cfa Franc
XAF :: Currency

-- | East Caribbean Dollar
XCD :: Currency

-- | West African Cfa Franc
XOF :: Currency

-- | Cfp Franc
XPF :: Currency

-- | Yemeni Rial
YER :: Currency

-- | South African Rand
ZAR :: Currency

-- | Zambian Kwacha
ZMW :: Currency

-- | Unknown Currency
UnknownCurrency :: Currency

-- | <a>CustomerId</a> for a <a>Customer</a>
newtype CustomerId
CustomerId :: Text -> CustomerId

-- | <a>Customer</a> object
data Customer
Customer :: Text -> UTCTime -> CustomerId -> Bool -> Maybe Description -> Maybe Email -> Bool -> StripeList Subscription -> Maybe Discount -> Int -> StripeList Card -> Maybe Currency -> Maybe (Expandable CardId) -> MetaData -> Customer
[customerObject] :: Customer -> Text
[customerCreated] :: Customer -> UTCTime
[customerId] :: Customer -> CustomerId
[customerLiveMode] :: Customer -> Bool
[customerDescription] :: Customer -> Maybe Description
[customerEmail] :: Customer -> Maybe Email
[customerDelinquent] :: Customer -> Bool
[customerSubscriptions] :: Customer -> StripeList Subscription
[customerDiscount] :: Customer -> Maybe Discount
[customerAccountBalance] :: Customer -> Int
[customerCards] :: Customer -> StripeList Card
[customerCurrency] :: Customer -> Maybe Currency
[customerDefaultCard] :: Customer -> Maybe (Expandable CardId)
[customerMetaData] :: Customer -> MetaData
DeletedCustomer :: Maybe Bool -> CustomerId -> Customer
[deletedCustomer] :: Customer -> Maybe Bool
[deletedCustomerId] :: Customer -> CustomerId

-- | CVC for a <a>Card</a>
newtype CVC
CVC :: Text -> CVC

-- | Generic Description for use in constructing API Calls
newtype Description
Description :: Text -> Description

-- | <a>Email</a> associated with a <a>Customer</a>, <a>Recipient</a> or
--   <a>Charge</a>
newtype Email
Email :: Text -> Email

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | Expiration Month for a <a>Card</a>
newtype ExpMonth
ExpMonth :: Int -> ExpMonth

-- | Expiration Year for a <a>Card</a>
newtype ExpYear
ExpYear :: Int -> ExpYear

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | Type of MetaData for use on <tt>Stripe</tt> objects
newtype MetaData
MetaData :: [(Text, Text)] -> MetaData

-- | <a>NewCard</a> contains the data needed to create a new <a>Card</a>
data NewCard
NewCard :: CardNumber -> ExpMonth -> ExpYear -> Maybe CVC -> Maybe Name -> Maybe AddressLine1 -> Maybe AddressLine2 -> Maybe AddressCity -> Maybe AddressZip -> Maybe AddressState -> Maybe AddressCountry -> NewCard
[newCardCardNumber] :: NewCard -> CardNumber
[newCardExpMonth] :: NewCard -> ExpMonth
[newCardExpYear] :: NewCard -> ExpYear
[newCardCVC] :: NewCard -> Maybe CVC
[newCardName] :: NewCard -> Maybe Name
[newCardAddressLine1] :: NewCard -> Maybe AddressLine1
[newCardAddressLine2] :: NewCard -> Maybe AddressLine2
[newCardAddressCity] :: NewCard -> Maybe AddressCity
[newCardAddressZip] :: NewCard -> Maybe AddressZip
[newCardAddressState] :: NewCard -> Maybe AddressState
[newCardAddressCountry] :: NewCard -> Maybe AddressCountry

-- | <a>Email</a> to send receipt to
newtype ReceiptEmail
ReceiptEmail :: Text -> ReceiptEmail

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a

-- | <a>StatementDescription</a> to be added to a <a>Charge</a>
newtype StatementDescription
StatementDescription :: Text -> StatementDescription

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool

-- | <a>TokenId</a> of a <a>Token</a>
newtype TokenId
TokenId :: Text -> TokenId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.GetCharges Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.GetCharges Web.Stripe.Types.Created
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.GetCharges Web.Stripe.Types.CustomerId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.GetCharges (Web.Stripe.Types.EndingBefore Web.Stripe.Types.ChargeId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.GetCharges Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.GetCharges (Web.Stripe.Types.StartingAfter Web.Stripe.Types.ChargeId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.CaptureCharge Web.Stripe.Types.Amount
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.CaptureCharge Web.Stripe.Types.ReceiptEmail
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.UpdateCharge Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.UpdateCharge Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.GetCharge Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.CreateCharge Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.CreateCharge Web.Stripe.Types.CustomerId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.CreateCharge Web.Stripe.Types.NewCard
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.CreateCharge Web.Stripe.Types.TokenId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.CreateCharge Web.Stripe.Types.Description
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.CreateCharge Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.CreateCharge Web.Stripe.Types.Capture
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.CreateCharge Web.Stripe.Types.StatementDescription
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.CreateCharge Web.Stripe.Types.ReceiptEmail
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Charge.CreateCharge Web.Stripe.Types.ApplicationFeeAmount


-- | <a>https://stripe.com/docs/api#cards</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Customer
--   import Web.Stripe.Card
--   
--   main :: IO ()
--   main = do
--     let config   = StripeConfig (StripeKey "secret_key")
--         credit   = CardNumber "4242424242424242"
--         em       = ExpMonth 12
--         ey       = ExpYear 2015
--         cvc      = CVC "123"
--         cardinfo = (mkNewCard credit em ey) { newCardCVC = Just cvc }
--     result &lt;- stripe config $ createCustomer
--     case result of
--       (Left stripeError) -&gt; print stripeError
--       (Right (Customer { customerId = cid })) -&gt; do
--         result &lt;- stripe config $ createCustomerCard cid cardinfo
--         case result of
--           Right card -&gt; print card
--           Left  stripeError -&gt; print stripeError
--   </pre>
module Web.Stripe.Card
data CreateCustomerCardByToken

-- | <tt>Customer</tt> <a>Card</a> creation from a <a>TokenId</a>
createCustomerCardByToken :: CustomerId -> TokenId -> StripeRequest CreateCustomerCardByToken
data CreateRecipientCardByToken

-- | <tt>Recipient</tt> <a>Card</a> creation from a <a>TokenId</a>
createRecipientCardByToken :: RecipientId -> TokenId -> StripeRequest CreateRecipientCardByToken
data CreateCustomerCard

-- | <tt>Customer</tt> <a>Card</a> creation from card info
createCustomerCard :: CustomerId -> NewCard -> StripeRequest CreateCustomerCard
data CreateRecipientCard

-- | <tt>Recipient</tt> <a>Card</a> creation from card info
createRecipientCard :: RecipientId -> NewCard -> StripeRequest CreateRecipientCard
data GetCustomerCard

-- | Get card by <a>CustomerId</a> and <a>CardId</a>
getCustomerCard :: CustomerId -> CardId -> StripeRequest GetCustomerCard
data GetRecipientCard

-- | Get card by <a>RecipientId</a> and <a>RecipientCardId</a>
getRecipientCard :: RecipientId -> RecipientCardId -> StripeRequest GetRecipientCard
data GetCustomerCards

-- | Retrieve all cards associated with a <tt>Customer</tt>
getCustomerCards :: CustomerId -> StripeRequest GetCustomerCards
data GetRecipientCards

-- | Retrieve all cards associated with a <tt>Recipient</tt>
getRecipientCards :: RecipientId -> StripeRequest GetRecipientCards
data UpdateCustomerCard

-- | Update a <tt>Customer</tt> <a>Card</a>
updateCustomerCard :: CustomerId -> CardId -> StripeRequest UpdateCustomerCard
data UpdateRecipientCard

-- | Update a <tt>Recipient</tt> <a>Card</a>
updateRecipientCard :: RecipientId -> RecipientCardId -> StripeRequest UpdateRecipientCard
data DeleteCustomerCard

-- | Removes a <a>Card</a> with from a <tt>Customer</tt>
deleteCustomerCard :: CustomerId -> CardId -> StripeRequest DeleteCustomerCard
data DeleteRecipientCard

-- | Removes a <a>RecipientCard</a> with from a <tt>Recipient</tt>
deleteRecipientCard :: RecipientId -> RecipientCardId -> StripeRequest DeleteRecipientCard

-- | Address Line One for a <a>Card</a>
newtype AddressLine1
AddressLine1 :: Text -> AddressLine1

-- | Address Line Two for a <a>Card</a>
newtype AddressLine2
AddressLine2 :: Text -> AddressLine2

-- | City address for a <a>Card</a>
newtype AddressCity
AddressCity :: Text -> AddressCity

-- | Country address for a <a>Card</a>
newtype AddressCountry
AddressCountry :: Text -> AddressCountry

-- | Address State for a <a>Card</a>
newtype AddressState
AddressState :: Text -> AddressState

-- | Address Zip Code for a <a>Card</a>
newtype AddressZip
AddressZip :: Text -> AddressZip

-- | Credit / Debit Card Brand
data Brand
Visa :: Brand
AMEX :: Brand
MasterCard :: Brand
Discover :: Brand
JCB :: Brand
DinersClub :: Brand
Unknown :: Brand

-- | <a>Card</a> Object
data Card
Card :: CardId -> Text -> Text -> Brand -> Text -> ExpMonth -> ExpYear -> Text -> Maybe Text -> Maybe Name -> Maybe AddressLine1 -> Maybe AddressLine2 -> Maybe AddressCity -> Maybe AddressState -> Maybe AddressZip -> Maybe AddressCountry -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe (Expandable CustomerId) -> MetaData -> Card
[cardId] :: Card -> CardId
[cardObject] :: Card -> Text
[cardLastFour] :: Card -> Text
[cardBrand] :: Card -> Brand
[cardFunding] :: Card -> Text
[cardExpMonth] :: Card -> ExpMonth
[cardExpYear] :: Card -> ExpYear
[cardFingerprint] :: Card -> Text
[cardCountry] :: Card -> Maybe Text
[cardName] :: Card -> Maybe Name
[cardAddressLine1] :: Card -> Maybe AddressLine1
[cardAddressLine2] :: Card -> Maybe AddressLine2
[cardAddressCity] :: Card -> Maybe AddressCity
[cardAddressState] :: Card -> Maybe AddressState
[cardAddressZip] :: Card -> Maybe AddressZip
[cardAddressCountry] :: Card -> Maybe AddressCountry
[cardCVCCheck] :: Card -> Maybe Text
[cardAddressLine1Check] :: Card -> Maybe Text
[cardAddressZipCheck] :: Card -> Maybe Text
[cardCustomerId] :: Card -> Maybe (Expandable CustomerId)
[cardMetaData] :: Card -> MetaData

-- | CardId for a <a>Customer</a>
newtype CardId
CardId :: Text -> CardId

-- | Number associated with a <a>Card</a>
newtype CardNumber
CardNumber :: Text -> CardNumber

-- | CVC for a <a>Card</a>
newtype CVC
CVC :: Text -> CVC

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | Expiration Month for a <a>Card</a>
newtype ExpMonth
ExpMonth :: Int -> ExpMonth

-- | Expiration Year for a <a>Card</a>
newtype ExpYear
ExpYear :: Int -> ExpYear

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | a cardholder's full name
newtype Name
Name :: Text -> Name
[getName] :: Name -> Text

-- | <a>RecipientCard</a> object
data RecipientCard
RecipientCard :: RecipientCardId -> Text -> Brand -> Text -> ExpMonth -> ExpYear -> Text -> Country -> Maybe Name -> Maybe AddressLine1 -> Maybe AddressLine2 -> Maybe AddressCity -> Maybe AddressState -> Maybe AddressZip -> Maybe AddressCountry -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe (Expandable RecipientId) -> RecipientCard
[recipientCardId] :: RecipientCard -> RecipientCardId
[recipientCardLastFour] :: RecipientCard -> Text
[recipientCardBrand] :: RecipientCard -> Brand
[recipientCardFunding] :: RecipientCard -> Text
[recipientCardExpMonth] :: RecipientCard -> ExpMonth
[recipientCardExpYear] :: RecipientCard -> ExpYear
[recipientCardFingerprint] :: RecipientCard -> Text
[recipientCardCountry] :: RecipientCard -> Country
[recipientCardName] :: RecipientCard -> Maybe Name
[recipientCardAddressLine1] :: RecipientCard -> Maybe AddressLine1
[recipientCardAddressLine2] :: RecipientCard -> Maybe AddressLine2
[recipientCardAddressCity] :: RecipientCard -> Maybe AddressCity
[recipientCardAddressState] :: RecipientCard -> Maybe AddressState
[recipientCardAddressZip] :: RecipientCard -> Maybe AddressZip
[recipientCardAddressCountry] :: RecipientCard -> Maybe AddressCountry
[recipientCardCVCCheck] :: RecipientCard -> Maybe Text
[recipientCardAddressLine1Check] :: RecipientCard -> Maybe Text
[recipientCardAddressZipCheck] :: RecipientCard -> Maybe Text
[recipientCardRecipientId] :: RecipientCard -> Maybe (Expandable RecipientId)

-- | CardId for a <a>Recipient</a>
newtype RecipientCardId
RecipientCardId :: Text -> RecipientCardId

-- | <a>RecipientId</a> for a <a>Recipient</a>
newtype RecipientId
RecipientId :: Text -> RecipientId

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.GetRecipientCards Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.GetRecipientCards (Web.Stripe.Types.EndingBefore Web.Stripe.Types.CardId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.GetRecipientCards Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.GetRecipientCards (Web.Stripe.Types.StartingAfter Web.Stripe.Types.CardId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.GetCustomerCards Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.GetCustomerCards (Web.Stripe.Types.EndingBefore Web.Stripe.Types.CardId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.GetCustomerCards Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.GetCustomerCards (Web.Stripe.Types.StartingAfter Web.Stripe.Types.CardId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateRecipientCard Web.Stripe.Types.AddressLine1
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateRecipientCard Web.Stripe.Types.AddressLine2
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateRecipientCard Web.Stripe.Types.AddressCity
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateRecipientCard Web.Stripe.Types.AddressZip
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateRecipientCard Web.Stripe.Types.AddressState
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateRecipientCard Web.Stripe.Types.AddressCountry
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateRecipientCard Web.Stripe.Types.ExpMonth
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateRecipientCard Web.Stripe.Types.ExpYear
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateRecipientCard Web.Stripe.Types.Name
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateCustomerCard Web.Stripe.Types.AddressLine1
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateCustomerCard Web.Stripe.Types.AddressLine2
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateCustomerCard Web.Stripe.Types.AddressCity
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateCustomerCard Web.Stripe.Types.AddressZip
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateCustomerCard Web.Stripe.Types.AddressState
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateCustomerCard Web.Stripe.Types.AddressCountry
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateCustomerCard Web.Stripe.Types.ExpMonth
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateCustomerCard Web.Stripe.Types.ExpYear
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.UpdateCustomerCard Web.Stripe.Types.Name
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.GetRecipientCard Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Card.GetCustomerCard Web.Stripe.Types.ExpandParams


-- | <a>https://stripe.com/docs/api#balance</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.Balance (getBalance)
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config getBalance
--     case result of
--       Right balance    -&gt; print balance
--       Left stripeError -&gt; print stripeError
--   </pre>
module Web.Stripe.Balance
data GetBalance

-- | Retrieve the current <a>Balance</a> for your Stripe account
getBalance :: StripeRequest GetBalance
data GetBalanceTransaction

-- | Retrieve a <a>BalanceTransaction</a> by <a>TransactionId</a>
getBalanceTransaction :: TransactionId -> StripeRequest GetBalanceTransaction
data GetBalanceTransactionHistory

-- | Retrieve the history of <a>BalanceTransaction</a>s
getBalanceTransactionHistory :: StripeRequest GetBalanceTransactionHistory

-- | <a>AvailableOn</a>
newtype AvailableOn
AvailableOn :: UTCTime -> AvailableOn

-- | <a>Balance</a> Object
data Balance
Balance :: [BalanceAmount] -> [BalanceAmount] -> Bool -> Text -> Balance
[balancePending] :: Balance -> [BalanceAmount]
[balanceAvailable] :: Balance -> [BalanceAmount]
[balanceLiveMode] :: Balance -> Bool
[balanceObject] :: Balance -> Text

-- | <a>BalanceAmount</a> Object
data BalanceAmount
BalanceAmount :: Int -> Currency -> BalanceAmount
[balanceAmount] :: BalanceAmount -> Int
[balanceCurrency] :: BalanceAmount -> Currency

-- | <a>BalanceTransaction</a> Object
data BalanceTransaction
BalanceTransaction :: TransactionId -> Text -> Int -> Currency -> Int -> TransactionType -> UTCTime -> UTCTime -> Text -> Int -> [FeeDetails] -> Expandable ChargeId -> Maybe Description -> BalanceTransaction
[balanceTransactionId] :: BalanceTransaction -> TransactionId
[balanceTransactionObject] :: BalanceTransaction -> Text
[balanceTransactionAmount] :: BalanceTransaction -> Int
[balanceTransactionCurrency] :: BalanceTransaction -> Currency
[balanceTransactionNet] :: BalanceTransaction -> Int
[balanceTransactionType] :: BalanceTransaction -> TransactionType
[balanceTransactionCreated] :: BalanceTransaction -> UTCTime
[balanceTransactionAvailableOn] :: BalanceTransaction -> UTCTime
[balanceTransactionStatus] :: BalanceTransaction -> Text
[balanceTransactionFee] :: BalanceTransaction -> Int
[balanceTransactionFeeDetails] :: BalanceTransaction -> [FeeDetails]
[balanceTransactionFeeSource] :: BalanceTransaction -> Expandable ChargeId
[balanceTransactionFeeDescription] :: BalanceTransaction -> Maybe Description

-- | <a>Created</a>
newtype Created
Created :: UTCTime -> Created

-- | Stripe supports 138 currencies
data Currency

-- | United Arab Emirates Dirham
AED :: Currency

-- | Afghan Afghani
AFN :: Currency

-- | Albanian Lek
ALL :: Currency

-- | Armenian Dram
AMD :: Currency

-- | Netherlands Antillean Gulden
ANG :: Currency

-- | Angolan Kwanza
AOA :: Currency

-- | Argentine Peso
ARS :: Currency

-- | Australian Dollar
AUD :: Currency

-- | Aruban Florin
AWG :: Currency

-- | Azerbaijani Manat
AZN :: Currency

-- | Bosnia &amp; Herzegovina Convertible Mark
BAM :: Currency

-- | Barbadian Dollar
BBD :: Currency

-- | Bangladeshi Taka
BDT :: Currency

-- | Bulgarian Lev
BGN :: Currency

-- | Burundian Franc
BIF :: Currency

-- | Bermudian Dollar
BMD :: Currency

-- | Brunei Dollar
BND :: Currency

-- | Bolivian Boliviano
BOB :: Currency

-- | Brazilian Real
BRL :: Currency

-- | Bahamian Dollar
BSD :: Currency

-- | Botswana Pula
BWP :: Currency

-- | Belize Dollar
BZD :: Currency

-- | Canadian Dollar
CAD :: Currency

-- | Congolese Franc
CDF :: Currency

-- | Swiss Franc
CHF :: Currency

-- | Chilean Peso
CLP :: Currency

-- | Chinese Renminbi Yuan
CNY :: Currency

-- | Colombian Peso
COP :: Currency

-- | Costa Rican Colón
CRC :: Currency

-- | Cape Verdean Escudo
CVE :: Currency

-- | Czech Koruna
CZK :: Currency

-- | Djiboutian Franc
DJF :: Currency

-- | Danish Krone
DKK :: Currency

-- | Dominican Peso
DOP :: Currency

-- | Algerian Dinar
DZD :: Currency

-- | Estonian Kroon
EEK :: Currency

-- | Egyptian Pound
EGP :: Currency

-- | Ethiopian Birr
ETB :: Currency

-- | Euro
EUR :: Currency

-- | Fijian Dollar
FJD :: Currency

-- | Falkland Islands Pound
FKP :: Currency

-- | British Pound
GBP :: Currency

-- | Georgian Lari
GEL :: Currency

-- | Gibraltar Pound
GIP :: Currency

-- | Gambian Dalasi
GMD :: Currency

-- | Guinean Franc
GNF :: Currency

-- | Guatemalan Quetzal
GTQ :: Currency

-- | Guyanese Dollar
GYD :: Currency

-- | Hong Kong Dollar
HKD :: Currency

-- | Honduran Lempira
HNL :: Currency

-- | Croatian Kuna
HRK :: Currency

-- | Haitian Gourde
HTG :: Currency

-- | Hungarian Forint
HUF :: Currency

-- | Indonesian Rupiah
IDR :: Currency

-- | Israeli New Sheqel
ILS :: Currency

-- | Indian Rupee
INR :: Currency

-- | Icelandic Króna
ISK :: Currency

-- | Jamaican Dollar
JMD :: Currency

-- | Japanese Yen
JPY :: Currency

-- | Kenyan Shilling
KES :: Currency

-- | Kyrgyzstani Som
KGS :: Currency

-- | Cambodian Riel
KHR :: Currency

-- | Comorian Franc
KMF :: Currency

-- | South Korean Won
KRW :: Currency

-- | Cayman Islands Dollar
KYD :: Currency

-- | Kazakhstani Tenge
KZT :: Currency

-- | Lao Kip
LAK :: Currency

-- | Lebanese Pound
LBP :: Currency

-- | Sri Lankan Rupee
LKR :: Currency

-- | Liberian Dollar
LRD :: Currency

-- | Lesotho Loti
LSL :: Currency

-- | Lithuanian Litas
LTL :: Currency

-- | Latvian Lats
LVL :: Currency

-- | Moroccan Dirham
MAD :: Currency

-- | Moldovan Leu
MDL :: Currency

-- | Malagasy Ariary
MGA :: Currency

-- | Macedonian Denar
MKD :: Currency

-- | Mongolian Tögrög
MNT :: Currency

-- | Macanese Pataca
MOP :: Currency

-- | Mauritanian Ouguiya
MRO :: Currency

-- | Mauritian Rupee
MUR :: Currency

-- | Maldivian Rufiyaa
MVR :: Currency

-- | Malawian Kwacha
MWK :: Currency

-- | Mexican Peso
MXN :: Currency

-- | Malaysian Ringgit
MYR :: Currency

-- | Mozambican Metical
MZN :: Currency

-- | Namibian Dollar
NAD :: Currency

-- | Nigerian Naira
NGN :: Currency

-- | Nicaraguan Córdoba
NIO :: Currency

-- | Norwegian Krone
NOK :: Currency

-- | Nepalese Rupee
NPR :: Currency

-- | New Zealand Dollar
NZD :: Currency

-- | Panamanian Balboa
PAB :: Currency

-- | Peruvian Nuevo Sol
PEN :: Currency

-- | Papua New Guinean Kina
PGK :: Currency

-- | Philippine Peso
PHP :: Currency

-- | Pakistani Rupee
PKR :: Currency

-- | Polish Złoty
PLN :: Currency

-- | Paraguayan Guaraní
PYG :: Currency

-- | Qatari Riyal
QAR :: Currency

-- | Romanian Leu
RON :: Currency

-- | Serbian Dinar
RSD :: Currency

-- | Russian Ruble
RUB :: Currency

-- | Rwandan Franc
RWF :: Currency

-- | Saudi Riyal
SAR :: Currency

-- | Solomon Islands Dollar
SBD :: Currency

-- | Seychellois Rupee
SCR :: Currency

-- | Swedish Krona
SEK :: Currency

-- | Singapore Dollar
SGD :: Currency

-- | Saint Helenian Pound
SHP :: Currency

-- | Sierra Leonean Leone
SLL :: Currency

-- | Somali Shilling
SOS :: Currency

-- | Surinamese Dollar
SRD :: Currency

-- | São Tomé and Príncipe Dobra
STD :: Currency

-- | Salvadoran Colón
SVC :: Currency

-- | Swazi Lilangeni
SZL :: Currency

-- | Thai Baht
THB :: Currency

-- | Tajikistani Somoni
TJS :: Currency

-- | Tongan Paʻanga
TOP :: Currency

-- | Turkish Lira
TRY :: Currency

-- | Trinidad and Tobago Dollar
TTD :: Currency

-- | New Taiwan Dollar
TWD :: Currency

-- | Tanzanian Shilling
TZS :: Currency

-- | Ukrainian Hryvnia
UAH :: Currency

-- | Ugandan Shilling
UGX :: Currency

-- | United States Dollar
USD :: Currency

-- | Uruguayan Peso
UYU :: Currency

-- | Uzbekistani Som
UZS :: Currency

-- | Vietnamese Đồng
VND :: Currency

-- | Vanuatu Vatu
VUV :: Currency

-- | Samoan Tala
WST :: Currency

-- | Central African Cfa Franc
XAF :: Currency

-- | East Caribbean Dollar
XCD :: Currency

-- | West African Cfa Franc
XOF :: Currency

-- | Cfp Franc
XPF :: Currency

-- | Yemeni Rial
YER :: Currency

-- | South African Rand
ZAR :: Currency

-- | Zambian Kwacha
ZMW :: Currency

-- | Unknown Currency
UnknownCurrency :: Currency

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | <a>Source</a> used for filtering <a>Balance</a> transactions. It
--   should contain an object Id such as a <a>ChargeId</a>
newtype Source a
Source :: a -> Source a
[getSource] :: Source a -> a

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool

-- | specify a <a>TimeRange</a> FIXME: this is a little awkward to use. How
--   can we make it moar better?
data TimeRange a
TimeRange :: Maybe a -> Maybe a -> Maybe a -> Maybe a -> TimeRange a
[gt] :: TimeRange a -> Maybe a
[gte] :: TimeRange a -> Maybe a
[lt] :: TimeRange a -> Maybe a
[lte] :: TimeRange a -> Maybe a

-- | <a>TransactionId</a> of a <tt>Transaction</tt>
newtype TransactionId
TransactionId :: Text -> TransactionId

-- | transaction type for <a>BalanceTransaction</a>
data TransactionType
ChargeTxn :: TransactionType
RefundTxn :: TransactionType
AdjustmentTxn :: TransactionType
ApplicationFeeTxn :: TransactionType
ApplicationFeeRefundTxn :: TransactionType
TransferTxn :: TransactionType
TransferCancelTxn :: TransactionType
TransferFailureTxn :: TransactionType
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Balance.GetBalanceTransactionHistory Web.Stripe.Types.AvailableOn
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Balance.GetBalanceTransactionHistory (Web.Stripe.Types.TimeRange Web.Stripe.Types.AvailableOn)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Balance.GetBalanceTransactionHistory Web.Stripe.Types.Created
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Balance.GetBalanceTransactionHistory (Web.Stripe.Types.TimeRange Web.Stripe.Types.Created)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Balance.GetBalanceTransactionHistory Web.Stripe.Types.Currency
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Balance.GetBalanceTransactionHistory (Web.Stripe.Types.EndingBefore Web.Stripe.Types.TransactionId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Balance.GetBalanceTransactionHistory Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Balance.GetBalanceTransactionHistory (Web.Stripe.Types.StartingAfter Web.Stripe.Types.TransactionId)
instance Web.Stripe.StripeRequest.ToStripeParam a => Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Balance.GetBalanceTransactionHistory (Web.Stripe.Types.Source a)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Balance.GetBalanceTransactionHistory Web.Stripe.Types.TransferId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Balance.GetBalanceTransactionHistory Web.Stripe.Types.TransactionType
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.Balance.GetBalanceTransaction Web.Stripe.Types.ExpandParams


-- | <a>https://stripe.com/docs/api#fee_refunds</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.ApplicationFeeRefund
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config $ getApplicationFeeRefund (FeeId "fee_id") (RefundId "refund_id")
--     case result of
--       Right applicationFeeRefund -&gt; print applicationFeeRefund
--       Left stripeError           -&gt; print stripeError
--   </pre>
module Web.Stripe.ApplicationFeeRefund
data CreateApplicationFeeRefund

-- | Create a new <a>ApplicationFeeRefund</a>
createApplicationFeeRefund :: FeeId -> StripeRequest CreateApplicationFeeRefund
data GetApplicationFeeRefund

-- | Retrieve an existing <a>ApplicationFeeRefund</a>
getApplicationFeeRefund :: FeeId -> RefundId -> StripeRequest GetApplicationFeeRefund
data UpdateApplicationFeeRefund

-- | Update an <a>ApplicationFeeRefund</a> for a given Application
--   <a>FeeId</a> and <a>RefundId</a>
updateApplicationFeeRefund :: FeeId -> RefundId -> StripeRequest UpdateApplicationFeeRefund
data GetApplicationFeeRefunds

-- | Retrieve a list of all <a>ApplicationFeeRefund</a>s for a given
--   Application <a>FeeId</a>
getApplicationFeeRefunds :: FeeId -> StripeRequest GetApplicationFeeRefunds

-- | <a>FeeId</a> for objects with Fees
newtype FeeId
FeeId :: Text -> FeeId

-- | <a>RefundId</a> for <a>Refund</a>
newtype RefundId
RefundId :: Text -> RefundId

-- | ApplicationFee Object
data ApplicationFee
ApplicationFee :: ApplicationFeeId -> Text -> UTCTime -> Bool -> Int -> Currency -> Bool -> Int -> StripeList Refund -> Expandable TransactionId -> Expandable AccountId -> ApplicationId -> Expandable ChargeId -> MetaData -> ApplicationFee
[applicationFeeId] :: ApplicationFee -> ApplicationFeeId
[applicationFeeObjecet] :: ApplicationFee -> Text
[applicationFeeCreated] :: ApplicationFee -> UTCTime
[applicationFeeLiveMode] :: ApplicationFee -> Bool
[applicationFeeAmount] :: ApplicationFee -> Int
[applicationFeeCurrency] :: ApplicationFee -> Currency
[applicationFeeRefunded] :: ApplicationFee -> Bool
[applicationFeeAmountRefunded] :: ApplicationFee -> Int
[applicationFeeRefunds] :: ApplicationFee -> StripeList Refund
[applicationFeeBalanceTransaction] :: ApplicationFee -> Expandable TransactionId
[applicationFeeAccountId] :: ApplicationFee -> Expandable AccountId
[applicationFeeApplicationId] :: ApplicationFee -> ApplicationId
[applicationFeeChargeId] :: ApplicationFee -> Expandable ChargeId
[applicationFeeMetaData] :: ApplicationFee -> MetaData

-- | Application Fee Refunds
data ApplicationFeeRefund
ApplicationFeeRefund :: RefundId -> Int -> Currency -> UTCTime -> Text -> Maybe (Expandable TransactionId) -> FeeId -> MetaData -> ApplicationFeeRefund
[applicationFeeRefundId] :: ApplicationFeeRefund -> RefundId
[applicationFeeRefundAmount] :: ApplicationFeeRefund -> Int
[applicationFeeRefundCurrency] :: ApplicationFeeRefund -> Currency
[applicationFeeRefundCreated] :: ApplicationFeeRefund -> UTCTime
[applicationFeeRefundObject] :: ApplicationFeeRefund -> Text
[applicationFeeRefundBalanceTransaction] :: ApplicationFeeRefund -> Maybe (Expandable TransactionId)
[applicationFeeRefundFee] :: ApplicationFeeRefund -> FeeId
[applicationFeeRefundMetaData] :: ApplicationFeeRefund -> MetaData

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]

-- | Type of MetaData for use on <tt>Stripe</tt> objects
newtype MetaData
MetaData :: [(Text, Text)] -> MetaData

-- | Amount representing a monetary value. Stripe represents pennies as
--   whole numbers i.e. 100 = $1
newtype Amount
Amount :: Int -> Amount
[getAmount] :: Amount -> Int
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFeeRefund.GetApplicationFeeRefunds Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFeeRefund.GetApplicationFeeRefunds (Web.Stripe.Types.EndingBefore Web.Stripe.Types.RefundId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFeeRefund.GetApplicationFeeRefunds Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFeeRefund.GetApplicationFeeRefunds (Web.Stripe.Types.StartingAfter Web.Stripe.Types.RefundId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFeeRefund.UpdateApplicationFeeRefund Web.Stripe.Types.MetaData
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFeeRefund.GetApplicationFeeRefund Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFeeRefund.CreateApplicationFeeRefund Web.Stripe.Types.Amount
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFeeRefund.CreateApplicationFeeRefund Web.Stripe.Types.MetaData


-- | <a>https://stripe.com/docs/api#application_fees</a>
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings #-}
--   import Web.Stripe
--   import Web.Stripe.ApplicationFee
--   
--   main :: IO ()
--   main = do
--     let config = StripeConfig (StripeKey "secret_key")
--     result &lt;- stripe config $ getApplicationFee (FeeId "fee_4xtEGZhPNDEt3w")
--     case result of
--       Right applicationFee -&gt; print applicationFee
--       Left stripeError     -&gt; print stripeError
--   </pre>
module Web.Stripe.ApplicationFee
data GetApplicationFee

-- | <a>ApplicationFee</a> retrieval
getApplicationFee :: FeeId -> StripeRequest GetApplicationFee
data GetApplicationFees

-- | <a>ApplicationFee</a>s retrieval
getApplicationFees :: StripeRequest GetApplicationFees

-- | <a>ApplicationId</a> object
newtype ApplicationId
ApplicationId :: Text -> ApplicationId

-- | ApplicationFee Object
data ApplicationFee
ApplicationFee :: ApplicationFeeId -> Text -> UTCTime -> Bool -> Int -> Currency -> Bool -> Int -> StripeList Refund -> Expandable TransactionId -> Expandable AccountId -> ApplicationId -> Expandable ChargeId -> MetaData -> ApplicationFee
[applicationFeeId] :: ApplicationFee -> ApplicationFeeId
[applicationFeeObjecet] :: ApplicationFee -> Text
[applicationFeeCreated] :: ApplicationFee -> UTCTime
[applicationFeeLiveMode] :: ApplicationFee -> Bool
[applicationFeeAmount] :: ApplicationFee -> Int
[applicationFeeCurrency] :: ApplicationFee -> Currency
[applicationFeeRefunded] :: ApplicationFee -> Bool
[applicationFeeAmountRefunded] :: ApplicationFee -> Int
[applicationFeeRefunds] :: ApplicationFee -> StripeList Refund
[applicationFeeBalanceTransaction] :: ApplicationFee -> Expandable TransactionId
[applicationFeeAccountId] :: ApplicationFee -> Expandable AccountId
[applicationFeeApplicationId] :: ApplicationFee -> ApplicationId
[applicationFeeChargeId] :: ApplicationFee -> Expandable ChargeId
[applicationFeeMetaData] :: ApplicationFee -> MetaData

-- | <a>PlanId</a> for a <a>Plan</a>
newtype ApplicationFeeId
ApplicationFeeId :: Text -> ApplicationFeeId

-- | <a>ChargeId</a> associated with a <a>Charge</a>
newtype ChargeId
ChargeId :: Text -> ChargeId

-- | Connect Application
data ConnectApp
ConnectApp :: Maybe Text -> Text -> Text -> ConnectApp
[connectAppId] :: ConnectApp -> Maybe Text
[connectAppObject] :: ConnectApp -> Text
[connectAppName] :: ConnectApp -> Text

-- | <a>Created</a>
newtype Created
Created :: UTCTime -> Created

-- | Pagination Option for <a>StripeList</a>
newtype EndingBefore a
EndingBefore :: a -> EndingBefore a

-- | <a>FeeId</a> for objects with Fees
newtype FeeId
FeeId :: Text -> FeeId

-- | Pagination Option for <a>StripeList</a>
newtype Limit
Limit :: Int -> Limit

-- | Pagination Option for <a>StripeList</a>
newtype StartingAfter a
StartingAfter :: a -> StartingAfter a

-- | Generic handling of Stripe JSON arrays
data StripeList a
StripeList :: [a] -> Text -> Text -> Maybe Int -> Bool -> StripeList a
[list] :: StripeList a -> [a]
[stripeUrl] :: StripeList a -> Text
[object] :: StripeList a -> Text
[totalCount] :: StripeList a -> Maybe Int
[hasMore] :: StripeList a -> Bool

-- | Type of Expansion Parameters for use on <tt>Stripe</tt> objects
newtype ExpandParams
ExpandParams :: [Text] -> ExpandParams
[getExpandParams] :: ExpandParams -> [Text]
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFee.GetApplicationFees Web.Stripe.Types.ExpandParams
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFee.GetApplicationFees Web.Stripe.Types.ChargeId
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFee.GetApplicationFees Web.Stripe.Types.Created
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFee.GetApplicationFees (Web.Stripe.Types.EndingBefore Web.Stripe.Types.ApplicationFeeId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFee.GetApplicationFees Web.Stripe.Types.Limit
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFee.GetApplicationFees (Web.Stripe.Types.StartingAfter Web.Stripe.Types.ApplicationFeeId)
instance Web.Stripe.StripeRequest.StripeHasParam Web.Stripe.ApplicationFee.GetApplicationFee Web.Stripe.Types.ExpandParams
