Create a pickup

POST https://{POS_API}/api/v2/stations/{:external_id}/pickup { "payment_gateway": <payment_gateway>, "stripe_payment_intent_id": <stripe_payment_intent_id>, "paypal_order_id": <paypal_order_id>, "paypal_auth_id": <paypal_auth_id>, "auth0_id": <auth0_id>, }

Creates a pickup rental into the system and ejects a powerbank from a Chimpy Station.

Path parameters

  • external_id (string, required) The external identifier of the station. It usually consists of 4 lowercase alphanumeric characters (e.g. abc1)

Body parameters

  • payment_gateway (string, required) The Payment Gateway used. Accepted values: "stripe", "paypal"

  • stripe_payment_intent_id (string, required if the payment gateway is Stripe) The Payment Intent ID from Stripe. See Stripe Payment Intent API.

  • paypal_order_id (string, required if the payment gateway is Paypal) The Order ID from Paypal. Note: this order should be created with the intent to authorize (not capture). See Paypal Orders API.

  • paypal_auth_id (string, required if the payment gateway is Paypal) The Payment Authorization ID from Paypal. See Paypal Orders API.

  • auth0_id (string, optional) The Auth0 identifier of the user, if logged in. This identifier may affect the pricing, if the user has any coupons attached to his accounts.

Query parameters

  • lang (string, optional) 2-digit lowercase language code (ISO 639-1 Code). Supported values: Locales.

Response

Success

HTTP 200

{ "data": { "rental": { "status": "pickup_completed", "error_type": null, "error_message": "Everything worked as expected.", "rental_type": "pickup", "charge_currency": "CHF", "coupon_type": null, "payment_via": "app", "total_amounts": { "charge": 4.0, "deposit": 15.0, "detraction": 0.0, "detraction_net": 0.0, "cable_missing": 0.0, "late_fee": 0.0, "battery_damaged": 0.0, "refund": 0.0, "shop": 0.0, "user": 19.0, "app": 19.0, "shop_net": 0.0, "user_net": 18.71, "vat_types_user": { "A": 0.29, "B": 0.0 }, "vat_user": 0.29, "vat_shop": 0.0 }, "shop_provision": { "gross": 2.0, "net": 1.86 }, "sales_slip": { "complete_slip": [ " Chimpy AG ", " Baslerstrasse 106 ", " 8048 Zurich ", " CHE-281.804.523 MWST ", "------------------------------------------", " CHIMPY RENTAL ", "------------------------------------------", "Battery rental CHF 4.00 A", "Battery and cable deposit CHF 15.00 B", " ------------", "TOTAL USER ACCOUNT CHF 19.00 ", "Net amount CHF 18.71 ", "A=VAT 7.7% CHF 0.29 ", "B=VAT 0.0% CHF 0.00 ", " ", "TOTAL CASH CHF 0.00 ", " ", "* The amount has been debited via the ", " payment method you have registered. ", " Revenue on behalf of Chimpy AG. Deposit ", " is not subject to VAT. ", "------------------------------------------", "CONDITIONS OF RENT ", "* Deposit: refunded if the battery, ", " cable and tag are intact. ", "* Rental period: 1 week (up to Tue. ", " 26.1.21). ", "* Late penalty: CHF 2 per week of ", " additional delay, deducted from the ", " deposit (max 15). ", "* Return points: you will find all ", " Chimpy 2000 Points are to be found in ", " the app Chimpy ", "* General conditions on ", " heychimpy.com/terms ", " ", "SUPPORT (your code:4qju-7394) ", "* chimpy.ch/support ", "* Facebook Messenger: m.me/hellochimpy ", "* Tel: +41 44 500 29 95 ", " ", "RENTING INFO Battery (#99999991) ", "Out:Chimpy Station, 19.1 ", "In:- ", "------------------------------------------", " INSTALL THE APP! ", " heychimpy.com " ], "slip_width": null, "number_of_lines": 47 }, } }, "locale": "en-CH", }

Error

HTTP 400

On top of the errors listed in the Get Pricing endpoint, transactional errors are possible due to a payment failure, an eject failure or, in general, some logic or network error.

{ "error": { "type": "Stripe::InvalidRequestError", "message": "This PaymentIntent could not be captured because it has already been captured." }, "req": {}, "locale": "en-CH" }