Repository: VictorAvelar/mollie-api-go
Pull request #107 (2020-11-10 20:17:52)

Rollback structs as values
<!--- Provide a general summary of your changes in the Title above -->

## Description

Rollback the use of values instead of pointers as when talking about structs, they have no empty value. This issue breaks all the requests where the body needs to be serialized to json and empty values are sent.

[Playground](https://play.golang.org/p/AYlcBaCDszL)

## Motivation and context

Why is this change required? What problem does it solve?

Fixed a self introduced bug.

## How has this been tested?

Please describe in detail how you tested your changes.

This is a rollback so tests were also reverted

## Types of changes

What types of changes does your code introduce? Put an `x` in all the boxes that apply:
- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)

## Checklist:

Go over all the following points, and put an `x` in all the boxes that apply.

Please, please, please, don't send your pull request until all of the boxes are ticked. Once your pull request is created, it will trigger a build on our continuous integration server to make sure your [tests and code style pass](https://help.github.com/articles/about-required-status-checks/).

- [x] I have read the **[CONTRIBUTING](CONTRIBUTING.md)** document.
- [x] My pull request addresses exactly one patch/feature.
- [x] I have created a branch for this patch/feature.
- [x] Each individual commit in the pull request is meaningful.
- [x] I have added tests to cover my changes.
- [x] If my change requires a change to the documentation, I have updated it accordingly.

If you're unsure about any of these, don't hesitate to ask. We're here to help!



Patch:
diff --git a/.goreleaser.yml b/.goreleaser.yml
index 0d51dc1..e30aab5 100644
--- a/.goreleaser.yml
+++ b/.goreleaser.yml
@@ -6,6 +6,6 @@ changelog:
   sort: desc
   filters:
     exclude:
-      - "^docs"
-      - "^changelog"
-      - "Merge pull request^"
\ No newline at end of file
+      - ^docs
+      - ^changelog
+      - Merge pull request^
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5006151..bf79f09 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,17 @@ Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) princip
 
 ## master
 
+## v2.1.0
+
+## Changed
+- Rollback to use pointers inside struct tags as structs have no empty value
+and thus the usage of values instead of pointers breaks most of the post requests.
+
+## v2.0.2
+
+### Fixed
+- Normalized wording across structs
+
 ## v2.0.1
 
 ### Fixed
diff --git a/docs/README.md b/docs/README.md
index c6dad2b..398e8a8 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -117,8 +117,8 @@ PaymentSession from Apple.
 
 ```go
 type ApplicationFee struct {
-	Amount      Amount `json:"amount,omitempty"`
-	Description string `json:"description,omitempty"`
+	Amount      *Amount `json:"amount,omitempty"`
+	Description string  `json:"description,omitempty"`
 }
 ```
 
@@ -132,12 +132,12 @@ type Capture struct {
 	Resource         string       `json:"resource,omitempty"`
 	ID               string       `json:"id,omitempty"`
 	Mode             Mode         `json:"mode,omitempty"`
-	Amount           Amount       `json:"amount,omitempty"`
-	SettlementAmount Amount       `json:"settlementAmount,omitempty"`
+	Amount           *Amount      `json:"amount,omitempty"`
+	SettlementAmount *Amount      `json:"settlementAmount,omitempty"`
 	PaymentID        string       `json:"paymentId,omitempty"`
 	ShipmentID       string       `json:"shipmentId,omitempty"`
 	SettlementID     string       `json:"settlementId,omitempty"`
-	CreatedAt        time.Time    `json:"createdAt,omitempty"`
+	CreatedAt        *time.Time   `json:"createdAt,omitempty"`
 	Links            CaptureLinks `json:"links,omitempty"`
 }
 ```
@@ -149,11 +149,11 @@ authorize-then-capture flow
 
 ```go
 type CaptureLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Payment       URL `json:"payment,omitempty"`
-	Shipment      URL `json:"shipment,omitempty"`
-	Settlement    URL `json:"settlement,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Payment       *URL `json:"payment,omitempty"`
+	Shipment      *URL `json:"shipment,omitempty"`
+	Settlement    *URL `json:"settlement,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 ```
 
@@ -165,7 +165,7 @@ CaptureLinks contains relevant links for a capture object
 type CapturesList struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Captures []Capture
+		Captures []*Capture
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"_links,omitempty"`
 }
@@ -267,10 +267,10 @@ Available category codes
 type Chargeback struct {
 	Resource         string          `json:"resource,omitempty"`
 	ID               string          `json:"id,omitempty"`
-	Amount           Amount          `json:"amount,omitempty"`
-	SettlementAmount Amount          `json:"settlementAmount,omitempty"`
-	CreatedAt        time.Time       `json:"createdAt,omitempty"`
-	ReversedAt       time.Time       `json:"reversedAt,omitempty"`
+	Amount           *Amount         `json:"amount,omitempty"`
+	SettlementAmount *Amount         `json:"settlementAmount,omitempty"`
+	CreatedAt        *time.Time      `json:"createdAt,omitempty"`
+	ReversedAt       *time.Time      `json:"reversedAt,omitempty"`
 	PaymentID        string          `json:"paymentId,omitempty"`
 	Links            ChargebackLinks `json:"_links,omitempty"`
 }
@@ -283,10 +283,10 @@ bank
 
 ```go
 type ChargebackLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Payment       URL `json:"payment,omitempty"`
-	Settlement    URL `json:"settlement,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Payment       *URL `json:"payment,omitempty"`
+	Settlement    *URL `json:"settlement,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 ```
 
@@ -466,7 +466,7 @@ type Customer struct {
 	Email     string                 `json:"email,omitempty"`
 	Locale    Locale                 `json:"locale,omitempty"`
 	Metadata  map[string]interface{} `json:"metadata,omitempty"`
-	CreatedAt time.Time              `json:"createdAt,omitempty"`
+	CreatedAt *time.Time             `json:"createdAt,omitempty"`
 	Links     CustomerLinks          `json:"_links,omitempty"`
 }
 ```
@@ -477,12 +477,12 @@ Customer represents buyers
 
 ```go
 type CustomerLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Mandates      URL `json:"mandates,omitempty"`
-	Subscriptions URL `json:"subscriptions,omitempty"`
-	Payments      URL `json:"payments,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
-	Dashboard     URL `json:"dashboard,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Mandates      *URL `json:"mandates,omitempty"`
+	Subscriptions *URL `json:"subscriptions,omitempty"`
+	Payments      *URL `json:"payments,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
+	Dashboard     *URL `json:"dashboard,omitempty"`
 }
 ```
 
@@ -747,8 +747,8 @@ Valid issuer statuses
 
 ```go
 type GiftCardLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 ```
 
@@ -778,10 +778,10 @@ type Invoice struct {
 	IssuedAt    string        `json:"issuedAt,omitempty"`
 	PaidAt      string        `json:"paidAt,omitempty"`
 	DueAt       string        `json:"dueAt,omitempty"`
-	NetAmount   Amount        `json:"netAmount,omitempty"`
-	VatAmount   Amount        `json:"vatAmount,omitempty"`
-	GrossAmount Amount        `json:"grossAmount,omitempty"`
-	Lines       []LineItem    `json:"lines,omitempty"`
+	NetAmount   *Amount       `json:"netAmount,omitempty"`
+	VatAmount   *Amount       `json:"vatAmount,omitempty"`
+	GrossAmount *Amount       `json:"grossAmount,omitempty"`
+	Lines       []*LineItem   `json:"lines,omitempty"`
 	Links       InvoiceLinks  `json:"_links,omitempty"`
 }
 ```
@@ -792,9 +792,9 @@ Invoice describes an invoice details
 
 ```go
 type InvoiceLinks struct {
-	Self          URL `json:"self,omitempty"`
-	PDF           URL `json:"pdf,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	PDF           *URL `json:"pdf,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 ```
 
@@ -862,7 +862,7 @@ type LineItem struct {
 	Description   string  `json:"description,omitempty"`
 	Count         int64   `json:"count,omitempty"`
 	VatPercentage float64 `json:"vatPercentage,omitempty"`
-	Amount        Amount  `json:"amount,omitempty"`
+	Amount        *Amount `json:"amount,omitempty"`
 }
 ```
 
@@ -929,7 +929,7 @@ of mandates to retrieve
 type ListMethods struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Methods []PaymentMethodInfo
+		Methods []*PaymentMethodInfo
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"_links,omitempty"`
 }
@@ -1012,11 +1012,11 @@ type Mandate struct {
 	ConsumerName     string         `json:"consumerName,omitempty"`
 	ConsumerAccount  string         `json:"consumerAccount,omitempty"`
 	ConsumerBic      string         `json:"consumerBic,omitempty"`
-	SignatureDate    ShortDate      `json:"signatureDate,omitempty"`
+	SignatureDate    *ShortDate     `json:"signatureDate,omitempty"`
 	MandateReference string         `json:"mandateReference,omitempty"`
 	Mode             Mode           `json:"mode,omitempty"`
 	Status           MandateStatus  `json:"status,omitempty"`
-	CreatedAt        time.Time      `json:"createdAt,omitempty"`
+	CreatedAt        *time.Time     `json:"createdAt,omitempty"`
 	Details          MandateDetails `json:"details,omitempty"`
 	Links            MandateLinks   `json:"_links,omitempty"`
 }
@@ -1029,14 +1029,14 @@ recurrently.
 
 ```go
 type MandateDetails struct {
-	ConsumerName    string    `json:"consumerName,omitempty"`
-	ConsumerAccount string    `json:"consumerAccount,omitempty"`
-	ConsumerBic     string    `json:"consumerBic,omitempty"`
-	CardHolder      string    `json:"cardHolder,omitempty"`
-	CardNumber      string    `json:"cardNumber,omitempty"`
-	CardLabel       CardLabel `json:"cardLabel,omitempty"`
-	CardFingerprint string    `json:"cardFingerprint,omitempty"`
-	CardExpiryDate  ShortDate `json:"cardExpiryDate,omitempty"`
+	ConsumerName    string     `json:"consumerName,omitempty"`
+	ConsumerAccount string     `json:"consumerAccount,omitempty"`
+	ConsumerBic     string     `json:"consumerBic,omitempty"`
+	CardHolder      string     `json:"cardHolder,omitempty"`
+	CardNumber      string     `json:"cardNumber,omitempty"`
+	CardLabel       CardLabel  `json:"cardLabel,omitempty"`
+	CardFingerprint string     `json:"cardFingerprint,omitempty"`
+	CardExpiryDate  *ShortDate `json:"cardExpiryDate,omitempty"`
 }
 ```
 
@@ -1046,9 +1046,9 @@ MandateDetails are possible values inside the mandate.details field
 
 ```go
 type MandateLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Customer      URL `json:"customer,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Customer      *URL `json:"customer,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 ```
 
@@ -1138,8 +1138,8 @@ See: https://docs.mollie.com/reference/v2/mandates-api/revoke-mandate
 
 ```go
 type MethodsLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 ```
 
@@ -1248,35 +1248,35 @@ type Order struct {
 	ProfileID           string        `json:"profileId,omitempty"`
 	Method              PaymentMethod `json:"method,omitempty"`
 	Mode                Mode          `json:"mode,omitempty"`
-	Amount              Amount        `json:"amount,omitempty"`
-	AmountCaptured      Amount        `json:"amountCaptured,omitempty"`
-	AmountRefunded      Amount        `json:"amountRefunded,omitempty"`
+	Amount              *Amount       `json:"amount,omitempty"`
+	AmountCaptured      *Amount       `json:"amountCaptured,omitempty"`
+	AmountRefunded      *Amount       `json:"amountRefunded,omitempty"`
 	Status              OrderStatus   `json:"status,omitempty"`
 	IsCancelable        bool          `json:"isCancelable,omitempty"`
-	BillingAddress      OrderAddress  `json:"billingAddress,omitempty"`
-	ConsumerDateOfBirth ShortDate     `json:"consumerDateOfBirth,omitempty"`
+	BillingAddress      *OrderAddress `json:"billingAddress,omitempty"`
+	ConsumerDateOfBirth *ShortDate    `json:"consumerDateOfBirth,omitempty"`
 	OrderNumber         string        `json:"orderNumber,omitempty"`
 	ShippingAddress     OrderAddress  `json:"shippingAddress,omitempty"`
 	Locale              Locale        `json:"locale,omitempty"`
 	Metadata            interface{}   `json:"metadata,omitempty"`
 	RedirectURL         string        `json:"redirectUrl,omitempty"`
-	Lines               []OrderLine   `json:"lines,omitempty"`
+	Lines               []*OrderLine  `json:"lines,omitempty"`
 	WebhookURL          string        `json:"webhookUrl,omitempty"`
-	CreatedAt           time.Time     `json:"createdAt,omitempty"`
-	ExpiresAt           time.Time     `json:"expiresAt,omitempty"`
-	ExpiredAt           time.Time     `json:"expiredAt,omitempty"`
-	PaidAt              time.Time     `json:"paidAt,omitempty"`
-	AuthorizedAt        time.Time     `json:"authorizedAt,omitempty"`
-	CanceledAt          time.Time     `json:"canceledAt,omitempty"`
-	CompletedAt         time.Time     `json:"completedAt,omitempty"`
+	CreatedAt           *time.Time    `json:"createdAt,omitempty"`
+	ExpiresAt           *time.Time    `json:"expiresAt,omitempty"`
+	ExpiredAt           *time.Time    `json:"expiredAt,omitempty"`
+	PaidAt              *time.Time    `json:"paidAt,omitempty"`
+	AuthorizedAt        *time.Time    `json:"authorizedAt,omitempty"`
+	CanceledAt          *time.Time    `json:"canceledAt,omitempty"`
+	CompletedAt         *time.Time    `json:"completedAt,omitempty"`
 	Embedded            struct {
-		Payments []Payment `json:"payments,omitempty"`
-		Refunds  []Refund  `json:"refunds,omitempty"`
+		Payments []*Payment `json:"payments,omitempty"`
+		Refunds  []*Refund  `json:"refunds,omitempty"`
 	} `json:"_embedded,omitempty"`
-	Links                                    OrderLinks   `json:"_links,omitempty"`
-	OrderPayment                             OrderPayment `json:"payment,omitempty"`
-	Description                              string       `json:"description,omitempty"`
-	ShopperCountryMustMatchTheBillingCountry bool         `json:"shopperCountryMustMatchTheBillingCountry,omitempty"`
+	Links                                    OrderLinks    `json:"_links,omitempty"`
+	OrderPayment                             *OrderPayment `json:"payment,omitempty"`
+	Description                              string        `json:"description,omitempty"`
+	ShopperCountryMustMatchTheBillingCountry bool          `json:"shopperCountryMustMatchTheBillingCountry,omitempty"`
 }
 ```
 
@@ -1313,26 +1313,26 @@ type OrderLine struct {
 	OrderID            string          `json:"orderId,omitempty"`
 	ProductType        ProductType     `json:"type,omitempty"`
 	Name               string          `json:"name,omitempty"`
-	Amount             Amount          `json:"amount,omitempty"`
+	Amount             *Amount         `json:"amount,omitempty"`
 	Status             OrderLineStatus `json:"status,omitempty"`
 	IsCancelable       bool            `json:"isCancelable,omitempty"`
 	Quantity           int             `json:"quantity,omitempty"`
 	QuantityShipped    int             `json:"quantityShipped,omitempty"`
-	AmountShipped      Amount          `json:"amountShipped,omitempty"`
+	AmountShipped      *Amount         `json:"amountShipped,omitempty"`
 	QuantityRefunded   int             `json:"quantityRefunded,omitempty"`
-	AmountRefunded     Amount          `json:"amountRefunded,omitempty"`
+	AmountRefunded     *Amount         `json:"amountRefunded,omitempty"`
 	QuantityCanceled   int             `json:"quantityCanceled,omitempty"`
-	AmountCanceled     Amount          `json:"amountCanceled,omitempty"`
+	AmountCanceled     *Amount         `json:"amountCanceled,omitempty"`
 	ShippableQuantity  int             `json:"shippableQuantity,omitempty"`
 	RefundableQuantity int             `json:"refundableQuantity,omitempty"`
 	CancelableQuantity int             `json:"cancelableQuantity,omitempty"`
-	UnitPrice          Amount          `json:"unitPrice,omitempty"`
-	DiscountAmount     Amount          `json:"discountAmount,omitempty"`
-	TotalAmount        Amount          `json:"totalAmount,omitempty"`
+	UnitPrice          *Amount         `json:"unitPrice,omitempty"`
+	DiscountAmount     *Amount         `json:"discountAmount,omitempty"`
+	TotalAmount        *Amount         `json:"totalAmount,omitempty"`
 	VatRate            string          `json:"vatRate,omitempty"`
-	VatAmount          Amount          `json:"vatAmount,omitempty"`
+	VatAmount          *Amount         `json:"vatAmount,omitempty"`
 	SKU                string          `json:"sku,omitempty"`
-	CreatedAt          time.Time       `json:"createdAt,omitempty"`
+	CreatedAt          *time.Time      `json:"createdAt,omitempty"`
 	Links              OrderLineLinks  `json:"_links,omitempty"`
 	ImageURL           string          `json:"imageUrl,omitempty"`
 	ProductURL         string          `json:"productUrl,omitempty"`
@@ -1345,8 +1345,8 @@ OrderLine contain the actual things the customer bought.
 
 ```go
 type OrderLineLinks struct {
-	ProductURL URL `json:"productUrl,omitempty"`
-	ImageURL   URL `json:"imageUrl,omitempty"`
+	ProductURL *URL `json:"productUrl,omitempty"`
+	ImageURL   *URL `json:"imageUrl,omitempty"`
 }
 ```
 
@@ -1377,10 +1377,10 @@ Valid order line status.
 
 ```go
 type OrderLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Checkout      URL `json:"checkout,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
-	Dashboard     URL `json:"dashboard,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Checkout      *URL `json:"checkout,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
+	Dashboard     *URL `json:"dashboard,omitempty"`
 }
 ```
 
@@ -1393,7 +1393,7 @@ Every URL object will contain an href and a type field.
 type OrderList struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Orders []Order `json:"orders,omitempty"`
+		Orders []*Order `json:"orders,omitempty"`
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"links,omitempty"`
 }
@@ -1419,7 +1419,7 @@ OrderListOptions describes order endpoint valid query string parameters.
 type OrderListRefund struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Refunds []Refund `json:"refund,omitempty"`
+		Refunds []*Refund `json:"refund,omitempty"`
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"links,omitempty"`
 }
@@ -1454,17 +1454,17 @@ OrderOptions describes order endpoint valid query string parameters.
 
 ```go
 type OrderPayment struct {
-	ConsumerAccount   string         `json:"consumerAccount,omitempty"`
-	CustomerID        string         `json:"customerId,omitempty"`
-	CustomerReference string         `json:"customerReference,omitempty"`
-	Issuer            string         `json:"issuer,omitempty"`
-	MandateID         string         `json:"mandateId,omitempty"`
-	SequenceType      *SequenceType  `json:"sequenceType,omitempty"`
-	VoucherNumber     string         `json:"voucherNumber,omitempty"`
-	VoucherPin        string         `json:"voucherPin,omitempty"`
-	WebhookURL        string         `json:"webhookUrl,omitempty"`
-	ApplicationFee    ApplicationFee `json:"applicationFee,omitempty"`
-	Method            PaymentMethod  `json:"method,omitempty"`
+	ConsumerAccount   string          `json:"consumerAccount,omitempty"`
+	CustomerID        string          `json:"customerId,omitempty"`
+	CustomerReference string          `json:"customerReference,omitempty"`
+	Issuer            string          `json:"issuer,omitempty"`
+	MandateID         string          `json:"mandateId,omitempty"`
+	SequenceType      SequenceType    `json:"sequenceType,omitempty"`
+	VoucherNumber     string          `json:"voucherNumber,omitempty"`
+	VoucherPin        string          `json:"voucherPin,omitempty"`
+	WebhookURL        string          `json:"webhookUrl,omitempty"`
+	ApplicationFee    *ApplicationFee `json:"applicationFee,omitempty"`
+	Method            PaymentMethod   `json:"method,omitempty"`
 }
 ```
 
@@ -1600,7 +1600,7 @@ type Organization struct {
 	Name               string            `json:"name,omitempty"`
 	Email              string            `json:"email,omitempty"`
 	Locale             string            `json:"locale,omitempty"`
-	Address            Address           `json:"address,omitempty"`
+	Address            *Address          `json:"address,omitempty"`
 	RegistrationNumber string            `json:"registrationNumber,omitempty"`
 	VatNumber          string            `json:"vatNumber,omitempty"`
 	VatRegulation      string            `json:"vatRegulation,omitempty"`
@@ -1614,16 +1614,16 @@ Organization describes an organization detail
 
 ```go
 type OrganizationLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Chargebacks   URL `json:"chargebacks,omitempty"`
-	Customers     URL `json:"customers,omitempty"`
-	Dashboard     URL `json:"dashboard,omitempty"`
-	Invoices      URL `json:"invoices,omitempty"`
-	Payments      URL `json:"payments,omitempty"`
-	Profiles      URL `json:"profiles,omitempty"`
-	Refunds       URL `json:"refunds,omitempty"`
-	Settlements   URL `json:"settlements,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Chargebacks   *URL `json:"chargebacks,omitempty"`
+	Customers     *URL `json:"customers,omitempty"`
+	Dashboard     *URL `json:"dashboard,omitempty"`
+	Invoices      *URL `json:"invoices,omitempty"`
+	Payments      *URL `json:"payments,omitempty"`
+	Profiles      *URL `json:"profiles,omitempty"`
+	Refunds       *URL `json:"refunds,omitempty"`
+	Settlements   *URL `json:"settlements,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 ```
 
@@ -1669,41 +1669,41 @@ PaginationLinks describes the hal component of paginated responses.
 
 ```go
 type Payment struct {
-	Resource                        string         `json:"resource,omitempty"`
-	ID                              string         `json:"id,omitempty"`
-	Mode                            Mode           `json:"mode,omitempty"`
-	CreatedAt                       time.Time      `json:"createdAt,omitempty"`
-	Status                          string         `json:"status,omitempty"`
-	IsCancellable                   bool           `json:"isCancellable,omitempty"`
-	AuthorizedAt                    time.Time      `json:"authorizedAt,omitempty"`
-	PaidAt                          time.Time      `json:"paidAt,omitempty"`
-	CanceledAt                      time.Time      `json:"canceledAt,omitempty"`
-	ExpiresAt                       time.Time      `json:"expiresAt,omitempty"`
-	ExpiredAt                       time.Time      `json:"expiredAt,omitempty"`
-	FailedAt                        time.Time      `json:"failedAt,omitempty"`
-	Amount                          Amount         `json:"amount,omitempty"`
-	AmountRefunded                  Amount         `json:"amountRefunded,omitempty"`
-	AmountRemaining                 Amount         `json:"amountRemaining,omitempty"`
-	AmountCaptured                  Amount         `json:"amountCaptured,omitempty"`
-	Description                     string         `json:"description,omitempty"`
-	RedirectURL                     string         `json:"redirectUrl,omitempty"`
-	WebhookURL                      string         `json:"webhookUrl,omitempty"`
-	Method                          PaymentMethod  `json:"method,omitempty"`
-	Metadata                        interface{}    `json:"metadata,omitempty"`
-	Locale                          Locale         `json:"locale,omitempty"`
-	CountryCode                     string         `json:"countryCode,omitempty"`
-	ProfileID                       string         `json:"profileId,omitempty"`
-	SettlementAmount                Amount         `json:"settlementAmount,omitempty"`
-	SettlementID                    string         `json:"settlementId,omitempty"`
-	CustomerID                      string         `json:"customerId,omitempty"`
-	SequenceType                    SequenceType   `json:"sequenceType,omitempty"`
-	MandateID                       string         `json:"mandateId,omitempty"`
-	OrderID                         string         `json:"orderId,omitempty"`
-	ApplicationFee                  ApplicationFee `json:"applicationFee,omitempty"`
-	Links                           PaymentLinks   `json:"_links,omitempty"`
-	Details                         PaymentDetails `json:"details,omitempty"`
-	RestrictPaymentMethodsToCountry Locale         `json:"restrictPaymentMethodsToCountry,omitempty"`
-	SubscriptionID                  string         `json:"subscriptionId,omitempty"`
+	Resource                        string          `json:"resource,omitempty"`
+	ID                              string          `json:"id,omitempty"`
+	Mode                            Mode            `json:"mode,omitempty"`
+	CreatedAt                       *time.Time      `json:"createdAt,omitempty"`
+	Status                          string          `json:"status,omitempty"`
+	IsCancellable                   bool            `json:"isCancellable,omitempty"`
+	AuthorizedAt                    *time.Time      `json:"authorizedAt,omitempty"`
+	PaidAt                          *time.Time      `json:"paidAt,omitempty"`
+	CanceledAt                      *time.Time      `json:"canceledAt,omitempty"`
+	ExpiresAt                       *time.Time      `json:"expiresAt,omitempty"`
+	ExpiredAt                       *time.Time      `json:"expiredAt,omitempty"`
+	FailedAt                        *time.Time      `json:"failedAt,omitempty"`
+	Amount                          *Amount         `json:"amount,omitempty"`
+	AmountRefunded                  *Amount         `json:"amountRefunded,omitempty"`
+	AmountRemaining                 *Amount         `json:"amountRemaining,omitempty"`
+	AmountCaptured                  *Amount         `json:"amountCaptured,omitempty"`
+	Description                     string          `json:"description,omitempty"`
+	RedirectURL                     string          `json:"redirectUrl,omitempty"`
+	WebhookURL                      string          `json:"webhookUrl,omitempty"`
+	Method                          PaymentMethod   `json:"method,omitempty"`
+	Metadata                        interface{}     `json:"metadata,omitempty"`
+	Locale                          Locale          `json:"locale,omitempty"`
+	CountryCode                     string          `json:"countryCode,omitempty"`
+	ProfileID                       string          `json:"profileId,omitempty"`
+	SettlementAmount                *Amount         `json:"settlementAmount,omitempty"`
+	SettlementID                    string          `json:"settlementId,omitempty"`
+	CustomerID                      string          `json:"customerId,omitempty"`
+	SequenceType                    SequenceType    `json:"sequenceType,omitempty"`
+	MandateID                       string          `json:"mandateId,omitempty"`
+	OrderID                         string          `json:"orderId,omitempty"`
+	ApplicationFee                  *ApplicationFee `json:"applicationFee,omitempty"`
+	Links                           PaymentLinks    `json:"_links,omitempty"`
+	Details                         *PaymentDetails `json:"details,omitempty"`
+	RestrictPaymentMethodsToCountry Locale          `json:"restrictPaymentMethodsToCountry,omitempty"`
+	SubscriptionID                  string          `json:"subscriptionId,omitempty"`
 }
 ```
 
@@ -1731,29 +1731,29 @@ type PaymentDetails struct {
 	ConsumerName       string             `json:"consumerName,omitempty"`
 	ConsumerReference  string             `json:"consumerReference,omitempty"`
 	CreditorIdentifier string             `json:"creditorIdentifier,omitempty"`
-	DueDate            ShortDate          `json:"dueDate,omitempty"`
+	DueDate            *ShortDate         `json:"dueDate,omitempty"`
 	EndToEndIdentifier string             `json:"endToEndIdentifier,omitempty"`
 	FailureReason      FailureReason      `json:"failureReason,omitempty"`
 	FeeRegion          FeeRegion          `json:"feeRegion,omitempty"`
 	FileReference      string             `json:"fileReference,omitempty"`
-	GiftCards          []UsedGiftCard     `json:"giftCards,omitempty"`
+	GiftCards          []*UsedGiftCard    `json:"giftCards,omitempty"`
 	MandateReference   string             `json:"mandateReference,omitempty"`
 	PaypalDigitalGoods bool               `json:"digitalGoods,omitempty"`
 	PaypalFee          Amount             `json:"paypalFee,omitempty"`
 	PaypalPayerID      string             `json:"paypalPayerId,omitempty"`
 	PaypalReference    string             `json:"paypalReference,omitempty"`
-	QRCode             QRCode             `json:"qrCode,omitempty"`
-	RemainderAmount    Amount             `json:"remainderAmount,omitempty"`
+	QRCode             *QRCode            `json:"qrCode,omitempty"`
+	RemainderAmount    *Amount            `json:"remainderAmount,omitempty"`
 	RemainderMethod    PaymentMethod      `json:"remainderMethod,omitempty"`
 	SellerProtection   EligibilityReasons `json:"sellerProtection,omitempty"`
 	ShippingAddress    string             `json:"shippingAddress,omitempty"`
-	SignatureDate      ShortDate          `json:"signatureDate,omitempty"`
+	SignatureDate      *ShortDate         `json:"signatureDate,omitempty"`
 	TransferReference  string             `json:"transferReference,omitempty"`
 	VoucherNumber      string             `json:"voucherNumber,omitempty"`
 	Wallet             string             `json:"wallet,omitempty"`
 	Links              struct {
-		Status    URL `json:"status,omitempty"`
-		PayOnline URL `json:"payOnline,omitempty"`
+		Status    *URL `json:"status,omitempty"`
+		PayOnline *URL `json:"payOnline,omitempty"`
 	} `json:"_links,omitempty"`
 }
 ```
@@ -1764,19 +1764,19 @@ PaymentDetails contains details for the specified payment method
 
 ```go
 type PaymentLinks struct {
-	Self               URL `json:"self,omitempty"`
-	Checkout           URL `json:"checkout,omitempty"`
-	ChangePaymentState URL `json:"changePaymentState,omitempty"`
-	Refunds            URL `json:"refunds,omitempty"`
-	ChargeBacks        URL `json:"chargebacks,omitempty"`
-	Captures           URL `json:"captures,omitempty"`
-	Settlement         URL `json:"settlement,omitempty"`
-	Documentation      URL `json:"documentation,omitempty"`
-	Mandate            URL `json:"mandate,omitempty"`
-	Subscription       URL `json:"subscription,omitempty"`
-	Customer           URL `json:"customer,omitempty"`
-	Order              URL `json:"order,omitempty"`
-	Dashboard          URL `json:"dashboard,omitempty"`
+	Self               *URL `json:"self,omitempty"`
+	Checkout           *URL `json:"checkout,omitempty"`
+	ChangePaymentState *URL `json:"changePaymentState,omitempty"`
+	Refunds            *URL `json:"refunds,omitempty"`
+	ChargeBacks        *URL `json:"chargebacks,omitempty"`
+	Captures           *URL `json:"captures,omitempty"`
+	Settlement         *URL `json:"settlement,omitempty"`
+	Documentation      *URL `json:"documentation,omitempty"`
+	Mandate            *URL `json:"mandate,omitempty"`
+	Subscription       *URL `json:"subscription,omitempty"`
+	Customer           *URL `json:"customer,omitempty"`
+	Order              *URL `json:"order,omitempty"`
+	Dashboard          *URL `json:"dashboard,omitempty"`
 }
 ```
 
@@ -1833,14 +1833,14 @@ Supported payment methods
 
 ```go
 type PaymentMethodInfo struct {
-	Resource      string                 `json:"resource,omitempty"`
-	ID            string                 `json:"id,omitempty"`
-	Description   string                 `json:"description,omitempty"`
-	MinimumAmount Amount                 `json:"minimumAmount,omitempty"`
-	MaximumAmount Amount                 `json:"maximumAmount,omitempty"`
-	Image         Image                  `json:"image,omitempty"`
-	Pricing       []PaymentMethodPricing `json:"pricing,omitempty"`
-	Links         MethodsLinks           `json:"_links,omitempty"`
+	Resource      string                  `json:"resource,omitempty"`
+	ID            string                  `json:"id,omitempty"`
+	Description   string                  `json:"description,omitempty"`
+	MinimumAmount *Amount                 `json:"minimumAmount,omitempty"`
+	MaximumAmount *Amount                 `json:"maximumAmount,omitempty"`
+	Image         *Image                  `json:"image,omitempty"`
+	Pricing       []*PaymentMethodPricing `json:"pricing,omitempty"`
+	Links         MethodsLinks            `json:"_links,omitempty"`
 }
 ```
 
@@ -1850,9 +1850,9 @@ PaymentMethodInfo describes a single method with details.
 
 ```go
 type PaymentMethodPricing struct {
-	Description string `json:"description,omitempty"`
-	Fixed       Amount `json:"fixed,omitempty"`
-	Variable    string `json:"variable,omitempty"`
+	Description string  `json:"description,omitempty"`
+	Fixed       *Amount `json:"fixed,omitempty"`
+	Variable    string  `json:"variable,omitempty"`
 }
 ```
 
@@ -1959,7 +1959,7 @@ Valid product type.
 type Profile struct {
 	ID           string       `json:"id,omitempty"`
 	CategoryCode CategoryCode `json:"categoryCode,omitempty"`
-	CreatedAt    time.Time    `json:"createdAt,omitempty"`
+	CreatedAt    *time.Time   `json:"createdAt,omitempty"`
 	Email        string       `json:"email,omitempty"`
 	Mode         Mode         `json:"mode,omitempty"`
 	Name         string       `json:"name,omitempty"`
@@ -1981,13 +1981,13 @@ website or application.
 
 ```go
 type ProfileLinks struct {
-	Self               URL `json:"self,omitempty"`
-	Chargebacks        URL `json:"chargebacks,omitempty"`
-	Methods            URL `json:"methods,omitempty"`
-	Refunds            URL `json:"refunds,omitempty"`
-	CheckoutPreviewURL URL `json:"checkoutPreviewUrl,omitempty"`
-	Documentation      URL `json:"documentation,omitempty"`
-	Dashboard          URL `json:"dashboard,omitempty"`
+	Self               *URL `json:"self,omitempty"`
+	Chargebacks        *URL `json:"chargebacks,omitempty"`
+	Methods            *URL `json:"methods,omitempty"`
+	Refunds            *URL `json:"refunds,omitempty"`
+	CheckoutPreviewURL *URL `json:"checkoutPreviewUrl,omitempty"`
+	Documentation      *URL `json:"documentation,omitempty"`
+	Dashboard          *URL `json:"dashboard,omitempty"`
 }
 ```
 
@@ -1999,7 +1999,7 @@ ProfileLinks contains URL's to relevant information related to a profile.
 type ProfileList struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Profiles []Profile `json:"profiles,omitempty"`
+		Profiles []*Profile `json:"profiles,omitempty"`
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"_links,omitempty"`
 }
@@ -2160,8 +2160,8 @@ QRCode object represents an image of a QR code.
 
 ```go
 type Rate struct {
-	Fixed    Amount `json:"fixed,omitempty"`
-	Variable string `json:"variable,omitempty"`
+	Fixed    *Amount `json:"fixed,omitempty"`
+	Variable string  `json:"variable,omitempty"`
 }
 ```
 
@@ -2173,16 +2173,16 @@ Rate describes service rates, further divided into fixed and percentage costs.
 type Refund struct {
 	Resource         string       `json:"resource,omitempty"`
 	ID               string       `json:"id,omitempty"`
-	Amount           Amount       `json:"amount,omitempty"`
+	Amount           *Amount      `json:"amount,omitempty"`
 	SettlementID     string       `json:"settlementId,omitempty"`
-	SettlementAmount Amount       `json:"settlementAmount,omitempty"`
+	SettlementAmount *Amount      `json:"settlementAmount,omitempty"`
 	Description      string       `json:"description,omitempty"`
 	Metadata         interface{}  `json:"metadata,omitempty"`
 	Status           RefundStatus `json:"status,omitempty"`
-	Lines            []OrderLine  `json:"lines,omitempty"`
+	Lines            []*OrderLine `json:"lines,omitempty"`
 	PaymentID        string       `json:"paymentId,omitempty"`
 	OrderID          string       `json:"orderId,omitempty"`
-	CreatedAt        time.Time    `json:"createdAt,omitempty"`
+	CreatedAt        *time.Time   `json:"createdAt,omitempty"`
 	Links            RefundLinks  `json:"_links,omitempty"`
 }
 ```
@@ -2193,11 +2193,11 @@ Refund describe a refund for a certain payment.
 
 ```go
 type RefundLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Payment       URL `json:"payment,omitempty"`
-	Settlement    URL `json:"settlement,omitempty"`
-	Order         URL `json:"order,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Payment       *URL `json:"payment,omitempty"`
+	Settlement    *URL `json:"settlement,omitempty"`
+	Order         *URL `json:"order,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 ```
 
@@ -2210,7 +2210,7 @@ object.
 type RefundList struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Refunds []Refund
+		Refunds []*Refund
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"_links,omitempty"`
 }
@@ -2340,10 +2340,10 @@ type Settlement struct {
 	ID        string           `json:"id,omitempty"`
 	Resource  string           `json:"resource,omitempty"`
 	Reference string           `json:"reference,omitempty"`
-	CreatedAt time.Time        `json:"createdAt,omitempty"`
-	SettledAt time.Time        `json:"settledAt,omitempty"`
+	CreatedAt *time.Time       `json:"createdAt,omitempty"`
+	SettledAt *time.Time       `json:"settledAt,omitempty"`
 	Status    SettlementStatus `json:"status,omitempty"`
-	Amount    Amount           `json:"amount,omitempty"`
+	Amount    *Amount          `json:"amount,omitempty"`
 	Periods   SettlementObject `json:"periods,omitempty"`
 	InvoiceID string           `json:"invoiceId,omitempty"`
 	Links     SettlementLinks  `json:"_links,omitempty"`
@@ -2358,11 +2358,11 @@ chargebacks into settlements
 ```go
 type SettlementCosts struct {
 	Description string        `json:"description,omitempty"`
-	AmountNet   Amount        `json:"amountNet,omitempty"`
-	AmountVAT   Amount        `json:"amountVat,omitempty"`
-	AmountGross Amount        `json:"amountGross,omitempty"`
+	AmountNet   *Amount       `json:"amountNet,omitempty"`
+	AmountVAT   *Amount       `json:"amountVat,omitempty"`
+	AmountGross *Amount       `json:"amountGross,omitempty"`
 	Count       int           `json:"count,omitempty"`
-	Rate        Rate          `json:"rate,omitempty"`
+	Rate        *Rate         `json:"rate,omitempty"`
 	Method      PaymentMethod `json:"method,omitempty"`
 }
 ```
@@ -2373,13 +2373,13 @@ SettlementCosts contains information about costs related to a settlement
 
 ```go
 type SettlementLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Payments      URL `json:"payments,omitempty"`
-	Refunds       URL `json:"refunds,omitempty"`
-	Chargebacks   URL `json:"chargebacks,omitempty"`
-	Captures      URL `json:"captures,omitempty"`
-	Invoice       URL `json:"invoice,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Payments      *URL `json:"payments,omitempty"`
+	Refunds       *URL `json:"refunds,omitempty"`
+	Chargebacks   *URL `json:"chargebacks,omitempty"`
+	Captures      *URL `json:"captures,omitempty"`
+	Invoice       *URL `json:"invoice,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 ```
 
@@ -2397,8 +2397,8 @@ SettlementObject nests as describes for settlement periods
 
 ```go
 type SettlementPeriod struct {
-	Revenue []SettlementRevenue `json:"revenue,omitempty"`
-	Costs   []SettlementCosts   `json:"costs,omitempty"`
+	Revenue []*SettlementRevenue `json:"revenue,omitempty"`
+	Costs   []*SettlementCosts   `json:"costs,omitempty"`
 }
 ```
 
@@ -2409,9 +2409,9 @@ SettlementPeriod describe the settlement by month in full detail
 ```go
 type SettlementRevenue struct {
 	Description string        `json:"description,omitempty"`
-	AmountNet   Amount        `json:"amountNet,omitempty"`
-	AmountVAT   Amount        `json:"amountVat,omitempty"`
-	AmountGross Amount        `json:"amountGross,omitempty"`
+	AmountNet   *Amount       `json:"amountNet,omitempty"`
+	AmountVAT   *Amount       `json:"amountVat,omitempty"`
+	AmountGross *Amount       `json:"amountGross,omitempty"`
 	Count       int           `json:"count,omitempty"`
 	Method      PaymentMethod `json:"method,omitempty"`
 }
@@ -2434,7 +2434,7 @@ SettlementStatus describes the status of the settlement
 type SettlementsList struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Settlements []Settlement
+		Settlements []*Settlement
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"_links,omitempty"`
 }
@@ -2446,7 +2446,7 @@ SettlementsList describes a list of settlements.
 
 ```go
 type SettlementsListOptions struct {
-	From  ShortDate  `url:"from,omitempty"`
+	From  *ShortDate `url:"from,omitempty"`
 	Limit int        `url:"limit,omitempty"`
 	Embed EmbedValue `url:"embed,omitempty"`
 }
@@ -2544,13 +2544,13 @@ See: https://docs.mollie.com/reference/v2/settlements-api/get-open-settlement
 
 ```go
 type Shipment struct {
-	Resource  string           `json:"resource,omitempty"`
-	ID        string           `json:"id,omitempty"`
-	OrderID   string           `json:"orderId,omitempty"`
-	CreatedAt time.Time        `json:"createdAt,omitempty"`
-	Tracking  ShipmentTracking `json:"tracking,omitempty"`
-	Lines     []OrderLine      `json:"lines,omitempty"`
-	Links     ShipmentLinks    `json:"_links,omitempty"`
+	Resource  string            `json:"resource,omitempty"`
+	ID        string            `json:"id,omitempty"`
+	OrderID   string            `json:"orderId,omitempty"`
+	CreatedAt *time.Time        `json:"createdAt,omitempty"`
+	Tracking  *ShipmentTracking `json:"tracking,omitempty"`
+	Lines     []*OrderLine      `json:"lines,omitempty"`
+	Links     ShipmentLinks     `json:"_links,omitempty"`
 }
 ```
 
@@ -2562,9 +2562,9 @@ digital content was delivered.
 
 ```go
 type ShipmentLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Order         URL `json:"order,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Order         *URL `json:"order,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 ```
 
@@ -2675,20 +2675,20 @@ type Subscription struct {
 	ID              string                 `json:"id,omitempty"`
 	MandateID       string                 `json:"mandateId,omitempty"`
 	Mode            Mode                   `json:"mode,omitempty"`
-	CreatedAT       time.Time              `json:"createdAt,omitempty"`
+	CreatedAT       *time.Time             `json:"createdAt,omitempty"`
 	Status          SubscriptionStatus     `json:"status,omitempty"`
-	Amount          Amount                 `json:"amount,omitempty"`
+	Amount          *Amount                `json:"amount,omitempty"`
 	Times           int                    `json:"times,omitempty"`
 	TimesRemaining  int                    `json:"timesRemaining,omitempty"`
 	Interval        string                 `json:"interval,omitempty"`
-	StartDate       ShortDate              `json:"startDate,omitempty"`
-	NextPaymentDate ShortDate              `json:"nextPaymentDate,omitempty"`
+	StartDate       *ShortDate             `json:"startDate,omitempty"`
+	NextPaymentDate *ShortDate             `json:"nextPaymentDate,omitempty"`
 	Description     string                 `json:"description,omitempty"`
 	Method          PaymentMethod          `json:"method,omitempty"`
-	CanceledAt      time.Time              `json:"canceledAt,omitempty"`
+	CanceledAt      *time.Time             `json:"canceledAt,omitempty"`
 	WebhookURL      string                 `json:"webhookUrl,omitempty"`
 	Metadata        map[string]interface{} `json:"metadata,omitempty"`
-	ApplicationFee  ApplicationFee         `json:"applicationFee,omitempty"`
+	ApplicationFee  *ApplicationFee        `json:"applicationFee,omitempty"`
 	Links           SubscriptionLinks      `json:"_links,omitempty"`
 }
 ```
@@ -2699,10 +2699,10 @@ Subscription contains information about a customer subscription
 
 ```go
 type SubscriptionLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Customer      URL `json:"customer,omitempty"`
-	Payments      URL `json:"payments,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Customer      *URL `json:"customer,omitempty"`
+	Payments      *URL `json:"payments,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 ```
 
@@ -2714,7 +2714,7 @@ SubscriptionLinks contains several URL objects relevant to the subscription
 type SubscriptionList struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Subscriptions []Subscription
+		Subscriptions []*Subscription
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"_links,omitempty"`
 }
@@ -2845,9 +2845,9 @@ URL in Mollie are commonly represented as objects with an href and type field.
 
 ```go
 type UsedGiftCard struct {
-	Issuer        string `json:"issuer,omitempty"`
-	Amount        Amount `json:"amount,omitempty"`
-	VoucherNumber string `json:"voucherNumber,omitempty"`
+	Issuer        string  `json:"issuer,omitempty"`
+	Amount        *Amount `json:"amount,omitempty"`
+	VoucherNumber string  `json:"voucherNumber,omitempty"`
 }
 ```
 
diff --git a/examples/customers/customer.go b/examples/customers/customer.go
index 4f283d1..bdb8d51 100644
--- a/examples/customers/customer.go
+++ b/examples/customers/customer.go
@@ -59,7 +59,7 @@ func CreateCustomerPayment(cs *mollie.Customer, m *mollie.Client) {
 	var bt = mollie.BankTransfer
 
 	var p = mollie.Payment{
-		Amount: mollie.Amount{
+		Amount: &mollie.Amount{
 			Currency: "EUR",
 			Value:    "10.12",
 		},
diff --git a/examples/subscriptions.go b/examples/subscriptions.go
index 0be6cd3..312ee64 100644
--- a/examples/subscriptions.go
+++ b/examples/subscriptions.go
@@ -27,7 +27,7 @@ func init() {
 func CreateSubscription() {
 
 	newSubscription := &mollie.Subscription{
-		Amount:      mollie.Amount{Currency: "EUR", Value: "25.00"},
+		Amount:      &mollie.Amount{Currency: "EUR", Value: "25.00"},
 		Times:       4,
 		Interval:    "3 months",
 		Description: "Quarterly payment",
@@ -58,7 +58,7 @@ func GetSubscription() {
 func UpdateSubscription() {
 
 	updatedSubscription := &mollie.Subscription{
-		Amount: mollie.Amount{Currency: "EUR", Value: "10.00"},
+		Amount: &mollie.Amount{Currency: "EUR", Value: "10.00"},
 	}
 
 	sub, err := client.Subscriptions.Update(customerID, subscriptionID, updatedSubscription)
diff --git a/mollie/app_fee.go b/mollie/app_fee.go
index cd3f6f2..6c03584 100644
--- a/mollie/app_fee.go
+++ b/mollie/app_fee.go
@@ -2,6 +2,6 @@ package mollie
 
 // ApplicationFee allows you to split a payment between a platform and connected merchant accounts.
 type ApplicationFee struct {
-	Amount      Amount `json:"amount,omitempty"`
-	Description string `json:"description,omitempty"`
+	Amount      *Amount `json:"amount,omitempty"`
+	Description string  `json:"description,omitempty"`
 }
diff --git a/mollie/captures.go b/mollie/captures.go
index cbff309..e4c1f4d 100644
--- a/mollie/captures.go
+++ b/mollie/captures.go
@@ -12,11 +12,11 @@ type CapturesService service
 
 // CaptureLinks contains relevant links for a capture object
 type CaptureLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Payment       URL `json:"payment,omitempty"`
-	Shipment      URL `json:"shipment,omitempty"`
-	Settlement    URL `json:"settlement,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Payment       *URL `json:"payment,omitempty"`
+	Shipment      *URL `json:"shipment,omitempty"`
+	Settlement    *URL `json:"settlement,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 
 // Capture describes a single capture
@@ -25,12 +25,12 @@ type Capture struct {
 	Resource         string       `json:"resource,omitempty"`
 	ID               string       `json:"id,omitempty"`
 	Mode             Mode         `json:"mode,omitempty"`
-	Amount           Amount       `json:"amount,omitempty"`
-	SettlementAmount Amount       `json:"settlementAmount,omitempty"`
+	Amount           *Amount      `json:"amount,omitempty"`
+	SettlementAmount *Amount      `json:"settlementAmount,omitempty"`
 	PaymentID        string       `json:"paymentId,omitempty"`
 	ShipmentID       string       `json:"shipmentId,omitempty"`
 	SettlementID     string       `json:"settlementId,omitempty"`
-	CreatedAt        time.Time    `json:"createdAt,omitempty"`
+	CreatedAt        *time.Time   `json:"createdAt,omitempty"`
 	Links            CaptureLinks `json:"links,omitempty"`
 }
 
@@ -38,7 +38,7 @@ type Capture struct {
 type CapturesList struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Captures []Capture
+		Captures []*Capture
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"_links,omitempty"`
 }
diff --git a/mollie/chargebacks.go b/mollie/chargebacks.go
index e32a46d..f1a6be6 100644
--- a/mollie/chargebacks.go
+++ b/mollie/chargebacks.go
@@ -13,10 +13,10 @@ import (
 type Chargeback struct {
 	Resource         string          `json:"resource,omitempty"`
 	ID               string          `json:"id,omitempty"`
-	Amount           Amount          `json:"amount,omitempty"`
-	SettlementAmount Amount          `json:"settlementAmount,omitempty"`
-	CreatedAt        time.Time       `json:"createdAt,omitempty"`
-	ReversedAt       time.Time       `json:"reversedAt,omitempty"`
+	Amount           *Amount         `json:"amount,omitempty"`
+	SettlementAmount *Amount         `json:"settlementAmount,omitempty"`
+	CreatedAt        *time.Time      `json:"createdAt,omitempty"`
+	ReversedAt       *time.Time      `json:"reversedAt,omitempty"`
 	PaymentID        string          `json:"paymentId,omitempty"`
 	Links            ChargebackLinks `json:"_links,omitempty"`
 }
@@ -24,10 +24,10 @@ type Chargeback struct {
 // ChargebackLinks describes all the possible links to be returned with
 // a chargeback object.
 type ChargebackLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Payment       URL `json:"payment,omitempty"`
-	Settlement    URL `json:"settlement,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Payment       *URL `json:"payment,omitempty"`
+	Settlement    *URL `json:"settlement,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 
 // ChargebackOptions describes chargeback endpoint valid query string parameters.
diff --git a/mollie/common_types.go b/mollie/common_types.go
index e742a89..cb666ff 100644
--- a/mollie/common_types.go
+++ b/mollie/common_types.go
@@ -153,6 +153,6 @@ const (
 
 // Rate describes service rates, further divided into fixed and percentage costs.
 type Rate struct {
-	Fixed    Amount `json:"fixed,omitempty"`
-	Variable string `json:"variable,omitempty"`
+	Fixed    *Amount `json:"fixed,omitempty"`
+	Variable string  `json:"variable,omitempty"`
 }
diff --git a/mollie/customers.go b/mollie/customers.go
index efd0031..485f493 100644
--- a/mollie/customers.go
+++ b/mollie/customers.go
@@ -14,12 +14,12 @@ type CustomersService service
 
 // CustomerLinks contains the HAL resources for a customer response
 type CustomerLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Mandates      URL `json:"mandates,omitempty"`
-	Subscriptions URL `json:"subscriptions,omitempty"`
-	Payments      URL `json:"payments,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
-	Dashboard     URL `json:"dashboard,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Mandates      *URL `json:"mandates,omitempty"`
+	Subscriptions *URL `json:"subscriptions,omitempty"`
+	Payments      *URL `json:"payments,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
+	Dashboard     *URL `json:"dashboard,omitempty"`
 }
 
 // Customer represents buyers
@@ -31,7 +31,7 @@ type Customer struct {
 	Email     string                 `json:"email,omitempty"`
 	Locale    Locale                 `json:"locale,omitempty"`
 	Metadata  map[string]interface{} `json:"metadata,omitempty"`
-	CreatedAt time.Time              `json:"createdAt,omitempty"`
+	CreatedAt *time.Time             `json:"createdAt,omitempty"`
 	Links     CustomerLinks          `json:"_links,omitempty"`
 }
 
diff --git a/mollie/gift_cards.go b/mollie/gift_cards.go
index 2af0a35..0cdbab1 100644
--- a/mollie/gift_cards.go
+++ b/mollie/gift_cards.go
@@ -54,6 +54,6 @@ type GiftCardEnabled struct {
 
 // GiftCardLinks are links embedded when a gift card is enabled.
 type GiftCardLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
diff --git a/mollie/invoices.go b/mollie/invoices.go
index 565f6dc..fd56a37 100644
--- a/mollie/invoices.go
+++ b/mollie/invoices.go
@@ -28,10 +28,10 @@ type Invoice struct {
 	IssuedAt    string        `json:"issuedAt,omitempty"`
 	PaidAt      string        `json:"paidAt,omitempty"`
 	DueAt       string        `json:"dueAt,omitempty"`
-	NetAmount   Amount        `json:"netAmount,omitempty"`
-	VatAmount   Amount        `json:"vatAmount,omitempty"`
-	GrossAmount Amount        `json:"grossAmount,omitempty"`
-	Lines       []LineItem    `json:"lines,omitempty"`
+	NetAmount   *Amount       `json:"netAmount,omitempty"`
+	VatAmount   *Amount       `json:"vatAmount,omitempty"`
+	GrossAmount *Amount       `json:"grossAmount,omitempty"`
+	Lines       []*LineItem   `json:"lines,omitempty"`
 	Links       InvoiceLinks  `json:"_links,omitempty"`
 }
 
@@ -41,15 +41,15 @@ type LineItem struct {
 	Description   string  `json:"description,omitempty"`
 	Count         int64   `json:"count,omitempty"`
 	VatPercentage float64 `json:"vatPercentage,omitempty"`
-	Amount        Amount  `json:"amount,omitempty"`
+	Amount        *Amount `json:"amount,omitempty"`
 }
 
 // InvoiceLinks describes all the possible links to be returned with
 // a invoice object.
 type InvoiceLinks struct {
-	Self          URL `json:"self,omitempty"`
-	PDF           URL `json:"pdf,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	PDF           *URL `json:"pdf,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 
 // ListInvoiceOptions describes list invoices endpoint valid query string parameters.
diff --git a/mollie/mandates.go b/mollie/mandates.go
index d3c5887..5a4a9bf 100644
--- a/mollie/mandates.go
+++ b/mollie/mandates.go
@@ -17,25 +17,25 @@ type Mandate struct {
 	ConsumerName     string         `json:"consumerName,omitempty"`
 	ConsumerAccount  string         `json:"consumerAccount,omitempty"`
 	ConsumerBic      string         `json:"consumerBic,omitempty"`
-	SignatureDate    ShortDate      `json:"signatureDate,omitempty"`
+	SignatureDate    *ShortDate     `json:"signatureDate,omitempty"`
 	MandateReference string         `json:"mandateReference,omitempty"`
 	Mode             Mode           `json:"mode,omitempty"`
 	Status           MandateStatus  `json:"status,omitempty"`
-	CreatedAt        time.Time      `json:"createdAt,omitempty"`
+	CreatedAt        *time.Time     `json:"createdAt,omitempty"`
 	Details          MandateDetails `json:"details,omitempty"`
 	Links            MandateLinks   `json:"_links,omitempty"`
 }
 
 // MandateDetails are possible values inside the mandate.details field
 type MandateDetails struct {
-	ConsumerName    string    `json:"consumerName,omitempty"`
-	ConsumerAccount string    `json:"consumerAccount,omitempty"`
-	ConsumerBic     string    `json:"consumerBic,omitempty"`
-	CardHolder      string    `json:"cardHolder,omitempty"`
-	CardNumber      string    `json:"cardNumber,omitempty"`
-	CardLabel       CardLabel `json:"cardLabel,omitempty"`
-	CardFingerprint string    `json:"cardFingerprint,omitempty"`
-	CardExpiryDate  ShortDate `json:"cardExpiryDate,omitempty"`
+	ConsumerName    string     `json:"consumerName,omitempty"`
+	ConsumerAccount string     `json:"consumerAccount,omitempty"`
+	ConsumerBic     string     `json:"consumerBic,omitempty"`
+	CardHolder      string     `json:"cardHolder,omitempty"`
+	CardNumber      string     `json:"cardNumber,omitempty"`
+	CardLabel       CardLabel  `json:"cardLabel,omitempty"`
+	CardFingerprint string     `json:"cardFingerprint,omitempty"`
+	CardExpiryDate  *ShortDate `json:"cardExpiryDate,omitempty"`
 }
 
 // MandateStatus for the Mandate object
@@ -73,9 +73,9 @@ type MandatesService service
 
 // MandateLinks response objects
 type MandateLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Customer      URL `json:"customer,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Customer      *URL `json:"customer,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 
 // ListMandatesOptions contains valid query parameters
diff --git a/mollie/methods.go b/mollie/methods.go
index 07713ec..b0a446c 100644
--- a/mollie/methods.go
+++ b/mollie/methods.go
@@ -10,20 +10,20 @@ import (
 
 // PaymentMethodInfo describes a single method with details.
 type PaymentMethodInfo struct {
-	Resource      string                 `json:"resource,omitempty"`
-	ID            string                 `json:"id,omitempty"`
-	Description   string                 `json:"description,omitempty"`
-	MinimumAmount Amount                 `json:"minimumAmount,omitempty"`
-	MaximumAmount Amount                 `json:"maximumAmount,omitempty"`
-	Image         Image                  `json:"image,omitempty"`
-	Pricing       []PaymentMethodPricing `json:"pricing,omitempty"`
-	Links         MethodsLinks           `json:"_links,omitempty"`
+	Resource      string                  `json:"resource,omitempty"`
+	ID            string                  `json:"id,omitempty"`
+	Description   string                  `json:"description,omitempty"`
+	MinimumAmount *Amount                 `json:"minimumAmount,omitempty"`
+	MaximumAmount *Amount                 `json:"maximumAmount,omitempty"`
+	Image         *Image                  `json:"image,omitempty"`
+	Pricing       []*PaymentMethodPricing `json:"pricing,omitempty"`
+	Links         MethodsLinks            `json:"_links,omitempty"`
 }
 
 // MethodsLinks describes links attached to methods service responses.
 type MethodsLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 
 // Image describes a generic image resource retrieved by Mollie.
@@ -36,16 +36,16 @@ type Image struct {
 // PaymentMethodPricing contains information about commissions and fees
 // applicable to a payment method.
 type PaymentMethodPricing struct {
-	Description string `json:"description,omitempty"`
-	Fixed       Amount `json:"fixed,omitempty"`
-	Variable    string `json:"variable,omitempty"`
+	Description string  `json:"description,omitempty"`
+	Fixed       *Amount `json:"fixed,omitempty"`
+	Variable    string  `json:"variable,omitempty"`
 }
 
 // ListMethods describes a list of paginated payment methods.
 type ListMethods struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Methods []PaymentMethodInfo
+		Methods []*PaymentMethodInfo
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"_links,omitempty"`
 }
diff --git a/mollie/orders.go b/mollie/orders.go
index 3b68072..7281436 100644
--- a/mollie/orders.go
+++ b/mollie/orders.go
@@ -16,50 +16,50 @@ type Order struct {
 	ProfileID           string        `json:"profileId,omitempty"`
 	Method              PaymentMethod `json:"method,omitempty"`
 	Mode                Mode          `json:"mode,omitempty"`
-	Amount              Amount        `json:"amount,omitempty"`
-	AmountCaptured      Amount        `json:"amountCaptured,omitempty"`
-	AmountRefunded      Amount        `json:"amountRefunded,omitempty"`
+	Amount              *Amount       `json:"amount,omitempty"`
+	AmountCaptured      *Amount       `json:"amountCaptured,omitempty"`
+	AmountRefunded      *Amount       `json:"amountRefunded,omitempty"`
 	Status              OrderStatus   `json:"status,omitempty"`
 	IsCancelable        bool          `json:"isCancelable,omitempty"`
-	BillingAddress      OrderAddress  `json:"billingAddress,omitempty"`
-	ConsumerDateOfBirth ShortDate     `json:"consumerDateOfBirth,omitempty"`
+	BillingAddress      *OrderAddress `json:"billingAddress,omitempty"`
+	ConsumerDateOfBirth *ShortDate    `json:"consumerDateOfBirth,omitempty"`
 	OrderNumber         string        `json:"orderNumber,omitempty"`
 	ShippingAddress     OrderAddress  `json:"shippingAddress,omitempty"`
 	Locale              Locale        `json:"locale,omitempty"`
 	Metadata            interface{}   `json:"metadata,omitempty"`
 	RedirectURL         string        `json:"redirectUrl,omitempty"`
-	Lines               []OrderLine   `json:"lines,omitempty"`
+	Lines               []*OrderLine  `json:"lines,omitempty"`
 	WebhookURL          string        `json:"webhookUrl,omitempty"`
-	CreatedAt           time.Time     `json:"createdAt,omitempty"`
-	ExpiresAt           time.Time     `json:"expiresAt,omitempty"`
-	ExpiredAt           time.Time     `json:"expiredAt,omitempty"`
-	PaidAt              time.Time     `json:"paidAt,omitempty"`
-	AuthorizedAt        time.Time     `json:"authorizedAt,omitempty"`
-	CanceledAt          time.Time     `json:"canceledAt,omitempty"`
-	CompletedAt         time.Time     `json:"completedAt,omitempty"`
+	CreatedAt           *time.Time    `json:"createdAt,omitempty"`
+	ExpiresAt           *time.Time    `json:"expiresAt,omitempty"`
+	ExpiredAt           *time.Time    `json:"expiredAt,omitempty"`
+	PaidAt              *time.Time    `json:"paidAt,omitempty"`
+	AuthorizedAt        *time.Time    `json:"authorizedAt,omitempty"`
+	CanceledAt          *time.Time    `json:"canceledAt,omitempty"`
+	CompletedAt         *time.Time    `json:"completedAt,omitempty"`
 	Embedded            struct {
-		Payments []Payment `json:"payments,omitempty"`
-		Refunds  []Refund  `json:"refunds,omitempty"`
+		Payments []*Payment `json:"payments,omitempty"`
+		Refunds  []*Refund  `json:"refunds,omitempty"`
 	} `json:"_embedded,omitempty"`
-	Links                                    OrderLinks   `json:"_links,omitempty"`
-	OrderPayment                             OrderPayment `json:"payment,omitempty"`
-	Description                              string       `json:"description,omitempty"`
-	ShopperCountryMustMatchTheBillingCountry bool         `json:"shopperCountryMustMatchTheBillingCountry,omitempty"`
+	Links                                    OrderLinks    `json:"_links,omitempty"`
+	OrderPayment                             *OrderPayment `json:"payment,omitempty"`
+	Description                              string        `json:"description,omitempty"`
+	ShopperCountryMustMatchTheBillingCountry bool          `json:"shopperCountryMustMatchTheBillingCountry,omitempty"`
 }
 
 // OrderPayment describes payment specific parameters that can be passed during order creation
 type OrderPayment struct {
-	ConsumerAccount   string         `json:"consumerAccount,omitempty"`
-	CustomerID        string         `json:"customerId,omitempty"`
-	CustomerReference string         `json:"customerReference,omitempty"`
-	Issuer            string         `json:"issuer,omitempty"`
-	MandateID         string         `json:"mandateId,omitempty"`
-	SequenceType      *SequenceType  `json:"sequenceType,omitempty"`
-	VoucherNumber     string         `json:"voucherNumber,omitempty"`
-	VoucherPin        string         `json:"voucherPin,omitempty"`
-	WebhookURL        string         `json:"webhookUrl,omitempty"`
-	ApplicationFee    ApplicationFee `json:"applicationFee,omitempty"`
-	Method            PaymentMethod  `json:"method,omitempty"`
+	ConsumerAccount   string          `json:"consumerAccount,omitempty"`
+	CustomerID        string          `json:"customerId,omitempty"`
+	CustomerReference string          `json:"customerReference,omitempty"`
+	Issuer            string          `json:"issuer,omitempty"`
+	MandateID         string          `json:"mandateId,omitempty"`
+	SequenceType      SequenceType    `json:"sequenceType,omitempty"`
+	VoucherNumber     string          `json:"voucherNumber,omitempty"`
+	VoucherPin        string          `json:"voucherPin,omitempty"`
+	WebhookURL        string          `json:"webhookUrl,omitempty"`
+	ApplicationFee    *ApplicationFee `json:"applicationFee,omitempty"`
+	Method            PaymentMethod   `json:"method,omitempty"`
 }
 
 // OrderStatus describes the valid order status.
@@ -96,10 +96,10 @@ type OrderAddress struct {
 // relevant to the order.
 // Every URL object will contain an href and a type field.
 type OrderLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Checkout      URL `json:"checkout,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
-	Dashboard     URL `json:"dashboard,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Checkout      *URL `json:"checkout,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
+	Dashboard     *URL `json:"dashboard,omitempty"`
 }
 
 // OrderLine contain the actual things the customer bought.
@@ -109,26 +109,26 @@ type OrderLine struct {
 	OrderID            string          `json:"orderId,omitempty"`
 	ProductType        ProductType     `json:"type,omitempty"`
 	Name               string          `json:"name,omitempty"`
-	Amount             Amount          `json:"amount,omitempty"`
+	Amount             *Amount         `json:"amount,omitempty"`
 	Status             OrderLineStatus `json:"status,omitempty"`
 	IsCancelable       bool            `json:"isCancelable,omitempty"`
 	Quantity           int             `json:"quantity,omitempty"`
 	QuantityShipped    int             `json:"quantityShipped,omitempty"`
-	AmountShipped      Amount          `json:"amountShipped,omitempty"`
+	AmountShipped      *Amount         `json:"amountShipped,omitempty"`
 	QuantityRefunded   int             `json:"quantityRefunded,omitempty"`
-	AmountRefunded     Amount          `json:"amountRefunded,omitempty"`
+	AmountRefunded     *Amount         `json:"amountRefunded,omitempty"`
 	QuantityCanceled   int             `json:"quantityCanceled,omitempty"`
-	AmountCanceled     Amount          `json:"amountCanceled,omitempty"`
+	AmountCanceled     *Amount         `json:"amountCanceled,omitempty"`
 	ShippableQuantity  int             `json:"shippableQuantity,omitempty"`
 	RefundableQuantity int             `json:"refundableQuantity,omitempty"`
 	CancelableQuantity int             `json:"cancelableQuantity,omitempty"`
-	UnitPrice          Amount          `json:"unitPrice,omitempty"`
-	DiscountAmount     Amount          `json:"discountAmount,omitempty"`
-	TotalAmount        Amount          `json:"totalAmount,omitempty"`
+	UnitPrice          *Amount         `json:"unitPrice,omitempty"`
+	DiscountAmount     *Amount         `json:"discountAmount,omitempty"`
+	TotalAmount        *Amount         `json:"totalAmount,omitempty"`
 	VatRate            string          `json:"vatRate,omitempty"`
-	VatAmount          Amount          `json:"vatAmount,omitempty"`
+	VatAmount          *Amount         `json:"vatAmount,omitempty"`
 	SKU                string          `json:"sku,omitempty"`
-	CreatedAt          time.Time       `json:"createdAt,omitempty"`
+	CreatedAt          *time.Time      `json:"createdAt,omitempty"`
 	Links              OrderLineLinks  `json:"_links,omitempty"`
 	ImageURL           string          `json:"imageUrl,omitempty"`
 	ProductURL         string          `json:"productUrl,omitempty"`
@@ -138,7 +138,7 @@ type OrderLine struct {
 type OrderList struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Orders []Order `json:"orders,omitempty"`
+		Orders []*Order `json:"orders,omitempty"`
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"links,omitempty"`
 }
@@ -147,7 +147,7 @@ type OrderList struct {
 type OrderListRefund struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Refunds []Refund `json:"refund,omitempty"`
+		Refunds []*Refund `json:"refund,omitempty"`
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"links,omitempty"`
 }
@@ -181,8 +181,8 @@ const (
 
 // OrderLineLinks describes object with several URL objects relevant to the order line.
 type OrderLineLinks struct {
-	ProductURL URL `json:"productUrl,omitempty"`
-	ImageURL   URL `json:"imageUrl,omitempty"`
+	ProductURL *URL `json:"productUrl,omitempty"`
+	ImageURL   *URL `json:"imageUrl,omitempty"`
 }
 
 // OrderOptions describes order endpoint valid query string parameters.
diff --git a/mollie/organizations.go b/mollie/organizations.go
index 6c2ef5f..fcb17b4 100644
--- a/mollie/organizations.go
+++ b/mollie/organizations.go
@@ -13,7 +13,7 @@ type Organization struct {
 	Name               string            `json:"name,omitempty"`
 	Email              string            `json:"email,omitempty"`
 	Locale             string            `json:"locale,omitempty"`
-	Address            Address           `json:"address,omitempty"`
+	Address            *Address          `json:"address,omitempty"`
 	RegistrationNumber string            `json:"registrationNumber,omitempty"`
 	VatNumber          string            `json:"vatNumber,omitempty"`
 	VatRegulation      string            `json:"vatRegulation,omitempty"`
@@ -23,16 +23,16 @@ type Organization struct {
 // OrganizationLinks describes all the possible links to be returned with
 // a organization object.
 type OrganizationLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Chargebacks   URL `json:"chargebacks,omitempty"`
-	Customers     URL `json:"customers,omitempty"`
-	Dashboard     URL `json:"dashboard,omitempty"`
-	Invoices      URL `json:"invoices,omitempty"`
-	Payments      URL `json:"payments,omitempty"`
-	Profiles      URL `json:"profiles,omitempty"`
-	Refunds       URL `json:"refunds,omitempty"`
-	Settlements   URL `json:"settlements,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Chargebacks   *URL `json:"chargebacks,omitempty"`
+	Customers     *URL `json:"customers,omitempty"`
+	Dashboard     *URL `json:"dashboard,omitempty"`
+	Invoices      *URL `json:"invoices,omitempty"`
+	Payments      *URL `json:"payments,omitempty"`
+	Profiles      *URL `json:"profiles,omitempty"`
+	Refunds       *URL `json:"refunds,omitempty"`
+	Settlements   *URL `json:"settlements,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 
 // OrganizationsService instance operates over organization resources
diff --git a/mollie/payment_details.go b/mollie/payment_details.go
index 1a4b6f3..ca52f0c 100644
--- a/mollie/payment_details.go
+++ b/mollie/payment_details.go
@@ -45,9 +45,9 @@ const (
 
 // UsedGiftCard describes a used gift card.
 type UsedGiftCard struct {
-	Issuer        string `json:"issuer,omitempty"`
-	Amount        Amount `json:"amount,omitempty"`
-	VoucherNumber string `json:"voucherNumber,omitempty"`
+	Issuer        string  `json:"issuer,omitempty"`
+	Amount        *Amount `json:"amount,omitempty"`
+	VoucherNumber string  `json:"voucherNumber,omitempty"`
 }
 
 // PaymentDetails contains details for the specified payment method
@@ -70,28 +70,28 @@ type PaymentDetails struct {
 	ConsumerName       string             `json:"consumerName,omitempty"`
 	ConsumerReference  string             `json:"consumerReference,omitempty"`
 	CreditorIdentifier string             `json:"creditorIdentifier,omitempty"`
-	DueDate            ShortDate          `json:"dueDate,omitempty"`
+	DueDate            *ShortDate         `json:"dueDate,omitempty"`
 	EndToEndIdentifier string             `json:"endToEndIdentifier,omitempty"`
 	FailureReason      FailureReason      `json:"failureReason,omitempty"`
 	FeeRegion          FeeRegion          `json:"feeRegion,omitempty"`
 	FileReference      string             `json:"fileReference,omitempty"`
-	GiftCards          []UsedGiftCard     `json:"giftCards,omitempty"`
+	GiftCards          []*UsedGiftCard    `json:"giftCards,omitempty"`
 	MandateReference   string             `json:"mandateReference,omitempty"`
 	PaypalDigitalGoods bool               `json:"digitalGoods,omitempty"`
 	PaypalFee          Amount             `json:"paypalFee,omitempty"`
 	PaypalPayerID      string             `json:"paypalPayerId,omitempty"`
 	PaypalReference    string             `json:"paypalReference,omitempty"`
-	QRCode             QRCode             `json:"qrCode,omitempty"`
-	RemainderAmount    Amount             `json:"remainderAmount,omitempty"`
+	QRCode             *QRCode            `json:"qrCode,omitempty"`
+	RemainderAmount    *Amount            `json:"remainderAmount,omitempty"`
 	RemainderMethod    PaymentMethod      `json:"remainderMethod,omitempty"`
 	SellerProtection   EligibilityReasons `json:"sellerProtection,omitempty"`
 	ShippingAddress    string             `json:"shippingAddress,omitempty"`
-	SignatureDate      ShortDate          `json:"signatureDate,omitempty"`
+	SignatureDate      *ShortDate         `json:"signatureDate,omitempty"`
 	TransferReference  string             `json:"transferReference,omitempty"`
 	VoucherNumber      string             `json:"voucherNumber,omitempty"`
 	Wallet             string             `json:"wallet,omitempty"`
 	Links              struct {
-		Status    URL `json:"status,omitempty"`
-		PayOnline URL `json:"payOnline,omitempty"`
+		Status    *URL `json:"status,omitempty"`
+		PayOnline *URL `json:"payOnline,omitempty"`
 	} `json:"_links,omitempty"`
 }
diff --git a/mollie/payments.go b/mollie/payments.go
index ca36545..241f3c6 100644
--- a/mollie/payments.go
+++ b/mollie/payments.go
@@ -46,59 +46,59 @@ const (
 
 // Payment describes a transaction between a customer and a merchant
 type Payment struct {
-	Resource                        string         `json:"resource,omitempty"`
-	ID                              string         `json:"id,omitempty"`
-	Mode                            Mode           `json:"mode,omitempty"`
-	CreatedAt                       time.Time      `json:"createdAt,omitempty"`
-	Status                          string         `json:"status,omitempty"`
-	IsCancellable                   bool           `json:"isCancellable,omitempty"`
-	AuthorizedAt                    time.Time      `json:"authorizedAt,omitempty"`
-	PaidAt                          time.Time      `json:"paidAt,omitempty"`
-	CanceledAt                      time.Time      `json:"canceledAt,omitempty"`
-	ExpiresAt                       time.Time      `json:"expiresAt,omitempty"`
-	ExpiredAt                       time.Time      `json:"expiredAt,omitempty"`
-	FailedAt                        time.Time      `json:"failedAt,omitempty"`
-	Amount                          Amount         `json:"amount,omitempty"`
-	AmountRefunded                  Amount         `json:"amountRefunded,omitempty"`
-	AmountRemaining                 Amount         `json:"amountRemaining,omitempty"`
-	AmountCaptured                  Amount         `json:"amountCaptured,omitempty"`
-	Description                     string         `json:"description,omitempty"`
-	RedirectURL                     string         `json:"redirectUrl,omitempty"`
-	WebhookURL                      string         `json:"webhookUrl,omitempty"`
-	Method                          PaymentMethod  `json:"method,omitempty"`
-	Metadata                        interface{}    `json:"metadata,omitempty"`
-	Locale                          Locale         `json:"locale,omitempty"`
-	CountryCode                     string         `json:"countryCode,omitempty"`
-	ProfileID                       string         `json:"profileId,omitempty"`
-	SettlementAmount                Amount         `json:"settlementAmount,omitempty"`
-	SettlementID                    string         `json:"settlementId,omitempty"`
-	CustomerID                      string         `json:"customerId,omitempty"`
-	SequenceType                    SequenceType   `json:"sequenceType,omitempty"`
-	MandateID                       string         `json:"mandateId,omitempty"`
-	OrderID                         string         `json:"orderId,omitempty"`
-	ApplicationFee                  ApplicationFee `json:"applicationFee,omitempty"`
-	Links                           PaymentLinks   `json:"_links,omitempty"`
-	Details                         PaymentDetails `json:"details,omitempty"`
-	RestrictPaymentMethodsToCountry Locale         `json:"restrictPaymentMethodsToCountry,omitempty"`
-	SubscriptionID                  string         `json:"subscriptionId,omitempty"`
+	Resource                        string          `json:"resource,omitempty"`
+	ID                              string          `json:"id,omitempty"`
+	Mode                            Mode            `json:"mode,omitempty"`
+	CreatedAt                       *time.Time      `json:"createdAt,omitempty"`
+	Status                          string          `json:"status,omitempty"`
+	IsCancellable                   bool            `json:"isCancellable,omitempty"`
+	AuthorizedAt                    *time.Time      `json:"authorizedAt,omitempty"`
+	PaidAt                          *time.Time      `json:"paidAt,omitempty"`
+	CanceledAt                      *time.Time      `json:"canceledAt,omitempty"`
+	ExpiresAt                       *time.Time      `json:"expiresAt,omitempty"`
+	ExpiredAt                       *time.Time      `json:"expiredAt,omitempty"`
+	FailedAt                        *time.Time      `json:"failedAt,omitempty"`
+	Amount                          *Amount         `json:"amount,omitempty"`
+	AmountRefunded                  *Amount         `json:"amountRefunded,omitempty"`
+	AmountRemaining                 *Amount         `json:"amountRemaining,omitempty"`
+	AmountCaptured                  *Amount         `json:"amountCaptured,omitempty"`
+	Description                     string          `json:"description,omitempty"`
+	RedirectURL                     string          `json:"redirectUrl,omitempty"`
+	WebhookURL                      string          `json:"webhookUrl,omitempty"`
+	Method                          PaymentMethod   `json:"method,omitempty"`
+	Metadata                        interface{}     `json:"metadata,omitempty"`
+	Locale                          Locale          `json:"locale,omitempty"`
+	CountryCode                     string          `json:"countryCode,omitempty"`
+	ProfileID                       string          `json:"profileId,omitempty"`
+	SettlementAmount                *Amount         `json:"settlementAmount,omitempty"`
+	SettlementID                    string          `json:"settlementId,omitempty"`
+	CustomerID                      string          `json:"customerId,omitempty"`
+	SequenceType                    SequenceType    `json:"sequenceType,omitempty"`
+	MandateID                       string          `json:"mandateId,omitempty"`
+	OrderID                         string          `json:"orderId,omitempty"`
+	ApplicationFee                  *ApplicationFee `json:"applicationFee,omitempty"`
+	Links                           PaymentLinks    `json:"_links,omitempty"`
+	Details                         *PaymentDetails `json:"details,omitempty"`
+	RestrictPaymentMethodsToCountry Locale          `json:"restrictPaymentMethodsToCountry,omitempty"`
+	SubscriptionID                  string          `json:"subscriptionId,omitempty"`
 }
 
 // PaymentLinks describes all the possible links to be returned with
 // a payment object.
 type PaymentLinks struct {
-	Self               URL `json:"self,omitempty"`
-	Checkout           URL `json:"checkout,omitempty"`
-	ChangePaymentState URL `json:"changePaymentState,omitempty"`
-	Refunds            URL `json:"refunds,omitempty"`
-	ChargeBacks        URL `json:"chargebacks,omitempty"`
-	Captures           URL `json:"captures,omitempty"`
-	Settlement         URL `json:"settlement,omitempty"`
-	Documentation      URL `json:"documentation,omitempty"`
-	Mandate            URL `json:"mandate,omitempty"`
-	Subscription       URL `json:"subscription,omitempty"`
-	Customer           URL `json:"customer,omitempty"`
-	Order              URL `json:"order,omitempty"`
-	Dashboard          URL `json:"dashboard,omitempty"`
+	Self               *URL `json:"self,omitempty"`
+	Checkout           *URL `json:"checkout,omitempty"`
+	ChangePaymentState *URL `json:"changePaymentState,omitempty"`
+	Refunds            *URL `json:"refunds,omitempty"`
+	ChargeBacks        *URL `json:"chargebacks,omitempty"`
+	Captures           *URL `json:"captures,omitempty"`
+	Settlement         *URL `json:"settlement,omitempty"`
+	Documentation      *URL `json:"documentation,omitempty"`
+	Mandate            *URL `json:"mandate,omitempty"`
+	Subscription       *URL `json:"subscription,omitempty"`
+	Customer           *URL `json:"customer,omitempty"`
+	Order              *URL `json:"order,omitempty"`
+	Dashboard          *URL `json:"dashboard,omitempty"`
 }
 
 // PaymentOptions describes payments endpoint valid query string parameters.
diff --git a/mollie/profiles.go b/mollie/profiles.go
index 2ec90a6..fece8f8 100644
--- a/mollie/profiles.go
+++ b/mollie/profiles.go
@@ -24,7 +24,7 @@ const (
 type Profile struct {
 	ID           string       `json:"id,omitempty"`
 	CategoryCode CategoryCode `json:"categoryCode,omitempty"`
-	CreatedAt    time.Time    `json:"createdAt,omitempty"`
+	CreatedAt    *time.Time   `json:"createdAt,omitempty"`
 	Email        string       `json:"email,omitempty"`
 	Mode         Mode         `json:"mode,omitempty"`
 	Name         string       `json:"name,omitempty"`
@@ -41,13 +41,13 @@ type Profile struct {
 // ProfileLinks contains URL's to relevant information related to
 // a profile.
 type ProfileLinks struct {
-	Self               URL `json:"self,omitempty"`
-	Chargebacks        URL `json:"chargebacks,omitempty"`
-	Methods            URL `json:"methods,omitempty"`
-	Refunds            URL `json:"refunds,omitempty"`
-	CheckoutPreviewURL URL `json:"checkoutPreviewUrl,omitempty"`
-	Documentation      URL `json:"documentation,omitempty"`
-	Dashboard          URL `json:"dashboard,omitempty"`
+	Self               *URL `json:"self,omitempty"`
+	Chargebacks        *URL `json:"chargebacks,omitempty"`
+	Methods            *URL `json:"methods,omitempty"`
+	Refunds            *URL `json:"refunds,omitempty"`
+	CheckoutPreviewURL *URL `json:"checkoutPreviewUrl,omitempty"`
+	Documentation      *URL `json:"documentation,omitempty"`
+	Dashboard          *URL `json:"dashboard,omitempty"`
 }
 
 // ProfileListOptions are optional query string parameters for the list profiles request
@@ -60,7 +60,7 @@ type ProfileListOptions struct {
 type ProfileList struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Profiles []Profile `json:"profiles,omitempty"`
+		Profiles []*Profile `json:"profiles,omitempty"`
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"_links,omitempty"`
 }
diff --git a/mollie/refunds.go b/mollie/refunds.go
index 10979af..0b73193 100644
--- a/mollie/refunds.go
+++ b/mollie/refunds.go
@@ -13,16 +13,16 @@ import (
 type Refund struct {
 	Resource         string       `json:"resource,omitempty"`
 	ID               string       `json:"id,omitempty"`
-	Amount           Amount       `json:"amount,omitempty"`
+	Amount           *Amount      `json:"amount,omitempty"`
 	SettlementID     string       `json:"settlementId,omitempty"`
-	SettlementAmount Amount       `json:"settlementAmount,omitempty"`
+	SettlementAmount *Amount      `json:"settlementAmount,omitempty"`
 	Description      string       `json:"description,omitempty"`
 	Metadata         interface{}  `json:"metadata,omitempty"`
 	Status           RefundStatus `json:"status,omitempty"`
-	Lines            []OrderLine  `json:"lines,omitempty"`
+	Lines            []*OrderLine `json:"lines,omitempty"`
 	PaymentID        string       `json:"paymentId,omitempty"`
 	OrderID          string       `json:"orderId,omitempty"`
-	CreatedAt        time.Time    `json:"createdAt,omitempty"`
+	CreatedAt        *time.Time   `json:"createdAt,omitempty"`
 	Links            RefundLinks  `json:"_links,omitempty"`
 }
 
@@ -30,7 +30,7 @@ type Refund struct {
 type RefundList struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Refunds []Refund
+		Refunds []*Refund
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"_links,omitempty"`
 }
@@ -50,11 +50,11 @@ const (
 // RefundLinks describes all the possible links to be returned with
 // a Refund object.
 type RefundLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Payment       URL `json:"payment,omitempty"`
-	Settlement    URL `json:"settlement,omitempty"`
-	Order         URL `json:"order,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Payment       *URL `json:"payment,omitempty"`
+	Settlement    *URL `json:"settlement,omitempty"`
+	Order         *URL `json:"order,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 
 // RefundOptions describes refund endpoint valid query string parameters.
diff --git a/mollie/settlements.go b/mollie/settlements.go
index 343667b..21fc3b5 100644
--- a/mollie/settlements.go
+++ b/mollie/settlements.go
@@ -26,9 +26,9 @@ const (
 // SettlementRevenue objects contain the total revenue for each payment method during this period
 type SettlementRevenue struct {
 	Description string        `json:"description,omitempty"`
-	AmountNet   Amount        `json:"amountNet,omitempty"`
-	AmountVAT   Amount        `json:"amountVat,omitempty"`
-	AmountGross Amount        `json:"amountGross,omitempty"`
+	AmountNet   *Amount       `json:"amountNet,omitempty"`
+	AmountVAT   *Amount       `json:"amountVat,omitempty"`
+	AmountGross *Amount       `json:"amountGross,omitempty"`
 	Count       int           `json:"count,omitempty"`
 	Method      PaymentMethod `json:"method,omitempty"`
 }
@@ -36,18 +36,18 @@ type SettlementRevenue struct {
 // SettlementCosts contains information about costs related to a settlement
 type SettlementCosts struct {
 	Description string        `json:"description,omitempty"`
-	AmountNet   Amount        `json:"amountNet,omitempty"`
-	AmountVAT   Amount        `json:"amountVat,omitempty"`
-	AmountGross Amount        `json:"amountGross,omitempty"`
+	AmountNet   *Amount       `json:"amountNet,omitempty"`
+	AmountVAT   *Amount       `json:"amountVat,omitempty"`
+	AmountGross *Amount       `json:"amountGross,omitempty"`
 	Count       int           `json:"count,omitempty"`
-	Rate        Rate          `json:"rate,omitempty"`
+	Rate        *Rate         `json:"rate,omitempty"`
 	Method      PaymentMethod `json:"method,omitempty"`
 }
 
 // SettlementPeriod describe the settlement by month in full detail
 type SettlementPeriod struct {
-	Revenue []SettlementRevenue `json:"revenue,omitempty"`
-	Costs   []SettlementCosts   `json:"costs,omitempty"`
+	Revenue []*SettlementRevenue `json:"revenue,omitempty"`
+	Costs   []*SettlementCosts   `json:"costs,omitempty"`
 }
 
 // SettlementObject nests as describes for settlement periods
@@ -55,13 +55,13 @@ type SettlementObject map[string]map[string]SettlementPeriod
 
 // SettlementLinks is an object with several URL objects relevant to the settlement
 type SettlementLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Payments      URL `json:"payments,omitempty"`
-	Refunds       URL `json:"refunds,omitempty"`
-	Chargebacks   URL `json:"chargebacks,omitempty"`
-	Captures      URL `json:"captures,omitempty"`
-	Invoice       URL `json:"invoice,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Payments      *URL `json:"payments,omitempty"`
+	Refunds       *URL `json:"refunds,omitempty"`
+	Chargebacks   *URL `json:"chargebacks,omitempty"`
+	Captures      *URL `json:"captures,omitempty"`
+	Invoice       *URL `json:"invoice,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 
 // Settlement contains successful payments, together with refunds,
@@ -70,10 +70,10 @@ type Settlement struct {
 	ID        string           `json:"id,omitempty"`
 	Resource  string           `json:"resource,omitempty"`
 	Reference string           `json:"reference,omitempty"`
-	CreatedAt time.Time        `json:"createdAt,omitempty"`
-	SettledAt time.Time        `json:"settledAt,omitempty"`
+	CreatedAt *time.Time       `json:"createdAt,omitempty"`
+	SettledAt *time.Time       `json:"settledAt,omitempty"`
 	Status    SettlementStatus `json:"status,omitempty"`
-	Amount    Amount           `json:"amount,omitempty"`
+	Amount    *Amount          `json:"amount,omitempty"`
 	Periods   SettlementObject `json:"periods,omitempty"`
 	InvoiceID string           `json:"invoiceId,omitempty"`
 	Links     SettlementLinks  `json:"_links,omitempty"`
@@ -81,7 +81,7 @@ type Settlement struct {
 
 // SettlementsListOptions contains query parameters for settlement lists.
 type SettlementsListOptions struct {
-	From  ShortDate  `url:"from,omitempty"`
+	From  *ShortDate `url:"from,omitempty"`
 	Limit int        `url:"limit,omitempty"`
 	Embed EmbedValue `url:"embed,omitempty"`
 }
@@ -90,7 +90,7 @@ type SettlementsListOptions struct {
 type SettlementsList struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Settlements []Settlement
+		Settlements []*Settlement
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"_links,omitempty"`
 }
diff --git a/mollie/shipments.go b/mollie/shipments.go
index 1694397..09d4199 100644
--- a/mollie/shipments.go
+++ b/mollie/shipments.go
@@ -14,13 +14,13 @@ type ShipmentsService service
 // is used in the figurative sense here.
 // It can also mean that a service was provided or digital content was delivered.
 type Shipment struct {
-	Resource  string           `json:"resource,omitempty"`
-	ID        string           `json:"id,omitempty"`
-	OrderID   string           `json:"orderId,omitempty"`
-	CreatedAt time.Time        `json:"createdAt,omitempty"`
-	Tracking  ShipmentTracking `json:"tracking,omitempty"`
-	Lines     []OrderLine      `json:"lines,omitempty"`
-	Links     ShipmentLinks    `json:"_links,omitempty"`
+	Resource  string            `json:"resource,omitempty"`
+	ID        string            `json:"id,omitempty"`
+	OrderID   string            `json:"orderId,omitempty"`
+	CreatedAt *time.Time        `json:"createdAt,omitempty"`
+	Tracking  *ShipmentTracking `json:"tracking,omitempty"`
+	Lines     []*OrderLine      `json:"lines,omitempty"`
+	Links     ShipmentLinks     `json:"_links,omitempty"`
 }
 
 // ShipmentTracking contains shipment tracking details.
@@ -33,9 +33,9 @@ type ShipmentTracking struct {
 // ShipmentLinks contains URL objects with shipment relevant
 // information for the user.
 type ShipmentLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Order         URL `json:"order,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Order         *URL `json:"order,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 
 // Get retrieves a single shipment and the order lines shipped by a shipment’s ID.
diff --git a/mollie/subscriptions.go b/mollie/subscriptions.go
index 0893b35..5989e1d 100644
--- a/mollie/subscriptions.go
+++ b/mollie/subscriptions.go
@@ -26,10 +26,10 @@ const (
 
 // SubscriptionLinks contains several URL objects relevant to the subscription
 type SubscriptionLinks struct {
-	Self          URL `json:"self,omitempty"`
-	Customer      URL `json:"customer,omitempty"`
-	Payments      URL `json:"payments,omitempty"`
-	Documentation URL `json:"documentation,omitempty"`
+	Self          *URL `json:"self,omitempty"`
+	Customer      *URL `json:"customer,omitempty"`
+	Payments      *URL `json:"payments,omitempty"`
+	Documentation *URL `json:"documentation,omitempty"`
 }
 
 // Subscription contains information about a customer subscription
@@ -38,20 +38,20 @@ type Subscription struct {
 	ID              string                 `json:"id,omitempty"`
 	MandateID       string                 `json:"mandateId,omitempty"`
 	Mode            Mode                   `json:"mode,omitempty"`
-	CreatedAT       time.Time              `json:"createdAt,omitempty"`
+	CreatedAT       *time.Time             `json:"createdAt,omitempty"`
 	Status          SubscriptionStatus     `json:"status,omitempty"`
-	Amount          Amount                 `json:"amount,omitempty"`
+	Amount          *Amount                `json:"amount,omitempty"`
 	Times           int                    `json:"times,omitempty"`
 	TimesRemaining  int                    `json:"timesRemaining,omitempty"`
 	Interval        string                 `json:"interval,omitempty"`
-	StartDate       ShortDate              `json:"startDate,omitempty"`
-	NextPaymentDate ShortDate              `json:"nextPaymentDate,omitempty"`
+	StartDate       *ShortDate             `json:"startDate,omitempty"`
+	NextPaymentDate *ShortDate             `json:"nextPaymentDate,omitempty"`
 	Description     string                 `json:"description,omitempty"`
 	Method          PaymentMethod          `json:"method,omitempty"`
-	CanceledAt      time.Time              `json:"canceledAt,omitempty"`
+	CanceledAt      *time.Time             `json:"canceledAt,omitempty"`
 	WebhookURL      string                 `json:"webhookUrl,omitempty"`
 	Metadata        map[string]interface{} `json:"metadata,omitempty"`
-	ApplicationFee  ApplicationFee         `json:"applicationFee,omitempty"`
+	ApplicationFee  *ApplicationFee        `json:"applicationFee,omitempty"`
 	Links           SubscriptionLinks      `json:"_links,omitempty"`
 }
 
@@ -59,7 +59,7 @@ type Subscription struct {
 type SubscriptionList struct {
 	Count    int `json:"count,omitempty"`
 	Embedded struct {
-		Subscriptions []Subscription
+		Subscriptions []*Subscription
 	} `json:"_embedded,omitempty"`
 	Links PaginationLinks `json:"_links,omitempty"`
 }


Test patch:
diff --git a/mollie/payments_test.go b/mollie/payments_test.go
index be0be56..271d112 100644
--- a/mollie/payments_test.go
+++ b/mollie/payments_test.go
@@ -55,7 +55,7 @@ func TestPaymentsService_Create(t *testing.T) {
 	})
 
 	p := Payment{
-		Amount: Amount{
+		Amount: &Amount{
 			Currency: "EUR",
 			Value:    "10.00",
 		},
@@ -188,7 +188,7 @@ func TestPaymentsService_HttpRequestErrors(t *testing.T) {
 	tMux.HandleFunc("/v2/payments/", errorHandler)
 
 	p := Payment{
-		Amount: Amount{
+		Amount: &Amount{
 			Currency: "EUR",
 			Value:    "10.00",
 		},
@@ -218,7 +218,7 @@ func TestPaymentsService_NewAPIRequestErrors(t *testing.T) {
 	tMux.HandleFunc("/v2/payments/", errorHandler)
 
 	p := Payment{
-		Amount: Amount{
+		Amount: &Amount{
 			Currency: "EUR",
 			Value:    "10.00",
 		},
@@ -246,7 +246,7 @@ func TestPaymentsService_EncodingResponseErrors(t *testing.T) {
 	tMux.HandleFunc("/v2/payments/", encodingHandler)
 
 	p := Payment{
-		Amount: Amount{
+		Amount: &Amount{
 			Currency: "EUR",
 			Value:    "10.00",
 		},
diff --git a/mollie/refunds_test.go b/mollie/refunds_test.go
index 89a5e3b..f2a82d4 100644
--- a/mollie/refunds_test.go
+++ b/mollie/refunds_test.go
@@ -63,7 +63,7 @@ func TestRefundsService_Create(t *testing.T) {
 	})
 
 	refund := Refund{
-		Amount: Amount{
+		Amount: &Amount{
 			Currency: "EUR",
 			Value:    "20",
 		},
@@ -175,7 +175,7 @@ func TestRefundsService_HttpRequestErrors(t *testing.T) {
 	tMux.HandleFunc("/v2/refunds/", errorHandler)
 
 	refund := Refund{
-		Amount: Amount{
+		Amount: &Amount{
 			Currency: "IDR",
 			Value:    "100000",
 		},
@@ -205,7 +205,7 @@ func TestRefundsService_NewAPIRequestErrors(t *testing.T) {
 	tMux.HandleFunc("/v2/refunds/", errorHandler)
 
 	refund := Refund{
-		Amount: Amount{
+		Amount: &Amount{
 			Currency: "IDR",
 			Value:    "100000",
 		},
@@ -239,7 +239,7 @@ func TestRefundsService_EncodingResponseErrors(t *testing.T) {
 	tMux.HandleFunc("/v2/payments/"+paymentID+"/refunds/"+refundID, encodingHandler)
 
 	refund := Refund{
-		Amount: Amount{
+		Amount: &Amount{
 			Currency: "IDR",
 			Value:    "100000",
 		},
diff --git a/mollie/subscriptions_test.go b/mollie/subscriptions_test.go
index 2cc9e3e..97d8f1d 100644
--- a/mollie/subscriptions_test.go
+++ b/mollie/subscriptions_test.go
@@ -61,7 +61,7 @@ func TestSubscriptionsService_Create(t *testing.T) {
 	})
 
 	s := Subscription{
-		Amount: Amount{
+		Amount: &Amount{
 			Currency: "EUR",
 			Value:    "11.99",
 		},
@@ -99,7 +99,7 @@ func TestSubscriptionsService_Update(t *testing.T) {
 	})
 
 	s := Subscription{
-		Amount: Amount{
+		Amount: &Amount{
 			Currency: "EUR",
 			Value:    "11.99",
 		},