POST
/
purchases
curl --request POST \
  --url https://gate.chip-in.asia/api/v1/purchases/ \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "client": {
    "email": "test@test.com"
  },
  "purchase": {
    "products": [
      {
        "name": "test",
        "price": 1000
      }
    ]
  },
  "brand_id": "409eb80e-3782-4b1d-afa8-b779759266a5"
}'
{
  "type": "<string>",
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "created_on": 1619740800,
  "updated_on": 1619740800,
  "client": {
    "bank_account": "<string>",
    "bank_code": "<string>",
    "email": "jsmith@example.com",
    "phone": "+44 45643564564",
    "full_name": "<string>",
    "personal_code": "<string>",
    "street_address": "<string>",
    "country": "<string>",
    "city": "<string>",
    "zip_code": "<string>",
    "state": "<string>",
    "shipping_street_address": "<string>",
    "shipping_country": "<string>",
    "shipping_city": "<string>",
    "shipping_zip_code": "<string>",
    "shipping_state": "<string>",
    "cc": [
      "jsmith@example.com"
    ],
    "bcc": [
      "jsmith@example.com"
    ],
    "legal_name": "<string>",
    "brand_name": "<string>",
    "registration_number": "<string>",
    "tax_number": "<string>"
  },
  "purchase": {
    "currency": "<string>",
    "products": [
      {
        "name": "<string>",
        "quantity": 1,
        "price": 1,
        "discount": 1,
        "tax_percent": 0,
        "category": "<string>"
      }
    ],
    "total": 123,
    "language": "Default value is controlled in Company -> Brand section of merchant portal separately per each Brand used (default value, if no changes are made, is `en`). Brand to be used with corresponding Purchase/BillingTemplate specified using brand_id.",
    "notes": "<string>",
    "debt": 123,
    "subtotal_override": 123,
    "total_tax_override": 123,
    "total_discount_override": 123,
    "total_override": 123,
    "request_client_details": [],
    "timezone": "Europe/Oslo",
    "due_strict": false,
    "email_message": "<string>"
  },
  "payment": {
    "is_outgoing": false,
    "payment_type": "purchase",
    "amount": 123,
    "currency": "<string>",
    "net_amount": 123,
    "fee_amount": 123,
    "pending_amount": 123,
    "pending_unfreeze_on": 1619740800,
    "description": "<string>",
    "paid_on": 1619740800,
    "remote_paid_on": 1619740800
  },
  "issuer_details": {
    "website": "<string>",
    "legal_street_address": "<string>",
    "legal_country": "<string>",
    "legal_city": "<string>",
    "legal_zip_code": "<string>",
    "bank_accounts": [
      {
        "bank_account": "<string>",
        "bank_code": "<string>"
      }
    ],
    "legal_name": "<string>",
    "brand_name": "<string>",
    "registration_number": "<string>",
    "tax_number": "<string>"
  },
  "transaction_data": {
    "payment_method": "<string>",
    "extra": {},
    "country": "<string>",
    "attempts": [
      {
        "type": "execute",
        "successful": true,
        "payment_method": "<string>",
        "extra": {},
        "country": "<string>",
        "client_ip": "<string>",
        "processing_time": 1619740800,
        "error": {
          "code": "<string>",
          "message": "<string>"
        }
      }
    ]
  },
  "status": "created",
  "status_history": [
    {
      "status": "created",
      "timestamp": 1619740800,
      "related_object": {
        "type": "<string>",
        "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
      }
    }
  ],
  "viewed_on": 1619740800,
  "company_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "is_test": true,
  "user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "brand_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "billing_template_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "client_id": null,
  "send_receipt": false,
  "is_recurring_token": true,
  "recurring_token": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "skip_capture": false,
  "force_recurring": false,
  "reference_generated": "<string>",
  "reference": "<string>",
  "issued": "2020-04-30",
  "due": 1619740800,
  "refund_availability": "all",
  "refundable_amount": 123,
  "currency_conversion": {
    "original_currency": "<string>",
    "original_amount": 123,
    "exchange_rate": 123
  },
  "payment_method_whitelist": [
    "<string>"
  ],
  "success_redirect": "<string>",
  "failure_redirect": "<string>",
  "cancel_redirect": "<string>",
  "success_callback": "<string>",
  "creator_agent": "<string>",
  "platform": "web",
  "product": "purchases",
  "created_from_ip": "<string>",
  "invoice_url": "<string>",
  "checkout_url": "<string>",
  "direct_post_url": "<string>",
  "marked_as_paid": true,
  "order_id": "<string>"
}

To run payments in your application use POST /purchases/, request to register payments and receive the checkout link (checkout_url). After the payment is processed, gateway will redirect the client back to your website (take note of success_redirect, failure_redirect).

To set the price to the smallest unit possible, the value of the price field is expected to be specified in cents.
For example, price: 100 is equivalent to RM 1.00

You have three options to check payment status:

  1. use success_callback parameter of Purchase object.
  2. use GET /purchases/<purchase_id>/ request.
  3. set up a Webhook using the UI or Webhook API to listen to purchase.paid or purchase.payment_failure event on your server.

Using skip_capture flag allows you to separate the authentication and payment execution steps, allowing you to reserve funds on payer’s card account for some time. This flag can also enable preauthorization capability, allowing you to save the card without a financial transaction, if available.

In case making a purchase client agrees to store his card for the upcoming purchases, next time he will be able to pay in a single click.

Instead of a redirect you can also utilize Direct Post checkout: you can create an HTML <form> on your website with method="POST" and action pointing to direct_post_url of a created Purchase. You will also need to saturate form with <input>-s for card data fields. As a result, when a payer submits their card data, it will be posted straight to our system, allowing you to customize the checkout as you wish while your PCI DSS requirement is only raised to SAQ A-EP, as your system doesn’t receive or process card data. For more details, see the documentation on Purchase’s direct_post_url field.

To pay for test Purchases, use 4444 3333 2222 1111 as the card number, 123 as CVC, any date/month greater than now as expiry and any (Latin) cardholder name. Any other card number/CVC/expiry not greater or equal than the current month will all fail a test payment.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

Record of a single purchase operation, either a transaction originating from e-commerce integration or invoice sent. Has a status attribute, e.g. can be created, paid or refunded.

Response

201
application/json

OK

Record of a single purchase operation, either a transaction originating from e-commerce integration or invoice sent. Has a status attribute, e.g. can be created, paid or refunded.